2010-08-09 27 views
13

clonare un repository svn in git è facile con git-svn. Tuttavia, ho bisogno di farlo al contrario. Ho un repository git che gira e voglio importarlo in un file vuoto (eccetto le cartelle trunk, branches e tag) mantenendo tutte le informazioni di commit.Esporta repository git su svn

Certifico un git-svn-clone del repository svn, ho tirato il mastro git e ho scomunicato. Tuttavia l'unico commit che ho in svn è quello che dice "fuso da git"

Ho anche provato l'altro modo: clonato il repository git e chiamato git svn init ma git continua a dire "Impossibile determinare le informazioni SVN upstream da Storia della testa. "

È in qualche modo possibile creare un repository svn da git?

Cheers, Michael

risposta

6

quando si tira il ramo maestro dall'altro git repo crea una fusione commettere, perché non c'è storia comune.

si dovrebbe usare git pull --rebase (che cambierà commettere ids, in quanto ricrea i commit), invece, allora dcommit


si potrebbe anche provare il seguente:

checkin la versione iniziale con svn (semplicemente creando quei rami, tag, cartelle trunk e commit), quindi crea un git svn clone (git svn -s clone svn://…)

quindi emetti i seguenti comandi:

# create a ref to your "svn" commit 
git checkout -b svn 
# get all your "git" commits 
git fetch $your_remote_git_repo 
# create a ref to your "git" commit 
git branch master FETCH_HEAD 
# rebase the rest your git commits 
git rebase svn master 
# commit to svn! 
git svn dcommit 

modificare ciliegio scelta era necessaria solo perché il mio impostare rapidamente repository git aveva solo commit vuote

+0

ho provato con git pull --rebase ma distrugge la svn informazioni a monte: # git svn clone -s # progetto cd # git pull git --rebase: progetto # git svn dcommit Impossibile determinare le informazioni SVN a monte dalla storia HEAD. Forse il repository è vuoto. alla riga/usr/lib/git-core/git-svn 517. –

+0

prova a creare un dummy commit con svn first – knittl

+0

Non sono sicuro di aver capito cosa intendi: Dopo git svn clone ho creato un test commit in svn . Dopo git pull --rebase posso ancora creare fn svn fetch, ma non dcommit. Penso solo a importare in svn ignorando la storia. –

12

Ecco la mia ricetta per la pubblicazione di un repo git via svn:

svn mkdir --parents http://host/path/to/repo/{trunk,tags,branches} \ 
    -m "Standard layout for $project" 
git svn init -s http://host/path/to/repo/ 
git svn fetch 
git rebase trunk master 
git svn dcommit 

Subversion won preservare i tempi di commit o la paternità. Dio ti aiuti se hai usato i rami.

+0

Dopo aver eseguito il 'rebase', git segnala che i due repository sono ora divergenti. Cosa si dovrebbe fare per rettificarlo? –