2011-09-22 10 views
5

Ho un ramo SVN e un trunk. Il tronco cambia regolarmente e il ramo no.SVN: Sincronizza ramo con tronco in Eclipse?

Ogni tanto (diciamo una volta alla settimana) voglio aggiornare la copia di lavoro locale del ramo con le ultime modifiche del bagagliaio.

Idealmente, vorrei farlo nello stesso modo in cui lo faccio con l'ultima versione del ramo: con Eclipse: Team-> Sincronizza, così posso rivedere tutte le modifiche prima dell'aggiornamento.

Ciò è possibile anche con un diverso repository (ad esempio: trunk)? In caso negativo, come fanno le persone a rivedere le modifiche prima di aggiornarle ??

Ho guardato Team-> Unisci, ma questo sembra aggiornare le modifiche direttamente alla mia copia di lavoro, senza la possibilità di rivedere prima le modifiche (la funzione Anteprima è confusa, penso, e non fornisce bella vista side-by-side delle modifiche/conflitti che ha Synchronize).

risposta

0

Avrei eseguito il checkout di entrambe le diramazioni e trunk come progetti Eclipse separati nello spazio di lavoro. Quindi utilizzare uno strumento di fusione, ad esempio meld per unire le modifiche tra di loro. Dopo l'unione è possibile aggiornare il ramo in Eclipse e sincronizzarlo con il repository svn - ora è possibile rivedere tutte le modifiche. (è come lo faccio, dal momento che non credo plug-in svn eclipse;))

+0

Anche in Eclipse non mi è piaciuto svn, ma Subversive ora è abbastanza carino. Anche con un grande progetto con migliaia di file è utilizzabile (non veloce però, un aggiornamento richiede a volte un paio di minuti) – Dylan

6

Il modo giusto per farlo è con Unisci. Subclipse include un client di merge che semplifica l'operazione. Hai ragione che non ti dà una vera anteprima, ma il modo in cui funziona è meglio da una prospettiva di Subversion. L'interfaccia utente dei risultati di Unisci risultati è sostanzialmente uguale alla visualizzazione Sincronizza. Ti consente di esaminare facilmente ogni modifica apportata dall'unione nella tua copia di lavoro e l'editor di confronto di Eclipse che apre facilita l'eliminazione di qualsiasi parte della modifica che non desideri nel codice prima di eseguire il commit.

Il problema con il tentativo di eseguire questa operazione dalla vista Sincronizza è che si sta facendo l'unione da soli utilizzando editor di codice e Subversion non ha alcuna conoscenza di ciò che viene unito. Se lasci che Subversion faccia prima l'unione, allora può aggiornare correttamente tutti i suoi metadati ed è perfettamente corretto per te quindi correggere il codice in modo che sia come prima che tu impari i risultati dell'unione.

+1

decisione molto strana per fare prima l'unione e poi rivedere le modifiche ... non posso credere che qualcuno potrebbe preferisci questo invece di rivedere prima le modifiche, prima di rovinare la tua copia di lavoro ... Voglio vedere che cosa hanno fatto le altre persone, PRIMA che io voglia anche solo farci qualcosa ... ora devo ripulire il casino degli altri quando provo a guarda quali possibili aggiornamenti/bigfix sono disponibili ... – Dylan

+2

In che modo pensi che rovini la tua copia di lavoro? Generalmente non dovresti fonderti in una copia funzionante che ha modifiche non vincolanti. Se non ti piace il risultato dell'unione, c'è un'opzione Annulla che rimette la tua copia di lavoro come prima. Le singole modifiche possono essere facilmente rimosse utilizzando l'opzione Ripristina. Trovo molto strano che qualcuno voglia rivedere ogni cambiamento piuttosto che lasciare che lo strumento faccia il lavoro per loro e quindi rivedere ciò che ha fatto. –

+0

Forse ho solo bisogno di abituarmi. Penso solo che sia strano fondersi effettivamente sulla copia di lavoro e solo dopo vedere quali altre persone sono cambiate. Voglio solo un modo semplice per vedere tutte le modifiche imminenti e quindi decidere se devo unire ... – Dylan

0

Sono d'accordo che in realtà non è intuitivo per il design, ma Mark è giusto, "sincronizzare" le modifiche quando impegnarsi di nuovo al tronco:

  • prima assicurarsi che la filiale locale è completamente sincronizzato con il tuo ramo repository (senza modifiche)
  • Team ->Unisci ... la copia locale del ramo con il tronco repository
  • Ora avete una versione locale di che unire
  • è possibile localmente modificare questa versione, assicurarsi che i test stanno lavorando e non ci sono errori di compilazione
  • finalmente si sincronizza la versione locale fusa ramo con il ramo repository e impegnare tutte le modifiche che sono state fatte

inoltre, allo stesso modo in cui si uniscono il vostro ramo di nuovo nel tronco repository

  • assicurarsi tutti i cambiamenti della vostra filiale sono impegnati al ramo repository
  • interruttore al tronco squadra ->Switch ...
  • unire il tronco con la filiale team -> Unisci . .. (Tab 'reintegrare')
  • ora avete una versione locale della fusione, è possibile modificare le modifiche e rivederli, assicurarsi di avere una versione funzionante ora
  • sincronizzare il tronco locale (versione fusa) con il repository tr Lo Zio
  • commit tutte le modifiche che si desidera visualizzare nel bagagliaio

vi consiglio di impegnare tutte le modifiche apportate a livello locale per la stampa, visto che li hai provato a livello locale. se commetti solo alcune modifiche, assicurati che la versione del repository funzioni ancora con le modifiche mancanti

Problemi correlati