Mercurial jest fajny (a Git jest git:) ) - znalezienie większości funkcjonalności, nawet jeśli nie znamy odpowiedniej komendy, zajmuje chwilę i nie wymaga przekopywania się przez długaśny manual. Wystarczy wpisać "hg help" i dostaniemy naprawdę zwięzłe, pomocne i konkretne opisy dostępnych poleceń.

Zachciało mi się postawić repozytorium HG w domu, lokalnie. Zrobienie tego przez file share to pestka, więc postanowiłem spróbować z HTTP. Okazało się, że to (do czego mnie już Mercurial przyzwyczaił) banał:

hg serve

i już. Nie dość, że możemy się do tego podpiąć jakimś narzędziem (domyślny port to 8000), to jeszcze po wejściu przez przeglądarkę dostaniemy całkiem wypasione centrum informacji o repozytorium, włącznie z przeglądarką kodu, diffem a nawet graficznym przedstawieniem  gałęzi! Naprawdę cool.

Ale... to wszystko tylko do odczytu. Jak pisałem kiedyś niestety moje próby postawienia read/write repozytorium Gita na IIS zakończyły się sromotną porażką. Z HG przynajmniej nie muszę babrać się w zewnętrznym serwerze http, skoro mamy cwany wbudowany. Z tym że w dokumentacji napisane jest jasno:

"Mercurial has a built-in light-weight web server which can be used for browsing a repository with a web browser or for allowing remote machines to pull from you."

Ani słowa o wysyłaniu doń jakichkolwiek zmian...

Ale znalazł się sposób i na to! Nie jest to cecha mocno wyeksponowana (w właściwie można rzec - jest ukryta), jak wszystko inne w HG, ale są ku temu dobre powody. Wystawianie read/write repozytorium na takim mikroserwerku bez żadnych zabezpieczeń, szyfrowania, uwierzytelniania itd może skończyć się bardzo źle. Dlatego też należy to robić wyłącznie w określonych, ściśle kontrolowanych warunkach.

A że moje warunki są określone i ściśle kontrolowane to do pliku konfiguracyjnego ~/.hg/hgrc dodałem sekcję:

[web]
push_ssl = false
allow_push = *

i... to wszystko. W Mercurialu nawet jak coś jest ukryte, to i tak jest banalnie proste:).


Komentarze

dotnetomaniak.pl

19 kwietnia 2010 07:23

Maciej Aniserowicz | Dostęp read/write do repozytorium Mercurial po HTTP

Dziękujemy za publikację - Trackback z dotnetomaniak.pl

twk

20 kwietnia 2010 20:47

Chciałbym wdrożyć Mercuriala w firmie, ale właśnie brakuje mi czegoś na miarę VisualSVN żeby było prosto i szybko.

procent

20 kwietnia 2010 20:53

@twk:
Zobacz: stackoverflow.com/.../hosting-mecurial-hg-via-visualsvn-server . Nie próbowałem, ale jeśli faktycznie działa jak trzeba to całkiem nieźle:).

twk

21 kwietnia 2010 02:10

Sprawdziłem - działa pod https na apache który jest z visualsvn i jego zarządzaniem prawami :)
Dzięki za tego linka, było tam wszystko co trzeba (ważne również komentarze). Muszę teraz poczytać o migracji z svn.

Komentarze zamknięte