Cherry-picking da git a svn (o, come mantenere una cronologia progetto in git e rilascia in svn)

StackOverflow https://stackoverflow.com/questions/2476787

Domanda

Sono in una posizione in cui io sono l'unico con git, tutti gli altri sta usando svn. Ho usato 'git svn' per collegarsi al svn squadra e per lo più funziona bene. Ultimamente, ho iniziato un progetto inizialmente per conto mio, repo git separato e ora ho bisogno di unire roba da esso per la svn. Tuttavia, ho ancora vorrei mantenere tweaking l'attuazione nella mia privacy fra le release.

Quindi, quale sarebbe il modo più semplice per cherry-pick alcune impegna dal mio repo privato alla repository svn-clonato? Requisito è quello di mantenere il pieno storia locale e avere un solo svn commit per ogni prelievo. O c'è qualche schiacciamento da fare?

Come metodo per raggiungere questo obiettivo, c'è un modo per ottenere il repo privato come un altro di origine per la repo svn-clonata?

È stato utile?

Soluzione

Si potrebbe provare a git innesto il commit dal repo Git per il commit di repo git-svn prima git dcommit il repo git svn.

Il commettere dal repo potrebbe essere isolato in un ramo speciale, quando tutti i tipi di schiacciamento può avvenire per esportare una storia pulita.

Altri suggerimenti

Se sei l'unica persona che utilizza il repo git in questo momento, si potrebbe prendere in considerazione rebasing tutto il vostro lavoro sulla parte superiore del clone sovvertimento vuoto che hai creato. Quindi impostare un ramo di tenere le spinte indietro alla sovversione, squash ogni release su di esso e di impegnarsi di nuovo a SVN.

Per una soluzione più approfondita, è consigliabile utilizzare direttamente git commit-tree - fornire con l'albero che si desidera impegnarsi (trovato eseguendo git show --format=raw HEAD e guardando la seconda linea ( "albero")), il genitore corretta commit (qualunque di attualmente in subversion) e il messaggio di log a destra su stdin. Si tratta di utilizzare direttamente l'impianto idraulico, probabilmente avrete bisogno di scrivere uno script per farlo per voi ... L'effetto è che hai creato un nuovo impegno che contiene il contenuto del file di uno già esistente commit (confrontare con cherry-pick, che prende il diff aggiunto da un esistente commesso, piuttosto che copiare l'albero).

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