2012-10-17 19 views
5

Stiamo testando utilizzando git come sistema di repository al posto del nostro normale svn. C'è un repository svn di cui abbiamo sempre bisogno. In svn colleghiamo questo repository con svn propset come svn: esterni. Ciò garantisce che ci sia davvero una sola copia globale di quel particolare repository, pesantemente usato.Tentativo di configurare un repository SVN in Git

Ora che abbiamo repository git, vorrei collegare il repository SVN ad esso essenzialmente nello stesso modo in cui lo si può fare con svn: externals. Sono riuscito in qualche modo a farlo. Sono nuovo di git, per favore scusate ogni ignoranza.

nel repository git pura (che clono via git clone [email protected]:mygitrepo) ho usato:

git svn clone svn+ssh://[email protected]/path/to/mysvnrepo mysvnrepo 

per ottenere una copia degli altri repository svn. Funziona alla grande, posso ottenere nuove revisioni al repository SVN tramite git svn rebase nella directory mysvnrepo e confermare le modifiche tramite git svn dcommit.

combinare questo al repository git principale che ho usato:

git add mysvnrepo 
git commit mysvnrepo 
git push 

Il problema che sto avendo è se ora mi clonare il repository git da qualche altra parte (di nuovo con git clone [email protected]:mygitrepo), mentre ho la directory mysvnrepo con tutti i file, non riesco a interagire con il repository SVN. Ottengo l'errore: "Impossibile determinare le informazioni SVN upstream dalla cronologia dell'albero di lavoro" dopo git svn rebase. Forse correlato, non esiste una cartella .git nella directory mysvnrepo quando la clone altrove (questo è dove le informazioni svn sono memorizzate nel repository originale).

Ho cercato un po 'questo problema, ma tutti i riferimenti a esso sembrano avere problemi a far funzionare il repository svn in primo luogo, mentre il mio problema è far funzionare per un altro utente.

Forse il mio problema è come aggiungere/commit/push con successo il repository svn al repository git? vale a dire: git add mysvnrepo; git commit mysvnrepot; git push; il modo corretto per farlo?

Edit: migliorato per dare più contesto

+0

Come si clona il repository? Usando 'git clone' o verificandolo da SVN o ...? – siegi

+0

intendi il repository git in cui lavoro? sia per il repository git originale che per l'altro utente uso 'git clone [email protected]: mygitrepo' –

risposta

2

Che sembra che si sta cercando di fare è includere un repository git all'interno di un altro, come si farebbe con svn:externals. Succede semplicemente che il repository incluso è stato creato con git svn; questo non avrà alcun effetto sul modo in cui includi quel repository all'interno di un altro.

È necessario creare il repository git che si desidera includere nell'altro disponibile pubblicamente da qualche parte. Puoi quindi includerlo utilizzando git submodule o git subtree. Nessuno dei due funziona esattamente come svn:externals; git subtree potrebbe essere più adatto ai principianti per gli altri utenti del repository git, tuttavia.

A seconda della lingua che si sta utilizzando e del software, si può anche considerare di creare un repository git separato per il repository molto utilizzato e di crearlo come libreria autonoma, file jar o cosa si ha. .

Quanto sopra funziona bene solo se hai intenzione di passare a git completamente. Se alcuni membri del tuo team continueranno a lavorare in SVN per un certo periodo, git substree o git submodule non funzioneranno per te.

Invece, dare un'occhiata a this question per simulare svn: esterni con git svn.

Per impostare tutti gli utenti all'uso di git, seguire l'ultimo esempio in "Esempi di base" nella pagina man git svn. Ognuno sarà in grado di git clone quindi eseguire alcuni comandi localmente, invece di fare un pieno git svn clone.

+0

il problema è che voglio che le persone siano in grado di eseguire il commit nel repository svn dal repository git usando' git svn dcommit'. Fare un repository git globale per lo stesso scopo funzionerebbe, ma sarebbe separato dal repository svn; questo non è desiderabile. Una soluzione è far sì che ogni persona git svn cloni il repository svn, quindi dovrebbero essere in grado di eseguire il commit (come posso quando clonarlo) –

+0

Ho aggiornato la mia risposta per includere alcuni dettagli su cosa è possibile fare in quella configurazione . Una migrazione lenta/parziale da SVN a git con svn: externals è un po 'imbarazzante. Spero che non spaventerai te o la tua squadra; git è davvero meraviglioso una volta che ci sei abituato. – jbowes

Problemi correlati