Rozproszone systemy kontroli wersji - git vs mercurial

2007-07-05, hack

Od jakiegoś czasu obserwuję co się dzieje w dziedzinie rozproszonych systemów kontroli wersji. Swoje testy rozpocząłem od gita, głównie za sprawą filmu: Linus o Gicie.

Powiem tyle, moja intuicja nie jest zbieżna z tym narzędziem. Nie mogę się przemóc do dodawania zmodyfikowanych plików przed zatwierdzeniem zmian albo parametru -a. Na mój gust Git to typowy objaw projektu budowanego metodą bottom-up (metoda ogrodnicza, iteracyjnie dodajemy i strzyżemy kod). Ma interfejs składający się z ponad 150 różnych wysoko i nisko poziomowych funkcji, które na dodatek nie mają spójnego sposobu wywoływania. Metodę bottom-up jak najbardziej pochwalam. Wydaje mi się, że bez znajomości procesu rozwoju Linuxa przesłanki do poszczególnych funkcji pozostaną mi zupełnie nieznane i niezrozumiałe. Na dodatek dokumentacja jest słaba. IMHO trzeba poczekać, aż się trochę projekt ustabilizuje.

Teraz na warsztat wrzuciłem Mercurial. Wydaje się być projektem bardziej zorientowanym na zwykłego użytkownika. Zobaczymy co z tego będzie. Na szczęście moje repozytoria nie są duże ani istotne.

Na początek instrukcja migracji z repozytorium Gita na Hg, oraz publikacji na webie. Instrukcja dotyczy wersji 0.9.3. (jest w pakietach Debiana i Ubuntu)

  1. Czytamy instrukcję: Repository conversion
  2. Przygotowujemy narzędzie do konwersji :

    dpkg -L  mercurial | grep convert
    cp /usr/share/doc/mercurial/examples/convert-repo.gz .
    gzip -d convert-repo.gz
    chmod +x convert-repo.gz
    
  3. Przygotowujemy repozytorium docelowe:

    mkdir clget-hg
    cd clget-hg/
    hg init
    cd ..
    
  4. Wykonujemy konwersję:

    ./convert-repo clget-git clget-hg clget-map
    hg clone clget-hg clget
    rm -fr clget-hg
    
  5. Kopiujemy repozytorium na serwer:

    scp -r clget mojlogin@mojserver:/srv/repositories/
    
  6. Zapoznajemy się z instrukcją: Publishing repositories
  7. Logujemy się na serwer i przygotowujemy skrypt CGI serwujący repozytoria:

    ssh mojlogin@mojserver
    cd /var/www/moja.domena.com/repo/hg/
    dpkg -L mercurial  | grep hgwebdir.cgi
    cp /usr/share/doc/mercurial/examples/hgwebdir.cgi index.cgi
    
  8. Na koniec dodajemy regułę przepisywania URLi (tu dla lighttpd):

     url.rewrite = (
     "^/repo/hg(.*)$" => "/repo/hg/index.cgi$1",
    )
    

A moje repozytoria są tu: nablaone.net/repo/hg/.

1 Komentarz

  1. Słyszałem że jest nakładka WWW - HgW :)

    Comment od 40i4 — 2007-07-06 @ 8:41

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