wie man einen automatischen git mirror für hg repo macht

1868
Powerman

Ich habe ein Vim-Plugin-Projekt bei GoogleCode mit Mercurial, aber die Benutzer möchten es auf github haben, um es als git subrepo zu verwenden (um ihre ~ / .vim / auf github mit allen Plugins zu behalten).

Persönlich bevorzuge ich googlecode und hg gegenüber github und git, daher ziehe ich mein Projekt nicht gerne auf github und setze lieber eine Art automatischer Git-Spiegel für mein hg-Repo ein. Ich habe diese gelesen: Hg-Git mercurial plugin, Synchronisieren eines Git-Spiegels mit hg-git und Create a Git Mirror und mit einigen zusätzlichen Kopfschmerzen sieht das aus, wenn zwei Befehle anstelle von einem verwendet werden:

hg push hg push githubmirror 

Aber die Sache ist, wissen Sie, die meisten von uns werden vergessen, ab und zu den zweiten hg pushPlatz zu erreichen. Kann man das also irgendwie automatisieren (über Haken etc.)?

Eine andere Frage - gibt es eine bessere Möglichkeit, solche Spiegel herzustellen? Vielleicht bietet GoogleCode bereits Zugriff auf ihre hg-Repos? Oder ist es möglich, git clone für hg repo zu erstellen und diesen automatisch mit dem ursprünglichen hg repo von Drittanbietern zu synchronisieren, ohne den Besitzer des hg repo zu benachrichtigen?

2
ein Skript mit beiden erstellen, speichern und ausführen, wenn Sie synchronisieren möchten? Journeyman Geek vor 12 Jahren 0
Ich habe viele Repos, und für einige muss ich ein benutzerdefiniertes Skript ausführen, es sei denn, es ist besser, den zweiten "hg push" auszuführen: Es ändert meinen Workflow und führt zu Fehlern. Powerman vor 12 Jahren 0

1 Antwort auf die Frage

1
Karolos

Sie könnten so etwas wie einen Hook nach dem Commit machen. Schauen Sie sich http://www.selenic.com/mercurial/hgrc.5.html an

Haken

Befehle oder Python-Funktionen, die automatisch durch verschiedene Aktionen ausgeführt werden, z. B. Starten oder Beenden eines Commits. Mehrere Hooks können für dieselbe Aktion ausgeführt werden, indem ein Suffix an die Aktion angehängt wird. Das Überschreiben eines standortweiten Hooks kann durch Ändern des Werts oder durch Festlegen einer leeren Zeichenfolge erfolgen. Hooks können priorisiert werden, indem dem Hook-Namen in einer neuen Zeile ein Präfix mit Priorität hinzugefügt und die Priorität festgelegt wird. Die Standardpriorität ist 0, falls nicht angegeben.

Die Verwendung von Post-Commit ist eine schlechte Idee, da Commit Commit! = Push ist. Die Verwendung von Post-Push ist auch eine schlechte Idee, da 'Post-Push = hg Push git' zu einer Endlosschleife führt. Aber es sieht aus wie "ausgehender" Haken funktioniert. Powerman vor 11 Jahren 2
@Powerman Sie können einen komplexeren Hook schreiben, der nach dem Remote-Ziel sucht. Siehe http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html im Abschnitt Wohin gehen die Änderungen - remote Repository-URLs. schlamar vor 10 Jahren 1
@schlamar Was ist los mit 'Outgoing' Hook? Warum sollte ich komplexere Haken benötigen, um dieses Problem zu lösen? Powerman vor 10 Jahren 0