Publikacja repozytorium gita
Pojawił się nowy film z gatunku geek-pr0n Git by Randal Schwartz. Polecam obejrzeć, szczególnie tym co widzieli film z Linusem w roli głównej.
Kolega zarzucił mi, że na blogasku daję tylko linki do linków. Że nie przedstawiam swoich wynaturzeń. Hmmm ma rację. Zatem napiszę coś.
Jakiś czas temu stworzyłem 2 skrypty greasemonkey. Mam w planach jeszcze przynajmiej jeden. Mówię tu o skryptach robionych w domu, bo tych pracowych mam więcej :-). Skrypty te postanowiłem upublicznić, tak aby ktoś mógł sobie je, zainstalować bezpośrednio ze strony, obejrzeć historię lub pobrać wszystkie (jako repozytorium gita). Jako, że jestem leniwy to celem stało się takie skonfigurowanie maszynerii, abym nic nie musiał robić dodatkowo oprócz sekwencji komend git add/commit/push.
Oto krótka instrukcja publikacji repozytorium, inna niż ta z podręcznika do gita. Tam upubliczniane jest gołe repozytorium, a tu repozytorium i jego bieżąca kopia robocza.
-
Inicjujemy repozytorium gita i dodajemy wszystkie pliki
cd ~/private/greasemonkey git init git add . git commit -m "Początek historii"
-
Kopiujemy projekt na serwer zdalny:
cd .. scp -r greasemonkey server:/www/nablaone.net/
-
Dodajemy w lokalnej konfiguracji połączenie ze zdalnym repozytorium, dzięki temu później nie będzie trzeba podawać URL’a przy każdej operacji push/pull. Otwieramy plik
foo/.git/configdodajemy sekcje:[remote "origin"] url = ssh://server/www/nablaone.net/greasemonkey/.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master
-
Logujemy się na serwer i przygotowujemy repozytorium do pobierania go przy pomocy zwykłego HTTP. Dodatkowo dodajemy aktualizowanie kopii roboczej przy każdej operacji przesłania zmian.
ssh server cd /www/nablaone.net/greasemonkey/ git-update-server-info chmod +x .git/hooks/post-update chmod +x .git/hooks/post-receive
i modyfikujemy plik .git/hooks/post-receive
#!/bin/sh unset GIT_DIR cd .. # resetujemy na twardo, ignorując lokalne zmiany # których to być nie powinno git reset --hard
-
Teraz możemy przetestować klonowanie zdalnego repozytorium:
cd /tmp git clone http://nablaone.net/greasemonkey/.git
- oraz wysyłanie zmian (push)
cd ~/private/greasemonkey/ echo "test" > nowy-plik.txt git add nowy-plik.txt git commit -m "Nowy plik" git push
- Po czym możemy zobaczyć jak pobiera się zmiany
cd /tmp/greasemonkey git pull
Mamy repozytorium opublikowane, teraz możemy przystąpić do instalacji gitweb’a. Interfejsu WWW do przeglądania repozytorium.
-
Logujemy się na zdalny serwer:
ssh server
- instalujemy gitweba z paczki
sudo apt-get install gitweb
-
Tworzymy podkatalog
gitwebw katalogu naszego serwisucd /www/nablaone.net/ mkdir gitweb
-
Patrzymy co wchodzi w skład gitweb’
dpkg -L gitweb
i kopiujemy potrzebne elementy do naszego katalogu
cp /etc/gitweb.conf gitweb/ cp /var/www/git* gitweb/ cp /usr/lib/cgi-bin/gitweb.cgi gitweb/index.cgi cd gitweb
dzięki czemu uniezależniamy się od globalnej konfiguracji
- zmieniamy zawartość pliku gitweb.conf tak, aby wskazywał na
dobre ścieżki, do repozytoriów jak i do obrazków:... $projectroot = "."; $stylesheet = "/gitweb/gitweb.css"; $logo = "/gitweb/git-logo.png"; $favicon = "/gitweb/git-favicon.png"; ...
- modyfikujemy
index.cgi, tak aby wczytywał lokalny plik
konfiguracyjny zamiast globalnego/etc/gitweb.conf -
Kierujemy naszą przeglądarkę na adres
http://nablaone.net/gitweb
i cieszymy się pustą stroną
-
Umożliwiamy przeglądanie dopiero co opublikowanego repozytorium
cd /www/nablaone.net/gitweb/ ln -s ../greasemonkey/.git greasemonkey.git
- Gotowe
Aha. Jakby komuś nie chciało się czytać: skrypty greasemonkey, mój gitweb.