Wie kann ich Remote-Repositorys in Mercurial hinzufügen?

99

Ich arbeite auf folgende Weise mit Git-Repositorys:

  • Ich habe das Master-Repository und mehrere Fernbedienungen auf den verschiedenen Produktionsmaschinen.
  • Ich schiebe den Produktionscode auf die Fernbedienungen und starte die Dienste neu, damit die Änderungen wirksam werden.

Ich bin im Begriff, von Git zu Mercurial zu wechseln, und ich möchte im Voraus wissen, wie ich so etwas erreichen kann.

oben ohne
quelle

Antworten:

130

Sie fügen dem [paths]Abschnitt der .hg/hgrcDatei Ihres lokalen Klons Einträge hinzu . Hier ist ein Beispiel für einen Abschnitt, der in die .hg/hgrcDatei aufgenommen wird:

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

Sie können dann Befehle verwenden hg push remote1, um Änderungssätze an dieses Repo zu senden. Wenn Sie möchten, dass das Remote-Repo ein Arbeitsverzeichnis aktualisiert, müssen Sie changegroupan dem Remote-Speicherort, an dem ein Update durchgeführt wird , einen Haken anbringen. Das würde ungefähr so ​​aussehen:

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

Nicht jeder ist ein großer Fan davon, dass Remote-Repos ihre Arbeitsverzeichnisse automatisch per Push aktualisieren, und dies ist sicherlich nicht die Standardeinstellung.

Ry4an Brase
quelle
23
Für alle, die nur die Fernbedienungen sehen möchten, die hg pathsfür gleichwertig sind git remote -v.
Keyo
5
Mit default-push (anstelle von beispielsweise remote1) kann man einfach "hg push" eingeben. Das Standard-Push-Repository wird dann verwendet. Sehr hilfreich.
Christian
6
@Christian default-pushist nur dann notwendig / nützlich, wenn sich Ihr übliches Push-Ziel von Ihrer üblichen Pull-Quelle unterscheidet. Wenn sie gleich sind (oder Sie nie ziehen), defaultreicht dies aus.
Ry4an Brase
2
Um noch mehr hinzuzufügen: Wenn Sie beide default-pushund defaultIhre Konfigurationsdatei haben, wird die erste zum Drücken und die zweite zum Ziehen verwendet. Wenn Sie von demselben Remote-Repo aus pushen und ziehen möchten (was Sie wahrscheinlich tun, wenn Sie Mercurial zentral verwenden), geben Sie es nur defaultin die Datei ein. Es wäre so cool, wenn sie eine kleine Kommandozeilenoption hinzufügen würden, um dies einfach beim ersten
Drücken
Ich habe Mercurial v2.6.2 auf meinem Mac installiert und die Datei zum Festlegen der Pfade befindet sich in .hg/hgrc(kein DOT vor dem Dateinamen).
Regis Zaleman
9

Wenn Sie einen Standardpfad hinzufügen möchten, müssen Sie defaultin Ihrer ~project/.hg/hgrcDatei damit arbeiten. Wie folgt:

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

Viel Glück.

Akash
quelle
5

Sie könnten einen Blick auf das GitHub-Plugin von hg-git werfen :

hg-git allgemeine idee

Hinzufügen der Möglichkeit zum Push-and-Pull von einem Git-Server-Repository von Mercurial.
Dies bedeutet, dass Sie an Git-basierten Projekten von Mercurial zusammenarbeiten oder einen Git-Server als Kollaborationspunkt für ein Team mit Entwicklern verwenden können, die sowohl Git als auch Mercurial verwenden.

Hinweis: Ich habe dieses Tool nicht mit den neuesten Versionen von Mercurial getestet.

VonC
quelle
1
Ich habe die Möglichkeit, alles auf mercurial zu portieren. Ich möchte nur ein Tool für meine Quellcodeverwaltung verwenden. Konvertieren Sie, sobald das Repository die entsprechenden Strukturen erstellt hat und dann nur noch Quecksilberbefehle für die Produktion. Ich bin mir irgendwie bewusst, dass sowohl Git als auch Mercurial zusammenarbeiten können, habe es aber nie versucht.
oben ohne
2
^ Chris: Also ist deine Frage: Wie konvertiere ich Git-Repos in Mercurial-Repos? "Oder" Wie deklariere / richte ich Remote-Hg-Repo ein? "(Wie in superuser.com/questions/43686/… ) oder" Wo a Remote wird in Hg deklariert? "( crazythinking.wordpress.com/2009/03/07/… )
VonC
0

Wenn Sie unter Unix arbeiten und Git installiert haben, können Sie mit dieser Bash-Funktion ohne Texteditor problemlos einen Pfad zu den Fernbedienungen hinzufügen:

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
}

Rufen Sie es dann auf mit:

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

Wenn jemand ein Powershell-Äquivalent bauen möchte, möchte ich das auch einbeziehen. Weitere mögliche Verbesserungen sind die Fehlerprüfung der Parameter und das Ausklammern des Aufrufs an $(hg root).

Jason R. Coombs
quelle