Publikacja repozytorium gita

2007-10-28, hack

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.

  1. Inicjujemy repozytorium gita i dodajemy wszystkie pliki

    cd ~/private/greasemonkey
    git init
    git add .
    git commit -m "Początek historii"
    
  2. Kopiujemy projekt na serwer zdalny:

    cd ..
    scp -r greasemonkey server:/www/nablaone.net/
    
  3. 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/config dodajemy 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
    
  4. 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
    
  5. Teraz możemy przetestować klonowanie zdalnego repozytorium:

    cd /tmp
    git clone http://nablaone.net/greasemonkey/.git
    
  6. 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
    
  7. 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.

  1. Logujemy się na zdalny serwer:

    ssh server
    
  2. instalujemy gitweba z paczki
    sudo apt-get install gitweb
    
  3. Tworzymy podkatalog gitweb w katalogu naszego serwisu

    cd /www/nablaone.net/
    mkdir gitweb
    
  4. 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

  5. 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";
    ...
    
  6. modyfikujemy index.cgi, tak aby wczytywał lokalny plik
    konfiguracyjny zamiast globalnego /etc/gitweb.conf
  7. Kierujemy naszą przeglądarkę na adres http://nablaone.net/gitweb
    i cieszymy się pustą stroną :-)
  8. Umożliwiamy przeglądanie dopiero co opublikowanego repozytorium

    cd /www/nablaone.net/gitweb/
    ln -s ../greasemonkey/.git greasemonkey.git
    
  9. Gotowe

Aha. Jakby komuś nie chciało się czytać: skrypty greasemonkey, mój gitweb.

0 Comments

Jeszcze nikt tego nie skomentował.

Kanał RSS dla tego wpisu.

Niestety, skomentowanie tego wpisu jest niemożliwe.

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
(c) 2009 nablaone.net | powered by WordPress with Barecity