2016-03-23 6 views
0

Anfänger mit GIT & SubGit :).SVN-Zweigverlauf aufgrund von Migration verloren

Auf SVN Seite (Subversion Version 1.7.4), erstellt Entwickler ein Zweig nicht unter Zweigen befindet Ordner aber auf dem gleichen Niveau wie Stamm, Tags, Zweige, das heißt:

- trunk 
- branches 
- tags 
- TheBranch 

Dann zog sie diesen Zweig unter Zweigen Ordner (wir viele Änderungen sehen können):

- trunk 
- branches 
    - TheBranch 
- tags 

Wenn wir das zugehörige Repository in Git mit SubGit migrieren, enthält die migrierte Zweig die Revision nur auf den Umzug (ps verbunden: kein Update durchgeführt, nachdem die Operation). Nichtsdestotrotz ist die Anzahl der von SubGit verarbeiteten Revisionen die richtige, aber alle, die vor dem Verschieben in der Verzweigung ausgeführt wurden, werden nicht angezeigt.

Der Befehl lautet:

subgit import --svn-url [svn_url_repository] [path_of_git_repo] --username [user_name] --password [password]. 

wir eine Option Vergessen?

Antwort

-1

Da in älteren Revisionen die Verzweigung nicht in den 'Standard'-Strukturordnern enthalten war, wurden sie nicht in git migriert, da die Migration grundsätzlich Revision über Revision übergeht und jede SVN-Revision als GIT-Commit festlegt. Um dies zu beheben, sollten Sie der Migration mitteilen, dass Pfade migriert werden sollen, die nicht in den Standardtrunk/branches/tags enthalten sind. Weitere Informationen finden Sie in der Dokumentation zu git-svn.

1

"subgit import" -Befehl ist eine Abkürzung für "subgit configure" + "subgit install" + "subgit uninstall", es funktioniert nur für Standardstamm/Filialen/Tags Repository-Layout. In Ihrem Fall würde ich empfehlen, diesen 3-Befehl anstelle von Single "subgit Import" zu verwenden:

$ subgit configure --svn-url SVN_URL repo.git 

Dann bearbeitet trunk/branches/tags/Regale Optionen in repo.git/subgit/config Ihren zusätzlichen Zweig zu erwähnen:

trunk = trunk:refs/heads/master 
branches = TheBranch:refs/heads/obsolete/TheBranch 
branches = branches/*:refs/heads/* 
shelves = shelves/*:refs/shelves/* 
tags = tags/*:refs/tags/* 

übersetzen dann das Repository mit

$ subgit install repo.git 

Wenn Sie nicht kontinuierlich Synchronisationslauf brauchen dann

$ subgit uninstall repo.git 

SubGit benötigt sowohl Quell- als auch Zielzweige, die in subgit/config-Datei erwähnt werden sollen, um die Verschiebung zu verarbeiten.

Ich bin einer der SubGit Entwickler.

Update: einen Fehler in der Config behoben: Es sollte die gleiche Anzahl von Sternchen auf beiden Seiten von ':' sein.

0

Vielen Dank für Ihre Hilfe.

ich erfolgreich ausgeführt:

subgit configure --svn-url [svn_url_repository] repo.git 

dann die Konfigurationsdatei aktualisiert:

[svn] 
trunk = trunk:refs/heads/master 
branches = trunk2013:refs/heads/obsolete/* 
branches = branches/*:refs/heads/* 
shelves = shelves/*:refs/shelves/* 
tags = tags/*:refs/tags/* 

Wenn ich ausführen:

install repo.git 
SubGit version 3.1.1 ('Bobique') build #3448 
INSTALLATION FAILED 
error: Failed to load Subversion configuration at 'repo.git\subgit\config' 
error: Invalid layout option 'svn.branches': Number of asterisks ('*') on the left and right side of the mapping definition differs, when it should be equal.. 

Dann, nach einigen Untersuchungen I ersetzt:

branches = trunk2013:refs/heads/obsolete/* 

von:

branches = trunk2013:refs/heads/obsolete 

Und jetzt habe ich die Geschichte von thebranch :).

Nochmals vielen Dank.

+0

Ups, du hast Recht, ich werde das in meiner Antwort beheben. Schande über mich! –