2011-01-14 6 views
5

Recentemente abbiamo spostato il nostro server SVN da un data center a un altro e l'IP del server è cambiato. Ho usato svn switch --relocate old_url new_url per aggiornare la mia copia di lavoro effettiva, ed è stato felice.git-svn dopo lo spostamento di un repository SVN?

Tuttavia, faccio la maggior parte del mio lavoro in una versione git locale del repository (usando git-svn, ovviamente). Dopo aver spostato il server SVN, ho aggiornato l'URL per il pronti contro termine in .git/config, ma quando provo ad usare dcommit, ricevo questo errore:

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

Che cosa mi manca?

risposta

4

In generale, questo non è qualcosa che git-svn supporta direttamente. Il più grande ostacolo è che git-svn usa il "git-svn-id" (visibile nel registro di commit per ogni commit) per identificare in modo univoco i commit da SVN - e l'URL SVN fa parte di questo ID. Se l'URL cambia, praticamente invalida tutta la cronologia esistente.

Ci sono soluzioni alternative descritte come here che sembrano funzionare, ma non sono esattamente semplici e non ho provato nessuna di esse.

+0

Grazie. Avevo paura che questo fosse il caso, ma non sono troppo preoccupato di perdere il mio lavoro. Posso sempre accedere alle mie filiali dopo aver reimportato la roba SVN. – codekoala

+1

Ho provato la soluzione descritta nel collegamento a [GitSvnSwitch] (https://git.wiki.kernel.org/index.php/GitSvnSwitch) e ha funzionato per me. – ldav1s

+0

Sì, usare lo stesso 'url' e' rewriteRoot' nel mio '.git/config' ha fatto il trucco anche per me! Fantastico! – codekoala

0

E 'possibile farlo con git-svn clonando entrambi i pronti contro termine, una loro fusione, poi ricostruire i metadati git-svn.

Vedere la risposta here.