2009-06-17 12 views
51

ho quello che ho pensato è stata un semplice scenario - utilizzando TortoiseSVN:SVN - in grado di fondere ramo di nuovo nel tronco - numerosi alberi conflitti

1) Ho fatto un ramo (B2) di un'applicazione (per lavorare su implementazione di sprite di immagini & JAWR).

2) Il test dello sviluppo & ha funzionato normalmente sul trunk.

3) ho ri-Based il ramo un paio di volte negli ultimi giorni da:

3.1) tronco Fusa (dalla serie di revisioni) per la mia copia ramo-b2 di lavoro, risolvere i conflitti durante la fusione .

3.2) (dopo aver testato branch-b2), eseguo il re-based branch-b2.

Tutto ha funzionato come mi aspettavo. Ma la fusione del ramo nel bagagliaio si sta facendo strada con me:

4) Dopo tutti gli aggiornamenti effettuati in branch-b2; Mi assicuro di fare un aggiornamento SVN su trunk e branch-b2.

5) Quindi, provo a unire (intervallo di revisioni) da branch-b2 nel trunk. Tuttavia, per ogni nuovo file che è stato aggiunto al trunk e successivamente aggiunto a branch-b2 quando lo ho riallacciato, ottengo un conflitto ad albero. Non sono sicuro di quale sia il modo corretto per risolvere questi conflitti.

Il consiglio più tipico che ho visto è quello di eliminare i file di conflitto dell'albero dal trunk, quindi unire il ramo; oppure eliminare l'intero trunk, copiare i file di ramo e quindi impegnarli come una nuova versione nel trunk. Nessuna di queste opzioni sembra una buona idea, la prima è una sofferenza ed entrambe sembrano perdere la cronologia delle revisioni dei file.

Cosa ho sbagliato e come lo risolvo?

risposta

71

Sembra che tu stia utilizzando lo stile di unione pre-1.5 e che tenti di reintegrare il ramo nel trunk. In tal caso, ciò che si vuole fare è assicurarsi che tutte le modifiche del tronco siano state unite al ramo, e invece di fondere il ramo in una copia funzionante che punta al tronco, si vuole unire "FROM trunk @HEAD TO branch @ HEAD "con la copia di lavoro che punta al trunk. In sostanza:

"Fornisci tutte le modifiche necessarie per rendere il trunk identico al ramo".

Questo funziona se sono già state unite tutte le modifiche del tronco al ramo, poiché l'unica differenza tra trunk e ramo sono le modifiche apportate nel ramo.

Ha senso? :)

+0

Questo ha senso: gli daremo una possibilità per prima cosa in them. Per curiosità e desiderio di sanità mentale in futuro, qual è lo stile di fusione post-1.5? –

+2

1.5 e successivi è possibile saltare l'intervallo di revisione nella prima unione e utilizzare qualcosa come "svn merge --reintegrate branch" per la seconda unione (non è possibile richiamare le specifiche della GUI TSVN). Al rovescio della medaglia, dopo il reinserimento dovrai cambiare ramo perché il reintegro fa qualcosa di divertente a mergeinfo. – Rytmis

+52

Grazie a @Rytmis, sono appena riuscito a tirarlo fuori, ma voglio offrire una traduzione per gli utenti di Tortoise. 1) Passa la tua copia di lavoro al ramo (se non lo è già) 2) Fai clic con il tasto destro sulla copia di lavoro, TortoiseSVN> Unisci> "Unisci un intervallo di revisioni", fai clic su Avanti 3) URL da unire da = Tronco , fare clic su Avanti, Unisci 4) Cambiare copia di lavoro su Baule 5) Fare clic con il pulsante destro su copia di lavoro, TortoiseSVN> Unisci> "Unisci due alberi diversi", fare clic su Avanti 6) Da: Trunk (utilizzare la revisione HEAD) A: Branch (utilizzare la revisione HEAD) 7) Fare clic su Avanti, Unisci. 8) Conferma la tua copia di lavoro. DONE – mikesigs

3

Ho studiato lo stesso problema. È "feature" in Tortoise SVN 1.6.5. TortoiseSVN 1.5 funziona correttamente con il nostro repositoty (SVN 1.5). TortoiseSVN 1.6.5 quando rebasing aggiunge file dalla linea principale come NUOVO (senza salvare la cronologia di unione).
E reintegrare i resuls di ramo nel trattare questi file come in conflitto con la linea principale.

Ho risolto il problema utilizzando la funzione di TortoiseSVN 1.6 "reintegro ramo". È specificamente progettato per i rami delle caratteristiche.

- Alexey Korsun

+0

Grazie. Di tutte le discussioni su SO di questo problema "conflitto tra alberi", questo mi ha aiutato a correggerlo correttamente –

1

non ho potuto veramente capire come la soluzione di cui sopra è stato quello di lavorare quindi il mio lavoro intorno è diverso. Per prima cosa mi sono assicurato che il ramo contenesse tutte le modifiche dal tronco.

1) Ho ricevuto una nuova copia del bagagliaio. 2) Ho esportato il ramo in una posizione temporanea utilizzando l'esportazione svn tartaruga. 3) Ho usato Windows Explorer per copiare l'intero albero del ramo sul tronco e sovrascrivere tutti i file 4) Ho usato il check per il comando cambia su tartaruga e ho incluso la casella di controllo di tutti i file non revisionati. 5) Ho selezionato tutti i file e ho fatto clic su Aggiungi.

È necessario utilizzare soluzioni che non sono state create in modo che i file non previsti non includano l'output.

Non vedo l'ora fino a che l'aggiornamento a 1.5 +

1

Selezionare le revisioni per unire durante la selezione di "unire un intervallo di rivisions" opzione utilizzando TortoiseSVN. Ciò eviterà conflitti tra gli alberi per gli stessi file che si presentano di nuovo per ogni operazione di unione.

1

Ecco un po 'più di informazioni per contribuire alla risposta di @Rytmis che mi aiuta a mantenere la linea.

passaggi ad alto livello per rendere il tronco esattamente come un ramo o tag:

  1. Checkout dal tronco.
  2. Utilizzando la copia di lavoro del trunk, unire da trunk a branch/tag.
  3. Conferma. Comandi

Esempio 'svn' linea di comando:

svn checkout <trunk url> 
cd trunk 
svn merge <trunk url> <branch/tag url> 
svn commit -m "<message>" 
+0

Questa è un'unione "2-URL", che secondo i documenti, è destinata a unire due si dirama in una (directory di lavoro), quindi i due URL sono fonti e la destinazione è la directory di lavoro. Probabilmente non è ciò che l'OP voleva. –

0

Credo di aver risolto il problema. 1. Fare clic con il tasto destro del mouse su "ramo" che è stato unito. 2. Fare clic su Tortoise SVN >> Merge 3. "Unisci un intervallo di revisioni" e Avanti 4. !!! CONTROLLA "Unisci inverso" !!! , URL Merge da "ramo", specifica gamma "recentemente si è fusa la revisione", e Next 5. Prossimo 6. SVN commit

Dopo che io possa fondersi di ramo in tronco.

Problemi correlati