Unisci due revisioni di ramo usando Subversion


95

Vorrei unire tutte le modifiche avvenute tra la rev 10 e la revisione HEAD su http: // url-of-branch-a e applicarle a http: // url-of-branch-b .

Qualcosa di simile a...

svn merge -r 10:HEAD http://url-of-branch-a 

È possibile? In caso affermativo, qual è la sintassi?

Sto eseguendo il client SVN dalla riga di comando di Unix. La versione del client SVN è 1.4

EDIT: Sì, la mia soluzione specifica era ...

  1. cambia directory nella posizione della mia copia di lavoro che vuole ricevere le modifiche (branch-b)
  2. svn merge -r 10: HEAD http: // url-of-branch-a

Questo unisce le modifiche da "branch-a" a "branch-b"


4
Devi anche sapere quando è stato preso il ramo. Puoi farlo (svn log --stop-on-copy.) Nel tuo ramo per ottenere il numero di revisione da cui sei derivato.
jmc

@jmc non ti serve più dall'anno 2008, quando è stato rilasciato SVN 1.5, AFAIR
bahrep

Risposte:


55

URL di checkout A. Usa l'unione SVN per unire l'URL B alla tua copia di lavoro di A. Commit A.

O viceversa ovviamente :)


127

Il processo è il seguente:

  1. Stabilisci una copia funzionante del ramo B ( svn checkout http://branch-b)
  2. Unisci le modifiche dal ramo A alla copia funzionante di B ( svn merge -r 10:HEAD http://branch-a .)
  3. Eseguire il commit (dopo aver risolto i conflitti) della copia di lavoro B nel ramo b ( svn commit)

Controllare la pagina man (file della guida) per la semantica di svn merge. Ti mostra che svn merge scarica sempre i risultati in una copia funzionante.

Scopri la SVNBook per tutti i dettagli.


Potresti anche dare un'idea di come farlo usando il plugin SVN in eclipse?
Snehal Masne

Questo funziona per me: svn merge --force --allow-mixed-revisions -r 10: HEAD branch-a
Minh Nguyen

2
perché specifichiamo la revisione 10 in HEAD? Perché due endpoint di revisione invece di una sola revisione da utilizzare come istantanea? a quale ramo si riferisce "10 to HEAD"?
ahnbizcad

2

Per lo più confuso mergeprovando a fare in svn repo, non possiamo unire direttamente a svn repo, possiamo unire alla copia funzionante della macchina locale come segue:

  • Questa copia di lavoro dovrebbe essere destination URLdi unione (cioè destinazione di checkout).

  • unisci copia di lavoro con source URLdi merge.

  • commit a destinazione.

Best practice : unisci, unisci.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.