Domanda

Lavoro con un software che è tenuto in svn per il controllo della versione. Vorrei usare git (git-svn) tuttavia il software richiede molta installazione e configurazione prima di poter essere utilizzato. Ci sono strumenti che si occupano di tutto il setup, incluso il check out di tutto il codice tramite svn.

Tutta la documentazione per git-svn (sono stato in grado di trovare) richiede un nuovo checkout, usando git-svn.

C'è un modo per convertire un checkout svn esistente in modo che possa usare git-svn?

È stato utile?

Soluzione

Potresti fare qualcosa del genere:

  1. Esegui un clone completo dell'albero SVN usando git-svn, in una directory temporanea. Assicurati di utilizzare esattamente la stessa revisione del checkout esistente.
  2. Sposta il " .git " cartella dal livello superiore del checkout git-svn nel livello superiore del checkout SVN.
  3. Quindi dovrai dire a Git di ignorare " .svn " directory, oppure puoi eliminarle tutte.
  4. Elimina il checkout git-svn.
  5. Lì, ora puoi manipolare i tuoi file esistenti con Git e git-svn.
  6. Esegui un " stato git " e spero che dica che non ci sono cambiamenti.

Altri suggerimenti

No. Un clone git-svn converte l'intero repository in git. I checkout SVN non hanno l'intero repository e quindi non possono essere clonati. Questo è il vantaggio principale di passare da SVN o CVS a un sistema distribuito (come git).

Presumo che tu voglia mantenere la cronologia. Tuttavia, nel caso in cui tu (o chiunque altro inciampi in questa pagina) non abbiate bisogno di cronologia, potete usare & Quot; export & Quot; caratteristica come spiegato qui: https://stackoverflow.com/a/419475/2437521 .

Un altro modo per farlo, che non modifica la copia originale di Subversion e non richiede di copiarla, è usare una patch:

  1. Esegui un clone completo dell'albero Subversion usando git-svn, in una nuova directory che sarà il repository Git. Assicurati di utilizzare esattamente la stessa revisione del checkout esistente. Puoi usare git reset --hard :/r<revision> per forzare la stessa revisione dopo la clonazione, dove <revision> è la revisione a cui viene aggiornata la copia di lavoro di Subversion (vedi usando svn info lì).
  2. cd alla tua copia di lavoro di Subversion.
  3. Utilizza svn status per assicurarti che tutti i nuovi file siano contrassegnati con A (o usa svn add per aggiungerli) e tutti i file eliminati siano contrassegnati con D (o usa svn rm per eliminarli) .
  4. Esegui svn diff >patch.diff per creare un file patch.
  5. Copia patch.diff nella parte superiore del repository Git creato in precedenza.
  6. git apply -p0 patch.diff all'inizio del repository Git creato in precedenza.
  7. Esegui git status per applicare la patch sull'albero di lavoro del repository Git.

Ora puoi esaminare le modifiche usando git add e git commit / <=> per modificarle nel tuo repository locale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top