Come fondere (merge) un ramo (branch) di un repository svn


Dopo mesi di lavoro il nostro progetto è completo: siamo riusciti ad aggiungere una nuova caratteristica o abbiamo risolto un bug dell’applicazione. A questo punto è arrivato il momento di fondere il nostro ramo privato (branch nel lessico di subversion) con il ramo trunk del repository.

Per farlo andremo ad utilizzare il comando svn merge.

Questo comando può essere utile a diversi scopi:

  • fondere due rami del repository
  • ripristinare modifiche già rese persistenti nel repository
  • ripristinare la cancellazione di files

nel nostro caso andremo ad utilizzare il comando merge con lo scopo di fondere due rami del repository.

Il nostro repository di riferimento ha un layout identico a quello consigliato per progetti svn, l’albero è suddiviso in:

  • branches (contiene copie del codice contenuto in trunk usate per lo sviluppo di nuove funzionalità o per la correzione di errori, di solito queste copie alla fine del processo di sviluppo vengono fuse con il codice contenuto in trunk)
  • tags (contiene copie del codice contenuto in trunk, ad esempio: versioni stabili)
  • trunk (il punto principale di sviluppo dell’applicazione)

Per effettuare la fusione dobbiamo, prima di tutto, controllare il numero di revisione in cui abbiamo ramificato il nostro progetto con il comando:

svn log --verbose --stop-on-copy http://svn.example.com/repos/project/branch/my-project

L’ultima revisione stampata da questo comando è il numero di revisione da cui dobbiamo partire per fare la fusione (ad esempio: 354).

Per applicare la fusione posizioniamoci nella nostra working copy (checkout aggiornato del ramo trunk dell’applicazione) e lanciamo il comando:

svn merge -r354:HEAD http://svn.example.com/repos/project/branch/my-project

Questo comando applica al ramo trunk le modifiche apportate nel ramo privato. A questo punto potremmo trovarci di fronte a conflitti nella fusione del codice, in questo caso svn ci da la possibilità di controllare le differenze, editare online il file, risolvere i conflitti o postporli a revisioni successive.

Lanciamo il comando svn st per analizzare le modifiche apportate dalla fusione e, dopo aver fatto tutte le verifiche del caso (compilazione, esecuzione tests, ecc…), rendiamo permanenti le modifiche con il comando svn ci. Nel messaggio della revisione teniamo nota dei numeri di revisione fusi, ad esempio se l’ultima revisione del ramo trunk è la 562 scriviamo nel messaggio: “Merged my-project-branch changes 354:562 into the trunk”, in questo modo se il lavoro di sviluppo sul branch my-project dovesse continuare potremo riassorbirlo in seguito nel ramo trunk partendo dalla revisione 562 e non dalla 354 (prima revisione dove esiste il nostro ramo privato).

Per maggiori informazioni:

Articoli correlati

This entry was posted in Programmazione and tagged , , , , , , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">