2014-02-26 6 views
40

Wie verschiebt man Dateien (in Unterordner) ohne ihren Verlauf zu verlieren?Hg: Wie Dateien (in Unterordner) verschoben werden, ohne Geschichte zu verlieren?

In meinem Mercurial-Repository (ich meine den Ordner mit der. Hg drin) Ich habe MyProject/Ordner mit allen Projektdateien. Jetzt muss ich src/folder inside erstellen und alle Dateien dorthin verschieben (von MyProject/ bis MyProject/src/). Wie kann ich es tun, ohne die gesamte Geschichte zu verlieren?

+0

Wo möchten Sie tun Repository-Root nach dem Umzug sein? In 'MyProject /' oder 'MyProject/src /'? – rpeshkov

+1

@black_wizard Es geht nicht um Repository-Root. Es sollte bleiben, wo es ist. MyProject ist kein Repository-Root. Es ist ein Ordner im Repository. Ich möchte nur einen weiteren Unterordner in diesem Ordner erstellen und Dateien verschieben. – AlexP11223

Antwort

30
hg mv 

tut das Richtige tun, aber hg log keine Listeneinträge über die Bewegung, wenn Sie es die -f Option geben. Sehen Sie diese Frage für weitere Informationen

Why 'hg mv' (mercurial) doesn't move a file's history by default?

Nachdem Sie dies tun, werden Sie wahrscheinlich die -f Option hg log auf die hgrc-Datei für den Repo hinzufügen möchten.

.hg/hgrc 

[defaults] 
log = -f 
+0

Ist es möglich, alle Dateien aus dem Verzeichnis hg mv? Oder nur eins nach dem anderen? Ich habe versucht "hg mv MyProject/MyProject/src /", aber es ist nicht genau das, was ich will. Es verschiebt den MyProject-Ordner in den Quellcode, so dass MyProject/src/MyProject/anstatt alle Dateien nur vom MyProject/zum src/ – AlexP11223

+4

zu verschieben, sieht aus wie ** hg mv MyProject/* MyProject/src/** funktioniert. – AlexP11223

4

Verwenden Sie hg mv, um Ihre Dateien zu verschieben, und verwenden Sie dann hg log -f (folgen), um den Verlauf einschließlich der Umbenennungen anzuzeigen.

40

Da Sie ein "tortoisehg" -Tag haben, dachte ich mir, ich würde erklären, wie ich das über die GUI mache.

Normalerweise umbenenne/verschiebe ich Dateien in meiner IDE oder im Windows Explorer. Wenn ich dann zum Commit gehe, zeigt THG eine Menge (?) Unbekannter Dateien und (R) entfernte Dateien an. Klicken Sie mit der rechten Maustaste auf eine der Dateien und wählen Sie "Erkennen umbenennen ..." und klicken Sie dann auf die Schaltfläche "Rename suchen".

Sie müssen möglicherweise den Schieberegler "Min Similarity" anpassen, bis Sie alle gewünschten Dateien und nur die gewünschten Dateien erhalten, aber es ist normalerweise sehr einfach.

+0

Das hat mir gerade viel Zeit gespart. – r0estir0bbe

9

In Windows mit Tortoise HG installiert, gibt es eine Windows-Shell-Erweiterung, die dies sehr gut behandelt.

Klicken Sie im Windows Explorer einfach mit der rechten Maustaste und ziehen Sie die Datei (en), die Sie verschieben möchten, in den Zielordner. Sie werden dann mit einem Pop-up präsentiert, die Ihnen diese Entscheidungen geben:

HG Verschieben versioniert (n) Artikel hier

HG Copy versioniert (n) Artikel hier

+0

Wenn Sie, wie ich, TortoiseHG auf einem virtualisierten Windows auf einem MacBook laufen lassen, wird dies nicht funktionieren - in diesem Fall können Sie jedoch Umbenennen ... verwenden, wodurch Sie auch Verzeichnisse ändern können, nicht nur den Dateinamen selbst. – mthomas

+1

Das funktioniert nicht für mich.Es verschiebt/kopiert die Datei, aber der Verlauf ist verloren. – Luke

Verwandte Themen