2012-12-03 9 views
12

Ho importato repository SVN con Git utilizzando:Come ottenere un singolo Gitignore dopo git svn creare-ignore

git svn clone --preserve-empty-dirs --stdlayout svn+ssh://... SVN.git 

E riuscirono alla fine, anche se il modo in cui ha mancato paio di volte e ho avuto per "riavviare" con

git svn fetch 

Eppure alla fine sembra tutto a posto. (Anche se ora quando si scrive comincio a chiedermi se avrei fornito --preserve-empty-dirs nei supplementari fetch es così EDIT:?No, non dovrebbe vedere il mio commento muggito..)

Poi ho voluto creare .gitignore e così ho fatto con

git svn create-ignore 

e questo riuscito pure.

Ma il risultato finale è meno che soddisfacente. Ha generato molti file .gitignore in molte cartelle. Sembra che ogni volta che SVN possedeva una proprietà svn:ignore, Git creava il corrispondente file .gitignore.

Mentre mi piacerebbe averli uniti in un singolo file .gitignore radice. Questo è possibile con git dato che è molto più flessibile con ignori che permettono di ignorare in sottodirectory con caratteri jolly (o senza di essi). In ogni caso, penso che sia possibile trasformare automaticamente questi "sub-.gitignore s" in uno solo nella radice.

E vorrei avere che perché "SVN persone" non sarebbe felice con me commettendo oltre venti .gitignore file ...

+0

Sembra che 'git svn fetch' non accetti' --preserve-empty-dirs' (a giudicare da ciò che 'git help svn' mostra) in modo che risponda al mio dubbio. –

+1

infatti "git svn fetch" non codifica questo flag, ma è possibile aggiungerli a .gitconfig, come: '[svn-remote" svn "] preserve-empty-dirs = true'. Per attivarlo, devi anche aggiungere: '[svn-remote" svn "] added-placeholder = .gitignore' –

risposta

23

ho trovato una soluzione. È necessario utilizzare show-ignore anziché create-ignore e salvare l'output in un file.

Così, dopo la clonazione del repository eseguire seguente comando:

git svn show-ignore > .gitignore 

dalla radice archivio in cui si ha la directory .git.

+3

Quando ho fatto questo ha creato un file .gitignore con codifica Unicode. Ciò ha fatto sì che l'ignore fallisse silenziosamente finché non ho modificato manualmente la codifica di .gitignore in UTF-8. –