2009-08-21 15 views
5

Qualcuno ha provato a utilizzare la scala di tofu descritta in Practical Perforce da Laura Wingerd insieme a svn?Utilizzo della scala di tofu con svn

La scala di tofu ci dice come propagare le modifiche tra i rami (codeline). I cambiamenti nei rami stabili dovrebbero essere uniti a rami meno stabili (da ditta a morbida), e le modifiche nei rami meno stabili dovrebbero essere copiate sui rami stabili (da morbidi a rigidi). Vedi How Software Evolves

Ciò si traduce in rami di sviluppo in cui le modifiche apportate a rami più stabili vengono unite e quindi migliorano il codice nel ramo di sviluppo introducendo nuovi sviluppi e correzioni di errori.

Figure taken from Practical Perforce (ISBN 10: 0-596-10185-6) http://dl.getdropbox.com/u/136976/tofu%20scale.png

Quindi la domanda è: si può fare questo in svn e se; come si aggiorna dal genitore quando si lavora su un ramo? So per CVS, che l'aggiornamento da un ramo all'altro ti dà un sacco di problemi quando si desidera unire le modifiche indietro nel ramo genitore (spesso è la linea principale)

+1

Potresti elaborare cosa significa "scala di tofu"? – starblue

+0

"Le modifiche devono essere unite da rami stabili a rami meno stabili e le modifiche devono essere copiate nella direzione opposta." - Uno di questi è funzionalità? – peterchen

+0

Non vedo come questa sia una domanda – zvolkov

risposta

3
  1. Utilizzare il standard trunk/, branches/, tags/ structure
  2. Usa trunk/ come mainline
  3. Creare rami per lo sviluppo e il rilascio in branches/ - è possibile distinguerli utilizzando una convenzione di denominazione o addirittura sostituire branches/ con development/ e release/
  4. Usa svn merge per eseguire entrambe le fusioni e le copie - leggi Advanced Merging primo
2

Sì, è possibile farlo in Subversion, è più o meno una pratica standard.

L'idea è di fondersi dal più stabile con meno modifiche al meno stabile, al fine di ridurre al minimo le modifiche non correlate che renderebbero la fusione più difficile.

Unione di nuovo alla linea principale è fatto da prima fusione di tutte le modifiche dalla linea principale nel ramo, e quindi la copia il ramo, che sta sostituendo la linea principale dal ramo unito.

3

Leggendo di più sull'argomento ho trovato quella che credo sia una descrizione precisa di ciò che è necessario per fare questo tipo di propagazione del cambiamento tra i rami in svn.

Viene descritto nel libro Version Control With Subversion di C. Michael Pilato et al. nel sottocapitolo Basic Merging - Keeping a Branch in Sync

Il follwing è citato dal libro.

Subversion è a conoscenza della cronologia del ramo e sa quando si è diviso dal bagagliaio. Per replicare le ultime, più grandi modifiche del tronco al tuo ramo, per prima cosa assicurati che la tua copia di lavoro del ramo sia "pulita", cioè che non ci siano modifiche locali segnalate dallo stato di svn.Poi basta eseguire:

$ svn merge http://svn.example.com/repos/calc/trunk 

Una volta che hai una copia di lavoro pulita del tronco, si è pronti a unire il ramo di nuovo in esso:

$ pwd 
/home/user/calc-trunk 

$ svn update # (make sure the working copy is up to date) 
$ svn merge --reintegrate http://svn.example.com/repos/calc/branches/my-calc-branch 
$ svn commit -m "Merge my-calc-branch back into trunk!" 

Si prega di leggere il intero capitolo (e forse anche il libro) prima di iniziare. Si consiglia di leggere.