Ich habe eine Verzeichnisstruktur wie:
%Vor%Wie Sie an der Position von .hg / sehen können, steht nur src / unter Hg-Kontrolle. Ich möchte das Repository-Wurzelverzeichnis von src / in sein übergeordnetes Verzeichnis project_root verschieben, damit ich auch Daten /, README.txt und LICENCE.txt verfolgen kann.
Ein hacky Weg, dies zu tun wäre, alles in ein Verzeichnis zu verschieben, anstatt .hg nach oben zu verschieben:
Gibt es einen besseren Weg? Ich kann nicht die erste Person mit diesem Problem sein, und die obige Lösung scheint übermäßig beteiligt.
Ihr Plan ist in Ordnung. Es scheint, dass es beteiligt ist, aber es sollte weniger als 20 Minuten dauern (schlimmster Fall) und passiert nur einmal.
Im ersten Schritt, wenn Sie die verfolgten Dateien verschieben, sollten Sie hg rename
(alias hg move
) verwenden, um sie zu verschieben, da sich Mercurial daran erinnert, was jede Datei vor und nach dem Verschieben war. Dies hilft beim Zusammenführen von Änderungen in der Datei vor dem Verschieben mit den neuen Dateien nach dem Verschieben. Funktioniert am besten, wenn beim Umbenennen / Kopieren keine Änderungen am Inhalt desselben Änderungssatzes vorgenommen werden.
Ich empfehle, den aktuellen Repo zu klonen (oder das gesamte Projektverzeichnis zu kopieren), bevor Sie fortfahren.
Sie sollten hg convert
ausprobieren. Sie werden Ihr bestehendes Mercurial-Repo in ein neues "konvertieren". Sie geben Regeln für die Konvertierung an. In diesem Fall werden alle Dateien aus dem ursprünglichen Repo in das Verzeichnis src
im neuen Repo übernommen. Dann können Sie die anderen Dateien manuell kopieren und hg add
in den neuen Repo einfügen.
Dies hat den Vorteil, dass es nicht als separate Änderungen in Ihrem Verlauf angezeigt wird. Der mögliche Nachteil besteht darin, dass Ihre ChangeSet-IDs neu generiert werden und vorhandene Klone nicht mehr aus dem neuen Repo ziehen können.
hg's Detect Renames funktioniert heutzutage.
Klonen Sie das Repo, damit Sie die Dinge ohne Bedenken durcheinander bringen können.
Verwenden Sie Ihr Beispiel:
Übernehmen Sie diese Änderung
Dann habe ich Daten, Readme.txt usw. nach src (nicht src / src) verschoben
Endlich, nachdem ich das Repo so eingerichtet habe, wie ich es möchte, schieben Sie die Änderungen zurück zum ursprünglich geklonten Repo. Vergessen Sie nicht, dass Sie das ursprüngliche Repo aktualisieren müssen, um die Änderungen im Arbeitsverzeichnis zu sehen.
Tags und Links mercurial project-management