2010-01-19 20 views
13

Sto cercando di unire il ramo di sviluppo nel bagagliaio del mio repository. Passi che ho preso:Eclipse Merge Branch into Trunk

  1. Passa al tronco
  2. verifica che sia aggiornato, risolvere eventuali conflitti
  3. Vai a SQUADRA-> Unisci
  4. Seleziona URL: sviluppo filiale
  5. Inizio Revisione: Revisione quando ramo è stato creato
  6. Fine Revisione: TESTA
  7. OK

Questo dovrebbe fare la magia - si apre la vista syncronize che va bene, mi mostra tutti i conflitti, ma c'è il problema si verifica:

Nel confrontare l'editor vedo due file: file locale | Remote File (306)

Questo è davvero strano, il numero di revisione del file remoto è in realtà quello del file nella copia di lavoro (trunk) e così è il contenuto. Il file locale ha il contenuto del file nel ramo.

Ora la freccia mostra correttamente che mi sto unendo da sinistra a destra (da ramo a tronco). Questo succede anche quando clicco ok.

MA Posso spostare solo le modifiche da destra a sinistra !!! Non è quello che voglio - non voglio sovrascrivere i cambiamenti nei rami con il vecchio contenuto del tronco. Voglio spostare il contenuto da sinistra (ramo) a destra (tronco). Ma non riesco nemmeno a scrivere nel file giusto.

Non so perché scrive file remoto lì ?? Mostra chiaramente il file di copia di lavoro nella finestra del file remoto, e il file dal ramo (per la fusione) è mostrato nel file locale.

Alcuni bug in Subversive?

Thx, Martin

risposta

6

Unisce sono mai stato facile con i sovversivi (come accennato in questo vecchio SO question), può essere posto facendo l'unione esternamente (o con subclipse) sarebbe più facile qui.

Se il client e il repository sono entrambi almeno in SVN1.5, le nuove capacità di unione di Subversive sono migliori, ma comunque pericolose come illustrato da this thread.

Poiché Subversive è stato modificato per SVN 1.5, l'intero comportamento di unione è stato modificato. Una cosa che mi è veramente piaciuta è stata la possibilità di scegliere quali modifiche volevo, applicarlo alla mia copia di lavoro e poi impegnarmi nel trunk.
Sovversivo ora non lo fa più ma forza tutte le modifiche sulla tua copia di lavoro e poi scegli cosa mettere nel bagagliaio.

Questo comportamento non è solo indesiderabile, ma è anche pericoloso (se si ignora comunque la possibilità di un ripristino). Preferisco commettere cose che conosco lavoro. Abbiamo un ramo di rilascio che riceve modifiche che possono o non devono essere migrate nel trunk.

+1

che una specie di true..it di paura che l'unione avviene prima (senza interazione dell'utente) nella vostra copia di lavoro. E poi devi confrontare con il tronco e ripristinare le modifiche indesiderate. Preferisco il contrario, (provando le versioni ora), dove prima dell'unione nella copia di lavoro succede che l'utente può scegliere quali cose unire. – martin

2

Bene, questo all'inizio sembrava misterioso, ora fornirò una pugnalata decente all'aggiornamento di questa risposta per tutti. Ciò riguarda l'unione utilizzando il client SVN Subversive per Eclipse:

Si sta facendo l'unione correttamente, iniziando in Trunk e quindi indicando il file sotto il ramo locale. I tuoi file si aprono nella finestra "Confronta testo" nella scheda Sincronizzazione squadra. Se non vedi i conflitti nella colonna di navigazione a sinistra, l'unione è appena avvenuta. Sì, questo è confuso e non intuitivo.

Ciò che la finestra di confronto del testo offre è la possibilità di annullare le modifiche (o altre che potrebbero essere state rilevate nel file unificato inconsapevolmente) prima di eseguirne il commit. Ricorda che stai inserendo il file da Branch, quindi l'idea è che il file Branch sia in Trunk ma in una specie di limbo virtuale finché non viene infine eseguito il commit, e la modifica o l'annullamento delle modifiche indesiderate qui fa riferimento al file in Branch (ovviamente). Questo è il motivo per cui hai solo una pipe a senso unico (da Trunk a Branch) per sovrascrivere quelle modificate unite in Trunk tramite la tua copia di lavoro. La tua unione ha avuto luogo, ma non è ancora abbastanza ufficiale.

Se tutto sembra come dovrebbe, fare clic con il pulsante destro del mouse nella finestra di navigazione (riquadro sinistro nell'installazione Eclipse Helios) e scegliere Accetta dal menu a discesa. Quindi fai di nuovo clic sulla scheda di visualizzazione del codice principale (nella mia installazione è PHP, ma potrebbe essere qualsiasi cosa tu stia utilizzando) e poi impegnare il file su Trunk.

Se si desidera verificare ciò, eseguire una visualizzazione del file "come è" nel trunk prima di eseguire il commit e si dovrebbe vedere le modifiche si riflettono lì se l'unione è stata eseguita correttamente. Questo sembra essere il modo in cui funziona per me su un Macbook Pro di OSX Snow Leopard. Non sono sicuro se è lo stesso per la gente di Windows o Linux. Presumo che sia essenzialmente lo stesso/processo simile.

0

è facile

check out tronco con check-out, come ... dare un nome di progetto diverso.

Ora si ha sia localmente che una copia funzionante, il trunk su cui si desidera eseguire il commit e il ramo su cui si sta lavorando e le cui modifiche sono state apportate al repository. Ora fai clic sul progetto di tronco (e intendo il progetto, non i singoli file) - unisci - seleziona il progetto di diramazione (di nuovo, PROGETTO) accetta tutte le modifiche alla copia locale commuta tutto ciò che è necessario per il trunk come usato per tutto bene, eliminare il tronco di nuovo e continuare a lavorare sul ramo

soprattutto con rami questo sembra super facile e ha lavorato come un fascino per me

Problemi correlati