Hi,
ich habe bisher meine Projektsourcen per SVN verwaltet, steige aber inzwischen ganz gemütlich und vorsichtig auf git um. Da ich nach wie vor keine Lust habe meine Sourcen anderen Hostern anzuvertrauen will ich natürlich den git server selbst betreiben.
Welche Erfahrungen gibt es damit einfach nur git oder einen der zahlreichen Dienste (gitosis, gerrit, etc.) zu benutzen? Welche Setups sind empfehlenswert für welche Situation?
Konrad
Hi,
git kennt keinen Server in dem Sinne. Du kannst ein "bare" Repo auf einem Rechner anlegen den du zentral nutzen möchtest, das hat sich bei mir bewährt. Tutorials wie dieses zeigen wie das funktioniert:
http://alexsotob.blogspot.com/2011/05/this-is-flash-of-pure-inspiration-mes-...
Sollte es dann beim pushen zu einer Fehlermeldung "No refs ..." kommen, ist das hier hilfreich:
http://www.andyjarrett.co.uk/blog/index.cfm/2010/10/10/No-refs-in-common-and...
Für den kleinen privaten Setup ist das recht ausreichend. Wer mehr will, wie Verbindung mit Ticket Systemen, grafische Auswertungen usw, muss schon einiges mehr machen. Da habe ich mich für den Eigenbedarf noch nicht ran getraut.
cu Roman
Hallo Konrad,
On Tue, Nov 15, 2011 at 14:14:00 +0100, Konrad Rosenbaum wrote:
ich habe bisher meine Projektsourcen per SVN verwaltet, steige aber inzwischen ganz gemütlich und vorsichtig auf git um. Da ich nach wie vor keine Lust habe meine Sourcen anderen Hostern anzuvertrauen will ich natürlich den git server selbst betreiben.
Prinzipiell hast Du schon einen git-Server, wenn Du auf einem per ssh erreichbaren Rechner git installierst und fuer den Zugriff nicht mehrere User unterscheiden musst.
Roman hatte ja schon erwaehnt, dass man serverseitig am besten mit "bare" Repos arbeitet, also git-Repos die nur aus den Dateien bestehen, die normalerweise im ".git"-Verzeichnis liegen. Ein solches Repo benutzt man nur als remote, um von dort zu fetchen bzw. dorthin zu pushen. Das geht bequem ueber ssh.
Ich spiele es mal exemplarisch mit einem dedizierten git-User auf dem Server durch:
gituser@server:~$ mkdir -p repo/lug-dd
gituser@server:~$ cd $_
gituser@server:~/repo/lug-dd$ git init --bare
[Ab jetzt remote ueber ssh]
ich@devbox:~$ git clone git+ssh://gituser@server/home/gituser/repo/lug-dd [Leeres Repo gecloned, bis jetzt existiert noch nicht mal der master-Branch. Die clone-URL ist als remote namens "origin" eingetragen.]
ich@devbox:~/lug-dd$ vim lugmeetings.sh ich@devbox:~/lug-dd$ git add lugmeetings.sh ich@devbox:~/lug-dd$ git commit -m "tolles shellskript" [Erster Commit, ab jetzt gibts den master-Branch zumindest lokal.]
ich@devbox:~/lug-dd$ git push origin master [Den master-Branch auf das remote "origin" pushen.]
Fuer das Folgende werden mich die git-Profis wahrscheinlich verkloppen. Um den remote liegenden master-Branch zum tracking-Branch zu machen, loesche ich das lokale Repo und clone es erneut: (wie geht das eleganter?)
ich@devbox:~$ rm -rf lug-dd ich@devbox:~$ git clone git+ssh://gituser@server/home/gituser/repo/lug-dd
Ab jetzt kann das Repo normal benutzt werden und git verfolgt Aenderungen des remote Branches.
Gruss, Chris
Am 15. November 2011 23:25 schrieb Christian Perle chris@linuxinfotag.de:
Um den remote liegenden master-Branch zum tracking-Branch zu machen, loesche ich das lokale Repo und clone es erneut: (wie geht das eleganter?)
Nach dem "git push origin master" ist der origin/master bereits der remote tracking branch, denn vorher gab es ja gar keinen master auf dem remote. Du siehst lokal vielleicht nicht origin/HEAD, aber das spielt auch keine Rolle.
Viele Grüße Eric
2011/11/15 Christian Perle chris@linuxinfotag.de:
Fuer das Folgende werden mich die git-Profis wahrscheinlich verkloppen. Um den remote liegenden master-Branch zum tracking-Branch zu machen, loesche ich das lokale Repo und clone es erneut: (wie geht das eleganter?)
ich@devbox:~$ rm -rf lug-dd ich@devbox:~$ git clone git+ssh://gituser@server/home/gituser/repo/lug-dd
Eleganter wie folgt:
ich@devbox:~/lug-dd$ git remote add origin git+ssh://... ich@devbox:~/lug-dd$ git config branch.master.remote origin ich@devbox:~/lug-dd$ git config branch.master.merge refs/heads/master
Gruß Stefan
2011/11/15 Konrad Rosenbaum konrad@silmor.de:
Welche Erfahrungen gibt es damit einfach nur git oder einen der zahlreichen Dienste (gitosis, gerrit, etc.) zu benutzen? Welche Setups sind empfehlenswert für welche Situation?
Ich betreibe für eigene Zwecke zwei Gitolite-Installationen. Für mich die beste Lösung, läuft absolut problemfrei und integriert sich wunderbar mit git-daemon (für anonymen Zugriff über git://-Protokoll) und gitweb (Repository-Browser). In Debian Squeeze und allen anderen aktuellen Distributionen verfügbar.
Having said that: Wenn du nur alleine auf das git-Repo zugreifst, pack es einfach auf eine über SSH erreichbare Maschine, auf der git-core installiert ist. Mehr brauchst du nicht. gitolite gibt dir zusätzlich zu diesem Setup im Wesentlichen Multi-User-Zugriff mit feinkörniger Access Control.
Gruß Stefan
lug-dd@mailman.schlittermann.de