Pomoc - Multiuser Mercurial
Przez WWW
Zakładam, że masz już na serwerze utworzone repozytorium. Jeżeli chcesz aby inni użytkownicy mogli z niego korzystać, najprościej będzie udostępnić je przez WWW. Służą do tego skrypty hgweb.cgi i hgwebdir.cgi dostarczane ze źródłami Mercuriala. W zależności od tego czy chcesz opublikować pojedyńcze czy wiele repozytoriów, skopiuj odpowiedni plik do katalogu na swoje konto. Katalog może być dowolny np. $HOME/cgi. Wedytuj skrypt i w linijce
return hgweb("/path/to/repo", "repository name")wpisz ścieżkę do swojego repozytorium. Następnie w panelu administracyjnym dodaj nową aplikację CGI jako ścieżkę podając katalog do którego wrzuciłeś skrypt hgweb.cgi lub hgwebdir.cgi. W moim przykładzie będzie to cgi (bez katalogu domowego). Do aplikacji dodaj domenę i ... to tyle. Twoje repozytorium jest już dostępne pod adresem http://domena/hgweb.cgi. Gdy zmienisz nazwę skryptu na index.cgi, w ogóle nie będziesz musiał podawać go w URLu.
Jeżeli chcesz dać niektórym użytkownikom możliwość wprowadzania zmian, w katalogu .hg w repozytorium utwórz plik hgrc i wpisz do niego
[web]
allow_push = user1, user2W panelu administracyjnym dodaj takie konta w zakładce "Użytkownicy HTTP", a w menu "Lokalizacje chronione" zabezpiecz stronę hasłem.
Nieco więcej informacji na ten temat znajdziesz w dokumentacji.
Przez SSH (zalecane)
Skopiuj ze strony http://www.selenic.com/mercurial/wiki/index.cgi/SharedSSH na swoje konto do wybranego katalogu skrypt hg-login, pod zmienną $repositories podstaw ścieżkę do katalogu z repozytoriami, nadaj plikowi prawo wykonywalności dla właściciela.
Wygeneruj klucze SSH tak, jak to opisaliśmy przy okazji konfiguracji SVNa. Klucze publiczne umieść w pliku .ssh/authorized_keys na koncie u nas. Wpis w tym pliku w przypadku Mercuriala powinien wyglądać następująco:
command="/home/<TwójLogin>/www/<jakiś katalog>/hg-login nazwa_użytkownika",no-pty TYP KLUCZA KLUCZW katalogu z repozytoriami dla każdego repo utwórz plik <repo>.allow i wpisz do niego nazwy użytkowników, którzy mają mieć do tego repozytorium dostęp.
Po stronie klienta odwołanie do repozytorium będzie wyglądało mniej wiecej tak:
hg clone ssh://TwójLogin@TwójLogin.megiteam.pl/<repozytorium>