Hinzufügen von Änderungen von einem Mercurial-Repository zu einem anderen

8

Als ich das VCS für mein Projekt FakeItEasy von SVN zu Mercurial in Google Code änderte, war ich etwas zu eifrig ( Ich bin so lustig). Was ich getan habe, war nur die letzte Version von SVN zu überprüfen und dann diesen Checkout als erste Revision des neuen Mercurial-Repo zu verwenden. Dies hat offensichtlich zur Folge, dass die gesamte Geschichte verloren geht.

Später, als ich etwas besser mit Mercurial vertraut war, wurde mir klar, dass es so etwas wie eine "Convert-Erweiterung" gibt, mit der man ein SVN-Repo in ein Mercurial-Repo umwandeln kann. Nun möchte ich den alten SVN-Repo konvertieren und dann alle Changesätze aus dem aktuell vorhandenen Mercurial Repo in diesen konvertierten Repo importieren mit Ausnahme von dem allerersten Commit nach Mercurial.

Ich habe das SVN Repo in ein lokales Mercurial Repo umgewandelt, aber jetzt bin ich festgefahren. Ich dachte, ich wäre in der Lage, die Convert-Erweiterung zu verwenden, um das aktuelle Mercurial-Repository in das konvertierte zu bringen, und mit einer Spleiß-Map das erste Commit zu entfernen, aber das scheint nicht funktionieren zu können.

Ich habe auch versucht, einfach zu konvertieren ohne Spleiß Map, um alle Änderungssätze aus dem aktuellen Mercurial Repo in die konvertierte und die Rebase die zweite Version im aktuellen bis zum letzten Commit aus dem alten SVN-Repository zu bekommen, aber ich kann Das soll auch nicht funktionieren.

Um das klarer zu machen, sagen wir, dass ich diese zwei Repositories habe:

%Vor%

Nun möchte ich diese beiden in das neue Repository kombinieren, das folgendes enthält:

%Vor%     
Patrik Hägne 21.04.2010, 16:27
quelle

2 Antworten

11

Solange Sie die Hashes für die neuen Revisionen ändern (Sie sind), können Sie auch einfach export und import verwenden (oder den Befehl transplant , der ein Wrapper um die beiden ist).

Sie haben bereits Ihren Convert, was großartig ist, gehen Sie jetzt in Repo B und tun Sie:

%Vor%

, das ein Changeset - ##. patch für jedes Changeset in Repo B erstellt, außer dem ersten (nummerierte Null).

Gehe jetzt zu Repo C und importiere sie:

%Vor%

Das sollte alles sauber gelten, wenn in der Tat die revA2 und revB1 identisch sind.

    
Ry4an Brase 21.04.2010, 16:45
quelle
0

Sie können Änderungen aus einem nicht verwandten Repository mit "hg pull --force"

übernehmen

Hier ist ein einfaches Anwendungsbeispiel:

richte die Testverzeichnisse ein

%Vor%

mache das Repository zu einem

%Vor%

mache Repository b

%Vor%

mache Repository c als ersten Klon von a, dann ziehe die Änderungen aus b

%Vor%     
David Holbrook 21.04.2010 17:16
quelle

Tags und Links