Rozproszone systemy kontroli wersji - git vs mercurial
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)
- Czytamy instrukcję: Repository conversion
-
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
-
Przygotowujemy repozytorium docelowe:
mkdir clget-hg cd clget-hg/ hg init cd ..
-
Wykonujemy konwersję:
./convert-repo clget-git clget-hg clget-map hg clone clget-hg clget rm -fr clget-hg
-
Kopiujemy repozytorium na serwer:
scp -r clget mojlogin@mojserver:/srv/repositories/
- Zapoznajemy się z instrukcją: Publishing repositories
-
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
-
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/.
Słyszałem że jest nakładka WWW - HgW