6/6/2017

git

Filed under: — cybrarian @ 2:04 pm

(Reeks Githandboek (nl)commando’s vbbranch, mergeGitLab vbSourceForge vbgit en gambas)

Git is het broncode-beheersysteem dat opgestart werd door Linus Torvalds, en nu door/voor honderdduizenden projecten gebruikt wordt. Het maakt samenwerken aan broncode en aftakken plus terug samenvoegen mogelijk. Het is een client-server systeem, waarbij het serverdeel ook gebruikt kan worden van een hoster die het als online dienst aanbiedt, zoals github, gitlab, sourceforge…

ClientSecureConceptTerminologieCommando’sVragenLinks – ..gebruik..
Images: “Pro Git book” by Scott Chacon en Ben Straub, Creative Commons SA licentie


Client
git is het commando op de commandolijn, dat je kan zoeken in je software repository voor installatie (in bv OpenSUSE zoek je in Yast naar “git”, dat zal de nodige software-onderdelen afhalen, een 15-tal; * zie dependencies hier ).
De server (deamon) moet je apart installeren, maar die heb je niet nodig als je een externe dienst gebruikt.

Secure
Voor de communicatie van git heb je een publiek/private sleutel nodig; als je die nog niet hebt, in de terminal:
ssh-keygen -t rsa -C "mijnemail@mijndomein.tld" -b 4096
Resultaat in ~/.ssh/id_rsa.pub
Als je een online dienst gebruikt als gitlab, krijg/maak je een combinatie e-mail (of username) en wachtwoord. Daarmee moet je in de online instellingen je public key invoeren.
Per e-mail krijg je een bevestiging (en ook zichtbaar in de online dienst).

Upd: gitlab raadt ed25519 aan ipv RSA; dus: ssh-keygen -t ed25519 -C "mijn laptop"
Daarna vanop de commandolijn: ssh -T git@gitlab.com

Welcome to GitLab, @cybrarian.copyleft!

Tenminste als je voordien
git config user.name "cybrarian.copyleft"
en
git config user.email cybrarian@somevaliddomain

Concept

  • git bewaart een soort “snapshot” van een projectdirectory, waarin het een file bewaart als die veranderd is, anders een ‘link’ naar de bestaande file (in vorige snapshot)
  • git werkt zo veel mogelijk lokaal. Je hebt zelf, lokaal, een “werkdirectory”, een “staging area” en een “repository” (git directory)
  • je haalt het/een project naar je werkdirectory met clone (of “checkout”)
  • lokaal is een gewijzigde file “changed”, “staged” of “comitted”
  • het gebruikt je username en e-mail adres naast de ssh keys
  • om te vermijden dat allerlei lokale tijdelijke bestanden (van bv tekstverwerker) in je repository terechtkomen, kan je een “.gitignore” bestand gebruiken (vb).

Terminologie:

“Untracked” files: bv maak test.txt = nieuw bestand vastgesteld. (niet “in” git)
“Tracked”: bestand wordt opgevolgd door git (“index”). Na bv git add test.txt – staat dan als “new file” in status.
“Unmodified” files: bestanden die in opvolging staan (1e added) maar niet veranderd zijn sindsdien (lokaal, door jezelf).
“Modified”: bestanden in opvolging (tracked) en waar je aan gewerkt hebt. Ze zijn nog niet “staged”, dat doe je met “git add”.
“Staged” : changes to be committed; bestand in opvolging dat veranderd is én klaar staat om met een commit opgenomen te worden in de repository.
“Staging” area: waar Git de wijzigingen volgt. Op te volgen bestanden moeten in de staging area terechtkomen met git add. Deze wordt later gesynchroniseerd naar je lokale repository, die later naar de online kan geduwd worden.
“Comitted”: bestanden die staged zijn finaal in je lokale repo* opnemen met commit en voorzien zijn van commit messages, een korte/lange beschrijvende tekst die later ook zichtbaar wordt voor deze commit.
*(er is nog niet gesynchroniseerd met de online repo)
Master: standaard aangemaakte ontwikkelingstak, stam van de ontwikkelingsboom. Meestal dus de branch waarvan andere afgeleid worden.
Branch: (zij)tak, afgesplitst van tak of master (deelontwikkelingen doen, onderscheid maken tussen development en release, ..). Voor git een (verzetbare) pointer (met label) naar een commit.
Head : een soort pointer die aangeeft welke snapshot van de branch lokaal aktief is (“checked out”).
Tag : referentie om bepaald punt in ontwikkeling te markeren
Node: iedere commit maakt een nieuwe node of knooppunt in de ontwikkelingsboom.
.
(https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)

(ingekort 29/9; Zie ook git commando’s, vb, problemen)

Dependencies
Wat er mee geïnstalleerd wordt met git client (opensuse 42.3):

In addition to your manual selections, the following │
││git▒▒ packages have been changed to resolve dependencies: │
││[x] I┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │
││ │ │Name │Summary │Avail. Vers.│Inst. Vers.│Size │ │
││ │ a+ │cvs │Concurrent Versions System │1.12.12 │ │ 902.3 KiB│ │ │
││ │ a+ │cvsps │A Program for Generating Patch Set Information from a CVS Repository│2.1 │ │ 120.6 KiB│ │ │
││ │ a+ │git-core │Core git tools │2.13.7 │ │ 21.1 MiB│ │ _nam│
││ │ a+ │git-cvs │Git tools for importing CVS repositories │2.13.7 │ │ 215.5 KiB│ │ ┬
││ │ a+ │git-email │Git tools for sending email │2.13.7 │ │ 57.8 KiB│ │ │
││ │ a+ │git-gui │Grapical tool for common git operations │2.13.7 │ │ 1.2 MiB│ │ ┴
││Searc│ a+ │git-svn │Git tools for importing Subversion repositories │2.13.7 │ │ 1.1 MiB│ │ │
││Conta│ a+ │git-web │Git Web Interface │2.13.7 │ │ 322.2 KiB│ │ │
││ │ a+ │gitk │Git revision tree visualiser │2.13.7 │ │ 735.5 KiB│ │ │
││ │ a+ │libserf-1-1 │High-Performance Asynchronous HTTP Client Library │1.3.9 │ │ 145.5 KiB│ │ │
││ │ a+ │libsvn_auth_kwallet-1-0 │KWallet support for Subversion │1.9.7 │ │ 18.6 KiB│ │ │
││ │ a+ │perl-Authen-SASL │SASL Authentication framework │2.16 │ │ 105.1 KiB│ │ │
││ │ a+ │perl-Error │Error/exception handling in an OO-ish way │0.17021 │ │ 49.8 KiB│ │ │
││ │ a+ │perl-Net-SMTP-SSL │SSL support for Net::SMTP │1.03 │ │ 4.7 KiB│ │ │
││ │ a+ │subversion │Subversion version control system │1.9.7 │ │ 10.1 MiB│ │ │
│└─────│ a+ │subversion-bash-completion│Bash Completion for subversion │1.9.7 │ │ 44.4 KiB│ │ │
└──────│ a+ │subversion-perl │Allows Perl scripts to directly use Subversion repositories │1.9.7 │ │ 4.5 MiB│

Statistics │
│ │
│ * Elapsed Time: 00:21 │
│ * Total Installed Size: 40.66 MiB │
│ * Total Downloaded Size: 9.52 MiB

Reacties zijn gesloten.

Powered by WordPress