Jak mogę dodać zdalne repozytoria w Mercurial?


99

Pracuję z repozytoriami Git w następujący sposób:

  • Mam główne repozytorium i kilka pilotów na różnych maszynach produkcyjnych.
  • Wysyłam kod produkcyjny do pilotów i ponownie uruchamiam usługi, aby zmiany odniosły skutek.

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

Odpowiedzi:


130

Dodajesz wpisy do [paths]sekcji .hg/hgrcpliku lokalnego klona . Oto przykład sekcji, która zostanie umieszczona w .hg/hgrcpliku:

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

Następnie możesz użyć poleceń, takich jak hg push remote1wysyłanie zestawów zmian do tego repozytorium. Jeśli chcesz, aby zdalne repozytorium zaktualizowało się w katalogu roboczym, musisz umieścić changegrouphak w tej zdalnej lokalizacji, która dokonuje aktualizacji. To wyglądałoby mniej więcej tak:

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

Nie każdy jest wielkim fanem tego, że zdalne repozytoria automatycznie aktualizują swoje katalogi robocze w trybie push, a na pewno nie jest to ustawienie domyślne.


23
Dla każdego, kto chce tylko zobaczyć użycie pilotów, hg pathsktóre jest równoważne git remote -v.
Keyo

5
default-push (zamiast na przykład remote1) umożliwia po prostu wpisanie „hg push”. Następnie używane jest repozytorium default-push. Bardzo pomocne.
Christian

6
@Christian default-pushjest potrzebny / przydatny tylko wtedy, gdy Twój zwykły cel wypychania różni się od zwykłego źródła ściągania. Jeśli są takie same (lub nigdy nie ciągniesz), defaultwystarczy.
Ry4an Brase

2
Żeby dodać jeszcze więcej na ten temat: jeśli masz oba pliki default-pushi defaultw swoim pliku konfiguracyjnym, to pierwsza będzie używana do wypychania, a druga do ściągania. Jeśli chcesz wypychać i wyciągać z tego samego zdalnego repozytorium (co prawdopodobnie robisz, jeśli używasz Mercurial w sposób podobny do scentralizowanego), umieść tylko defaultplik. Byłoby fajnie, gdyby dodali małą opcję wiersza poleceń, aby zrobić to za pierwszym naciśnięciem ... (a może jestem za bardzo osobą CVS ;-))
tiktak

Mam Mercurial v2.6.2 zainstalowany na moim Macu, a plik do ustawiania ścieżek znajduje się w .hg/hgrc(brak DOT przed nazwą pliku).
Regis Zaleman,

9

jeśli chcesz dodać domyślną ścieżkę, musisz popracować defaultw swoim ~project/.hg/hgrcpliku. Następująco:

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

Powodzenia.


5

Możesz rzucić okiem na wtyczkę hg-git GitHub :

Ogólna idea hg-git

dodanie możliwości wypychania i pobierania z repozytorium serwera Git z Mercurial.
Oznacza to, że możesz współpracować przy projektach opartych na Git od Mercurial lub używać serwera Git jako punktu współpracy dla zespołu z programistami korzystającymi zarówno z Git, jak i Mercurial.

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


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

2
^ Chris: tak jest Twoje pytanie: jak przekonwertować repozytoria Git na repozytoria Mercurial? ”Lub„ jak zadeklarować / skonfigurować zdalne repozytorium Hg? ”(Jak w superuser.com/questions/43686/… ) lub„ gdzie pilot jest zadeklarowany w Hg? ”( crazythinking.wordpress.com/2009/03/07/… )
VonC

0

Jeśli korzystasz z systemu Unix i masz zainstalowany Git, możesz użyć tej funkcji bash, aby łatwo dodać ścieżkę do pilotów bez edytora tekstu:

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
}

Następnie wywołaj go za pomocą:

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

Jeśli ktoś chciałby zbudować odpowiednik Powershell, chciałbym to również dołączyć. Inne potencjalne ulepszenia obejmują sprawdzanie błędów parametrów i uwzględnianie wywołań $(hg root).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.