Bearbeiten : Machen Sie dies noch deutlicher, wenn das Kopfgeld abläuft: Gibt es eine Möglichkeit, den Verlauf (aus verschiedenen SCMs) direkt mit Mercurial in einen bestimmten Zweig zu importieren?
Ich arbeite derzeit in einem Unternehmen mit Perforce und mache Platz für eine verteilte Versionskontrolle mit Mercurial. Ich hatte Erfolg beim Importieren der Perforce-Historie mit der Perfarce (ein ziemlich passender Name, ich lache jedes Mal, wenn ich ihn sehe / sage), dies funktioniert jedoch immer nur mit einem Zweig.
So funktioniert mein P4-Integrationssetup:
- Erstellen Sie notgedrungen einen "Client", der eine Art Beschreibung dessen darstellt, was Sie ständig aktualisieren / auschecken werden. Dies kann jeweils nur einen Zweig (Amtsleitung oder andere) ansprechen.
- Sobald Sie dies getan haben, laufen Sie
hg clone p4://<server>/<client_name>
- Gehen Sie zu .hg / hgrc und setzen Sie die Perforce-Pfadlinie:
perforce = p4://<server>/<client_name>
- Arbeiten Sie normal mit dem Code unter mercurial, führen Sie
hg pull perforce
eine Synchronisierung durch undhg push
exportieren Sie eine Änderungsliste
Ich möchte in der Lage sein, einen Perforce-Pfad pro Zweig zu haben und alles im selben Repository arbeiten zu lassen. Das Pushing ist jetzt jedoch kein Problem. Wenn ich den Verlauf aus einem anderen Zweig ziehe, landet er im Standardzweig.
Ich möchte in der Lage sein, so etwas zu tun hg pull perforce-R5
und es in der R5-Filiale von mercurial landen zu lassen. Selbst wenn ich keine Zusammenführungshistorie habe, wäre es süß genug, um die Geschichte der Branche zu bewahren.
Es gibt auch andere Plugins für CVCSs, mit denen Sie Mercurial integrieren können, aber AFAIK, die Subversion, hat das gleiche Problem.
Ich glaube nicht, dass es einen direkten Weg gibt, dies zu tun, aber solange ich den Prozess mit einigen Hooks und Skripten in einer einzelnen Mercurial-Maschine automatisieren könnte, wäre das gut genug.
Edit : Um die Dinge etwas klarer zu machen:
- Perforce Stamm wird auf Mercurial abgebildet Standardzweig
- Der Perforce R1- Zweig sollte dem Release-1- Zweig von Mercurial zugeordnet werden (dasselbe gilt für R2, R3 usw.).
- Wenn ich Mercurial anweise, von Perforce zu ziehen (dh
hg pull perforce
"perforce" ist der Name des Pfads, der auf den Perforce-Client verweist), sollte der Perforce-Trunk in die Standardeinstellung von Mercurial übernommen werden. - Wenn ich Mercurial anweise, von Perforce-R1 zu ziehen (dh
hg pull perforce-R1
"perforce-R1" ist der Pfad zum R1-Client), sollte der Perforce R1-Zweig zum "Release-1" -Zweig von Mercurial gezogen werden. Dies ist der Teil, nach dem ich frage .
Antworten:
Ich glaube nicht, dass dies direkt möglich ist.
Eine Möglichkeit besteht darin, das
rebase
Tool zu verwenden, um die entsprechenden Teile des Repositorys nach dem Abrufen mit den folgenden Schritten in den anderen Zweig zu verschieben:hg branch release-1
hg commit -m "Created branch"
hg pull perforce-R1
hg rebase -s <first changeset of perforce-R1> -d release-1
quelle