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.