Ich versuche, einen SVN-Repo mit hgsvn
zu konvertieren, und ich habe einige Commits, wo SVN-Eigenschaften geändert wurden, aber da Mercurial diese nicht verwendet, sieht es dies als ein leeres Commit und bricht ab. Gibt es eine Möglichkeit, dieses hg commit
zu zwingen, ein Commit zu akzeptieren, das nichts ändert?
Ich bin nicht vertraut genug mit den Interna von hgsvn
, um es zu hacken, um leere Commits zu überspringen.
Sie können dieses Commit überspringen, wenn Sie der Kopfrevision ein lokales svn. $ REVNUM-Tag hinzufügen (= die Revision, die jetzt auch das svn. ($ REVNUM-1) -Tag hat). Dann können Sie mit hgpullsvn fortfahren.
Nehmen wir an, Ihr Import befindet sich in diesem Status (die zuletzt importierte Version ist 15800, die Property-Only-Version ist 15801):
%Vor%Dann fügen Sie einfach das svn.15801-Tag hinzu:
%Vor%und contunie zu importieren.
Erstellen Sie jedoch eine Sicherungskopie, bevor Sie dies versuchen.
Ich denke, Sie können nicht leere Commits in mercurial machen. Hier ist ein Thread, der erklärt, warum .
Wenn ich zuvor in p4 und hg leere Commits benötigt habe, habe ich einfach eine Datei verwendet, die beiseite gelegt wurde, um das leere Commit zu sein. Dump einfach eine zufällige Zeichenfolge von einer Art (ich verwende normalerweise die Uhrzeit und das Datum) in die Wegwerfdatei und hg commit
weg ....
Vielleicht wird das Folgende Ihnen in der Situation nicht helfen, aber anderen Lesern.
Sie können ein "leeres" Commit über den Import eines fast leeren Patches vornehmen. Ich habe einen Patch exportiert, alle Änderungen entfernt und nur 3 Zeilen (diff ..., ---... und +++ ...) gelassen und mit hg import --bypass --message ...
Wie in @ vorrtexs Kommentar zur ursprünglichen Frage beschrieben, ist die einfachste Methode, um ein leeres Commit in Mercurial zu erzwingen, folgendes:
Dummy.txt
) und commit. hg forget Dummy.txt
hg commit --amend
Dadurch wird Dummy.txt
vom vorherigen Commit entfernt und leer gelassen. (Sie können z. B. TortoiseHg für Schritt 1 verwenden, müssen jedoch für die Schritte 2 und 3 ein Befehlszeilentool verwenden.)
Ich füge das als neue Antwort hinzu, weil ich beim Scannen dieses Threads den Kommentar verpasst habe und die vorhandenen Antworten kein wirklich leeres Commit erzeugen.