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