Dostęp read/write do repozytorium Mercurial po HTTP

8

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:).

Share.

About Author

Programista, trener, prelegent, pasjonat, blogger. Autor podcasta programistycznego: DevTalk.pl. Jeden z liderów Białostockiej Grupy .NET i współorganizator konferencji Programistok. Od 2008 Microsoft MVP w kategorii .NET. Więcej informacji znajdziesz na stronie O autorze. Napisz do mnie ze strony Kontakt. Dodatkowo: Twitter, Facebook, YouTube.

8 Comments

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

  2. 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.