Update Centrale Git Repository
Deze pagina gaat over hoe git loscweb Breda vanaf een centrale plaats te gebruiken.
Doel is ervaring met git op te bouwen.
Te lezen in combinatie met Site onderhoud
git
Git, git , is een source code management programma. Installeren zul je als root doen door bijvoorbeeld
apt-get install git-core
of eventueel
yum install git
gedaan hebben.
Verdere software
Om bij de centrale plaats te kunnen komen, is een ssh client nodig. In de regel zal die aanwezig zijn op een GNU of BSD computer.
Clone
Commando
git clone cp@november.losc.nl:~/Breda/loscweb loscweb_cp
Daarbij is cp een accountnaam, waarvan het wachtwoord cp was. Log in gebeurd sinds maart 2014 op basis van ssh-keys. Tot aan de dubbele punt, november.losc.nl, is de server waar het gebeurd. Het transport protocol is ssh. De SSH fingerprint van november is
5e:7d:a0:24:e4:fb:f8:4a:99:e2:ac:3b:16:43:41:32.
Na de dubbele punt, ~/Breda/loscweb, is waar de (centrale) repository staat. En loscweb_cp is de naam van directory waar jouw repository komt.
Voorbeeld:
stappers@weiss:/usr/src $ git clone cp@november.losc.nl:~/Breda/loscweb loscweb_cp Cloning into loscweb_cp... The authenticity of host 'november.losc.nl (77.72.145.149)' can't be established. RSA key fingerprint is 5e:7d:a0:24:e4:fb:f8:4a:99:e2:ac:3b:16:43:41:32. cp@november.losc.nl's password: remote: Counting objects: 1211, done. remote: Compressing objects: 100% (1000/1000), done. remote: Total 1211 (delta 779), reused 342 (delta 204) Receiving objects: 100% (1211/1211), 181.99 KiB, done. Resolving deltas: 100% (779/779), done. stappers@weiss:/usr/src $ cd loscweb_cp
Pull
M.b.v. van git pull haal je (alleen) wijzigingen op.
stappers@weiss:/usr/src/loscweb_cp $ git pull Password: remote: Counting objects: 7, done. remote: Compressing objects: 100% (4/4), done. remote: Total 4 (delta 3), reused 0 (delta 0) Unpacking objects: 100% (4/4), done. From cp@november.losc.nl:~/Breda/loscweb 3c65181..d446110 master -> origin/master Updating 3c65181..d446110 Fast forward src/updatecprepos.txt | 16 +++++++++++++++- 1 files changed, 15 insertions(+), 1 deletions(-) stappers@weiss:/usr/src/loscweb_cp $
edit, compile, check
Of en wat je wilt wijzigingen is een uitdaging die je zelf aan moet gaan. compile gaat m.b.v. make. Bij check gaat het om uit te vinden of de verandering ook echt de gewenste verbetering is.
Het zijn geen git handelingen.
Commit
Toevoegen aan je eigen repository gaat in twee stappen.
-
m.b.v. git add foo.txt zeg je dat bestand foo.txt toegevoegd moet worden.
-
m.b.v. git commit gaat het daadwerkelijk toegevoegd worden. Er wordt dan een editor opgestart. Het is de bedoeling dat je dan een goede beschrijving van je wijzigingen opgeeft.
Conventie is 1 enkele regel en (eventueele) verdere toelichting pas na 1 lege regel.
stappers@weiss:/usr/src/loscweb_cp $ git add src/updatecprepos.txt stappers@weiss:/usr/src/loscweb_cp $ git commit IN_EDITOR src/updatecprepos.txt: commit voorbeeld
Een git commit bestaat uit twee stukken. Een 'wat toevoegen' en 'beschrijving' UIT_EDITOR [master 5c4e782] src/updatecprepos.txt: commit voorbeeld 1 files changed, 35 insertions(+), 1 deletions(-) stappers@weiss:/usr/src/loscweb_cp $
Push
Opdringen van jouw commits naar een andere repository gaat m.b.v. git push. Het zeldzame van cp@november.losc.nl is, dat ie niet kieskeurig is. Ga a.u.b. wel respectvol om met die eigenschap. git push is een privilege!
Voorbeeld:
stappers@weiss:/usr/src/loscweb_cp $ git push Password: Counting objects: 18, done. Compressing objects: 100% (14/14), done. Writing objects: 100% (14/14), 1.85 KiB, done. Total 14 (delta 6), reused 0 (delta 0) To cp@november.losc.nl:~/Breda/loscweb 315508f..e9c5339 master -> master stappers@weiss:/usr/src/loscweb_cp $
failed to push some refs
Mocht de push niet lukken, dan is het de moeite waard om eerst een pull te doen.
stappers@viggo:/usr/src/loscweb_cp $ git push Password: To cp@november.losc.nl:~/Breda/loscweb ! [rejected] master -> master (non-fast forward) error: failed to push some refs to 'cp@november.losc.nl:~/Breda/loscweb' stappers@viggo:/usr/src/loscweb_cp $ git pull Password: remote: Counting objects: 7, done. remote: Compressing objects: 100% (4/4), done. remote: Total 4 (delta 3), reused 0 (delta 0) Unpacking objects: 100% (4/4), done. From cp@november.losc.nl:~/Breda/loscweb 4c90189..fd5aa51 master -> origin/master Merge made by recursive. scripts/novembercronjob | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) stappers@viggo:/usr/src/loscweb_cp $ git push Password: Counting objects: 10, done. Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 799 bytes, done. Total 6 (delta 4), reused 0 (delta 0) To cp@november.losc.nl:~/Breda/loscweb fd5aa51..cdb5e7f master -> master stappers@viggo:/usr/src/loscweb_cp $
Makkelijkere Update
Bovenstaan manier heeft als eigenschap dat bij pull een wachtwoord moet worden ingevoerd. Bij de manier van onderhoud is geen wachtwoord nodig bij een pull.
Het is mogelijk om het beste van beide werelden te hebben.
git push cp@november.losc.nl:~/Breda/loscweb
De truuk is in git source tree waar je geen wachtwoord nodig hebt, om daar aan het bestand .git/config deze regels toe te voegen:
[url "cp@november.losc.nl:~/Breda/loscweb"] pushInsteadOf = "http://losc.nl/Breda/loscweb/.git"
Bij een git pull is dan geen wachtwoord nodig. Het "lezen" gaat via http. Bij een git push gaan de wijziging via de weg waar wel het wachtwoord cp nodig is.
Hoe komen nu de wijzigingen op de website te staan. cp_proces.