2010-04-23 13 views
7

Ho un repository git primario per un progetto opensourceSpecchio git a SVN

voglio rispecchiare tutte impegna a un repository svn (su code.google.com), è possibile?

risposta

4

Sì, è possibile. Utilizzare Git's SVN features per importare in un repository. Puoi quindi tornare indietro da lì. Troverete che, per la maggior parte, però, quel git può effettivamente mostrare una storia SVN meglio di SVN può mostrare una cronologia git.

3

Se la cronologia git è lineare, puoi provare a utilizzare git-svn. Vorrei provare a utilizzare "git svn clone" per importare il repository SVN (vuoto) esistente in git, quindi rebase la cronologia git esistente su quella e "git svn dcommit".

Se la cronologia git non è lineare (contiene rami e unioni), non sarà possibile rappresentarla correttamente in SVN. In tal caso, ti consiglio caldamente di utilizzare una soluzione di hosting basata su git (ad es. Github.com).

3

Ho affrontato questa situazione nel mio attuale lavoro. Il nostro repository Git primario ha una storia non lineare, quindi la soluzione selezionata dovrebbe gestirlo. La soluzione che sembra funzionare finora è basata su repository proxy gitsvn. Ho un gancio post-ricevere installato nel repository Git primario che al suo centro ha qualcosa di simile:

export GIT_DIR=$GITSVN_PROXY_DIR/.git 
git pull -Xtheirs file://$GIT_PRIMARY_DIR master 
git svn dcommit 

Dopo dcommit registrare la storia viene riscritta. Alla prossima estrazione di git dal repository Git primario si otterrebbero normalmente i conflitti di mrege. È qui che interviene l'opzione -Xtheirs. È una strategia di fusione che privilegia la versione remota delle modifiche. In questo caso ci consente di risolvere automaticamente i conflitti! :)

Unico svantaggio: i bei messaggi di commit SVN non vengono offerti gratuitamente. È richiesto un certo git hacking per far sì che contengano tutte le informazioni dai messaggi di commit Git primari.

+0

Saresti disposto a condividere l'hacking Git che hai menzionato nel tuo ultimo paragrafo? –

1

Dubito che sia possibile con code.google.com, ma è possibile impostare il proprio repository Subversion e installare SubGit in esso.

Non appena completata l'installazione si dispone di una coppia collegata di repository Subversion e Git. Ogni modifica in qualsiasi repository attiva un hook SubGit che converte automaticamente tutte le modifiche necessarie.

Per ulteriori informazioni, fare riferimento a documentation e git-svn comparison.

SubGit è un prodotto commerciale, ma per i progetti open source è possibile ottenere una licenza gratuita.