Wie kann ich Mercurial dazu zwingen, ein leeres Commit zu akzeptieren?

8

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.

    
Asa Ayers 24.08.2010, 22:46
quelle

5 Antworten

3

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.

    
Rudi 25.08.2010, 06:21
quelle
3

Ich denke, Sie können nicht leere Commits in mercurial machen. Hier ist ein Thread, der erklärt, warum .

    
in3xes 25.08.2010 02:01
quelle
1

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 ....

    
Sniggerfardimungus 24.08.2010 22:54
quelle
0

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 ...

importiert     
iuzuz 04.01.2014 00:32
quelle
0

Wie in @ vorrtexs Kommentar zur ursprünglichen Frage beschrieben, ist die einfachste Methode, um ein leeres Commit in Mercurial zu erzwingen, folgendes:

  1. Fügt eine neue Datei hinzu (zB Dummy.txt ) und commit.
  2. hg forget Dummy.txt
  3. 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.

    
Neil T 16.10.2017 07:34
quelle

Tags und Links