2012-03-23 4 views
6

Sono un po 'curioso su come vengono usate le informazioni di unione in Subversion e su che tipo di problemi si possono incontrare se le informazioni di fusione non sono corrette?Subversion unisce informazioni, quanto è importante?

Ad esempio, ho diramato branch1 e branch2 da trunk. Ho anche un subbranch1 e un subbranch2 originario di branch1. Considera che ho sviluppato un po 'di sviluppo in branch2, e poi lo ho reintegrato in trunk usando svn merge --reintegrate ^/branch2. Poi ho voluto aggiungere anche queste modifiche a subbranch1 (estraendole da trunk) e comando erroneamente utilizzato, svn merge --reintegrate ^/trunk (aggiungendo quindi anche il flag --reintegrate al comando di unione, anche se subbranch1 non è un antenato immediato di trunk).

Quali problemi può causare in futuro?

risposta

2

Questa risposta è obsoleta. Si prega di usare Subversion> = 1.6.


Stai ramificazione approccio è pericoloso in generale, ma a causa dell'incidente è ancora peggio.

Avrai molti problemi quando reintegrerai tutti i rami.

  • le modifiche apportate da branch2 potrebbero apparire come delezioni a subversion.
  • le eliminazioni fatte da voi potrebbero sembrare aggiunte a subversion.
  • tre vie-comparsion potrebbe dare risultati strani (mettendo lo stesso pezzo di codice per due volte nel file, ad esempio)

Non ti puoi fidare più tre vie-comparsion, è necessario controllare ogni cambia manualmente!

Vedere What mother never told you about svn branching and merging per ulteriori informazioni.

P.S. Ho dovuto aggiustare qualcosa del genere una volta. Da allora usiamo bunny hopping (vedi link).

+0

Re il post sul blog, non penso che Bunny Hopping sia necessario poiché SVN 1.5, che tiene traccia di questo tipo di cose per te. – hdgarrood

+0

SVN 1.5 ha risolto alcuni problemi, ma se si eseguono operazioni di fusione e diramazione si avranno problemi. –

+0

Il bunny-hop non è richiesto. È una soluzione alternativa per le cattive pratiche SVN. Perché le persone si aspettano che l'unione sia semplice se hanno intenzione di fare MOLTE modifiche al trunk AND a un ramo? (In particolare sullo stesso codice!) – exception

3

informazioni Merge tiene traccia di queste informazioni:

  • Le relazioni tra i rami (subbranch1 originati da branch1, che ha avuto origine da trunk, etc.)
  • Quali revisioni sono state già fusa

Se le informazioni di fusione mancano o non sono corrette, è necessario tracciare manualmente le unioni e questo potrebbe essere soggetto a errori. Usando le informazioni di fusione, lasci semplicemente che Subversion tenga traccia di tutte queste informazioni.