Frage

Ich habe ein Subversion -Repo mit dem folgenden Layout:

svnrepo/projectA/trunk
svnrepo/projectA/tags
svnrepo/projectA/branches
svnrepo/projectB/trunk
svnrepo/projectB/tags
svnrepo/projectB/branches


Was ich gerne zu einem Quecksilberrepo mit einem überarbeiteten Layout wechseln möchte:
HGREPO/PROJEKTA
HGREPO/ProjectB

Was ist der beste Weg, dies zu tun? Einige meiner Gedanken sind:

Option 1

Ordnen Sie die Pfade in der Subversion (unter Verwendung von SVN -Bewegung) in ein Zwischenformat neu an:

svnrepo/trunk/projectA
svnrepo/trunk/projectB
svnrepo/tags/projectA
svnrepo/tags/projectB
svnrepo/branches/projectA
svnrepo/branches/projectB

Dann konvertieren HG das SVNREPO/Kofferraum. Wird dies HG -Import verwirren?

Option 2HG konvertieren jedes der Projekte/Koffer in separate HG -Repos. Fusionieren Sie sie dann in ein einzelnes HG -Repo (mit HG Init, HG Pull -f -Projekta usw.). Ich denke, dies wird die Zweignamen und Tags beim ersten importierten Projekt verlieren.

War es hilfreich?

Lösung

In Quecksilber ist es eine schlechte Idee, nicht verwandte Codebasen im selben Repository zu speichern, weil dies der Fall ist

  • Wesentlich kompliziertes Verschmelzung. Zusammenführungen hängen von Änderungen ab alle Projekte, anstatt nur das Projekt, das Sie zusammenführen möchten.
  • Aufbewahrung von Speicher und Checkout Overhead - Mercurial unterstützt, soweit ich weiß, nicht nur die Überprüfung von Unterverzeichnissen eines Repositorys. Sie müssten alle Projekte gleichzeitig verzweigen.

Die Lösung besteht darin, Ihr einzelnes Subversion -Repository in mehrere Quecksilberrepositories umzuwandeln. Die meisten Conversion -Tools unterstützen dies.

Andere Tipps

Jedes Projekt sollte sich in einem eigenen HG -Repository befinden (um nur ein bestimmtes Projekt abzurufen oder zu markieren).

Denken Sie daran, als das Verzeichnis, das Sie in Subversion sehen (Koffer, Tags, Zweige) Verzeichnis infolge a Günstige Kopie (in SVN).

Das heißt, wenn Sie ein SVN -Repository konvertieren, sollten Sie im Verzeichnis der HG -Repo kein "Koffer", "Tags" oder "Zweige" speichern.

Sie sollten lieber a verwenden Werkzeug wie hgsubversion So importieren Sie Ihr SVN -Repo (wie nur "repo/projecta") in ein HG -Repo, das der Projekta gewidmet ist. Es hält Tags und Zweige des Orignal SVN -Projekts und wandelt sie in HG -Objekte um.
Aus seine Dokumentation:

Alle Updates verwenden hgpullsvn werden in dem Zweig hergestellt, der aus der letzten Komponente der SVN -URL benannt ist (z. B. wenn die SVN -URL ist svn://server/myproj/branches/feature-ZZZ, hgpullsvn Erstellt und benutzt den benannten Zweig 'feature-ZZZ')


Wenn Sie nicht "konvertieren" möchten, sondern "synchronisieren", Tonfa empfehlen hgsubversion, obwohl es "derzeit in einem Flusszustand ist, weil es stark refactoring" ist ":

Im Moment ist es nicht Bereit für die Produktion. Sie sollten dies nur verwenden, wenn Sie bereit sind, sich darauf zu hacken, und sich in die Interna Mercurial und/oder Subversion eintauchen.

Seit hgsvn Lassen Sie auch einige synchronisieren hgpushsvn und hgpullsvn... Ich würde bei bleiben hgsvn zur Zeit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top