2011-02-10 13 views
85

Pracuję z repozytoriów Git w następujący sposób:Jak mogę dodać zdalne repozytoria w serwisie Mercurial?

  • Mam repozytorium głównego i kilku pilotów na różnych maszynach produkcyjnych.
  • Przesyłam kod produkcyjny do pilotów i ponownie uruchamiam usługi, aby zmiany zaczęły obowiązywać.

Mam zamiar przejść z Git na Mercurial i chciałbym wiedzieć z wyprzedzeniem, jak mogę osiągnąć coś takiego.

Odpowiedz

116

Dodajesz wpisy do sekcji [paths] pliku lokalnego klona o numerze .hg/hgrc. Oto przykład z odcinka, który pójdzie w pliku .hg/hgrc:

[paths] 
remote1 = http://path/to/remote1 
remote2 = http://path/to/remote2 

Następnie można użyć polecenia jak hg push remote1 wysłać Zestawienia zmian do tego repo. Jeśli chcesz, aby zdalne repozytorium aktualizacji było działającym katalogiem, musisz umieścić hak changegroup w miejscu zdalnym, które aktualizuje. Że będzie wyglądać następująco:

[hooks] 
changegroup = hg update 2>&1 > /dev/null && path/to/script/restart-server.sh 

Nie każdy jest fanem konieczności zdalnego repo automatycznie aktualizować swoje katalogi pracujących nad naciśnięciem, a to z pewnością nie jest to ustawienie domyślne.

+21

Dla każdego, kto chce zobaczyć piloty, użyj 'ścieżek hg', które są równoważne' git remote -v'. – Keyo

+2

default-push (zamiast na przykład remote1) umożliwia wpisanie "hg push". -przemyslowe repozytorium jest wtedy uzywane Bardzo pomocne – Christian

+3

@domyślny 'default-push' jest konieczny/uyteczny tylko wtedy, gdy twój zwykły cel wypychania różni się od twojego zwykłego źródła przyciągania .Jeśli są one takie same (lub nigdy nie ciągniesz), to' default 'wystarczy –

5

Można spojrzeć na hg-git GitHub plugin:

hg-git general idea

dodając zdolność do pchania i ciągnięcia z repozytorium Git z serwera Mercurial.
Oznacza to, że możesz współpracować z projektami opartymi na Git z Mercurial lub użyć serwera Git jako punktu współpracy dla zespołu z deweloperami używającymi zarówno Git, jak i Mercurial.

Uwaga: Nie testowałem tego narzędzia z najnowszymi wersjami Mercurial.

+1

Mam możliwość przeniesienia wszystkiego na działanie rtęci, chciałbym użyć tylko jednego narzędzia do zarządzania źródłami. Konwertuj, gdy repozytorium zbuduje odpowiednie struktury, a następnie tylko polecenia mercurial do produkcji.Mam świadomość, że zarówno git, jak i mercurial mogą współpracować, ale nigdy tego nie próbowali. – topless

+2

^Chris: twoje pytanie: jak mogę przekonwertować repliki Git na Mercurial? "Lub" jak zadeklarować/ustawić zdalne repozytorium HGA? "(Jak na http://superuser.com/questions/43686/setting- do zdalnego-mercurial-repozytorium) lub "gdzie zdalny jest zadeklarowany w Hg?" (http://crazythinking.wordpress.com/2009/03/07/starting-a-mercurial-hg-remote-repository /) – VonC

0

Jeśli jesteś na systemie Unix i masz zainstalowany Git, można użyć tej funkcji bash, aby łatwo dodać ścieżkę do pilotów bez edytora tekstowego:

add-hg-path() { 
    git config -f $(hg root)/.hg/hgrc --add paths.$1 $2 
    awk '{$1=$1}1' $(hg root)/.hg/hgrc > /tmp/hgrc.tmp 
    mv /tmp/hgrc.tmp $(hg root)/.hg/hgrc 
} 

wtedy uruchamiamy go:

$ add-hg-path remote1 https://path.to/remote1 

Jeśli ktoś chciałby zbudować ekwiwalent Powershell, chciałbym to również uwzględnić. Inne ulepszenia potencjału obejmują sprawdzanie błędów w parametrach i faktoringowanie połączenia pod numerem $(hg root).

2

Jeśli chcesz dodać domyślną ścieżkę, musisz pracować z default w swoim pliku ~project/.hg/hgrc. Jako następujące:

[paths] 
default = https://path/to/your/repo 

Powodzenia.

Powiązane problemy