2011-01-14 10 views
5

Wir haben kürzlich unseren SVN-Server von einem Rechenzentrum zu einem anderen verschoben, und die IP des Servers hat sich geändert. Ich benutzte svn switch --relocate old_url new_url, um meine tatsächliche Arbeitskopie zu aktualisieren, und das war glücklich.git-svn nachdem ein SVN-Repository verschoben wurde?

Allerdings arbeite ich die meiste meiner Arbeit in einer lokalen Git-Version des Repository (mit git-svn, offensichtlich). Nach dem SVN-Server bewegt, ich die URL für den Repo in .git/config aktualisiert, aber wenn ich versuche, dcommit zu verwenden, erhalte ich diesen Fehler:

Unable to determine upstream SVN information from HEAD history. 
Perhaps the repository is empty. at /home/me/libexec/git-core/git-svn line 520. 

Was bin ich?

Antwort

4

Im Allgemeinen wird dies nicht direkt von git-svn unterstützt. Die größte Hürde ist, dass git-svn die "git-svn-id" verwendet (sichtbar im Commit-Protokoll für jeden Commit), um Commits von SVN eindeutig zu identifizieren - und die SVN-URL ist Teil dieser ID. Wenn sich die URL ändert, wird Ihr gesamter Verlauf weitgehend ungültig.

Es gibt Workarounds, die beschrieben werden here die aussehen, als sollten sie funktionieren, aber sie sind nicht gerade einfach und ich habe keine von ihnen selbst ausprobiert.

+0

Danke. Ich hatte befürchtet, dass dies der Fall sein würde, aber ich mache mir keine Sorgen, dass ich meine Arbeit verlieren könnte. Ich kann meine Zweige immer nachziehen, wenn ich das SVN-Zeug neu importiere. – codekoala

+1

Ich habe die Workaround ausprobiert, die im Link unter [GitSvnSwitch] (https://git.wiki.kernel.org/index.php/GitSvnSwitch) beschrieben wurde und es hat für mich funktioniert. – ldav1s

+0

Ja, die gleiche 'URL' und' rewriteRoot' in meiner '.git/config' haben mir auch geholfen! Fantastisch! – codekoala

0

Es ist möglich, dies mit git-svn zu tun, indem Sie beide Repos klonen, sie zusammenführen und dann die git-svn-Metadaten neu erstellen.

Siehe meine Antwort here.

Verwandte Themen