Perché git svn dcommit perde la cronologia degli commit di fusione per le filiali locali?

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

  •  06-07-2019
  •  | 
  •  

Domanda

Ho un repository git locale creato con git svn clone . Faccio un ramo locale, apporto alcune modifiche, torno al master, git svn rebase e, se va bene, unisco il mio ramo al master. Quindi l'albero appare in questo modo:

alt text http://img.skitch.com/20090108-cjguu3hcci9x2k17mcftamw8f1.jpg

A volte, più tardi quando git svn rebase e ricevo alcune modifiche remote, si perde il fatto che a_branch è stato unito alla linea principale e l'albero appare così:

alt text http://img.skitch.com/20090108-kn3bn1qgi5ijw8ja5ijkd75pa3.jpg

Perché? Posso fermarlo? C'è un modo semplice per dire che un ramo è stato unito o dovrei eliminare i miei rami quando ho finito in modo da non dimenticare ciò che è stato e non è stato unito?

È stato utile?

Soluzione

La pagina man git-svn raccomanda di non usare l'unione. Questo è un effetto collaterale. Dato che stai ridisegnando il ramo (git svn rebase è un po 'come "git pull --rebase") riscrive efficacemente la storia. Può eliminare tutti i commit locali che sono già a monte nella sovversione, come l'unione, e mantenere solo i commit realmente esistenti nel repository svn. Dal momento che un banale commit di unione di una filiale locale non ha equivalenti in SVN, tu commetti solo il "reale" cambiamenti, quindi questi sono gli unici cambiamenti visti nel tuo nuovo ramo master rielaborato.

Idealmente, la tua filiale locale dovrebbe unire solo l'avanzamento rapido, ovvero non viene generato alcun commit di unione. In caso contrario, dovresti considerare di riassegnare il tuo ramo locale al master invece di unirlo. Ciò evita di creare completamente un commit di unione.

Altri suggerimenti

Perché stai attraversando svn. Perderai molte informazioni quando lo fai (perdi anche l'autore, per esempio).

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