Problema
Voglio clonare un repository SVN con git-svn.
Il problema è che il repository subversion ha cambiato layout in r1235
.
Specifiche
Dalla revisione 1 alla 1234, foo
ha utilizzato il layout della cartella svn standard con:
- / trunk / src
- / tag /
version
/ src
Alla revisione 1235, l'autore ha aggiunto bar
al pronti contro termine. Per fare ciò hanno ristrutturato il master repository rendendo il layout della cartella simile a questo:
- / trunk / foo / src
- / trunk / bar / src
- / tag /
version
/ pippo / src - / tag /
version
/ bar / src
Obiettivo
Voglio un nuovo repository git con la cronologia di foo
come se non fosse mai riorganizzato per includere bar
.
Documentazione pertinente
Lavorare con layout non standard è discusso nella documentazione di git-svn.
Se l'intera cronologia non è necessaria (o se voglio solo bar
), posso ottenere quello che voglio da r1235 su:
-
git svn init --stdlayout http://path.to/repo
- modifica
repo/.git/config
aggiungendo/foo
ai percorsi pertinenti (o/bar
)
'
[svn-remote "svn"]
url = http://path.to/repo
fetch = trunk/foo:refs/remotes/trunk
branches = branches/*/foo:refs/remotes/*
tags = tags/*/foo:refs/remotes/tags/*
'
-
git svn fetch -r 1235:HEAD
I miei tentativi
-
git svn clone -r 1:1234 --stdlayout http://path.to/repo
- modifica
repo/.git/config
come sopra -
git svn fetch -r 1235:HEAD
Risultato
L'ultimo comando sembra avere successo perché r1235
- HEAD
viene scaricato. Tuttavia, git log
mostra solo commit fino a 1234
. Anche la directory di lavoro sembra essere la vecchia revisione.