Domanda

Ho quello che pensavo fosse uno scenario semplice - usando TortoiseSVN:

1) Ho creato un ramo (B2) di un'applicazione (per lavorare sull'implementazione di sprite di immagini e amp; JAWR).

2) Test & amp; lo sviluppo è proseguito normalmente sul bagagliaio.

3) Ho ri-basato il ramo un paio di volte negli ultimi giorni da:

3.1) Tronco unito (per intervallo di revisioni) alla mia copia di lavoro di branch-b2, risolvendo i conflitti durante l'unione.

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

Tutto ha funzionato come mi aspettavo. Ma fondere il ramo nel bagagliaio si sta facendo strada con me:

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

5) Quindi, provo a unire (intervallo di revisioni) dal ramo-b2 nel trunk. Tuttavia, per ogni nuovo file che era stato aggiunto al trunk e successivamente aggiunto a branch-b2 quando l'ho riformulato, ottengo un conflitto tra alberi. Non sono sicuro di quale sia il modo corretto di 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 elimina l'intero trunk, copia i file di diramazione e quindi esegui il commit come nuova versione nel trunk. Nessuna di queste opzioni sembra una buona idea: la prima è una seccatura, ed entrambe sembrano perdere le storie di revisione dei file.

Che cosa ho fatto di sbagliato e come posso ripararlo?

È stato utile?

Soluzione

Sembra che tu stia utilizzando lo stile di unione pre-1.5 e cerchi di reintegrare il ramo nel trunk. In tal caso, quello che vuoi fare è prima assicurarti che tutte le modifiche al tronco siano state unite al ramo, quindi invece di unire l'intervallo al ramo in una copia di lavoro che punta al tronco, vuoi unire & FROM; trunk @ HEAD TO branch @ HEAD " con la copia di lavoro che punta al tronco. In sostanza:

" Dammi tutte le modifiche di cui avrei bisogno per rendere il trunk identico al ramo " ;.

Funziona se hai già unito tutte le modifiche del trunk al ramo, perché l'unica differenza tra trunk e ramo sono le modifiche apportate nel ramo.

Ha senso? :)

Altri suggerimenti

Ho studiato lo stesso problema. È " caratteristica " in Tortoise SVN 1.6.5. TortoiseSVN 1.5 funziona perfettamente con il nostro repositoty (SVN 1.5). TortoiseSVN 1.6.5 durante la rebasing aggiunge i file dalla linea principale come NUOVO (senza salvare la cronologia delle merge). E reintegrando i risultati del ramo nel trattare quei file come in conflitto con la linea principale.

Ho risolto il problema utilizzando la funzione di TortoiseSVN 1.6 "reintegrare ramo". È appositamente studiato per i rami delle caratteristiche.

- Alexey Korsun

Ecco qualche informazione in più per contribuire alla risposta di @Rytmis che mi aiuta a mantenerlo.

Passaggi di alto livello per rendere il trunk esattamente come un ramo o un tag:

  1. Pagamento dal bagagliaio.
  2. Utilizzando la copia di lavoro del trunk, unire da trunk a branch / tag.
  3. Commit.

Esempio di comandi da riga di comando 'svn':

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

Non riuscivo davvero a capire come funzionasse la soluzione sopra, quindi il mio lavoro è diverso. Innanzitutto 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 usando l'esportazione svn tartaruga. 3) Ho usato Windows Explorer per copiare l'intero ramo sul tronco e sovrascrivere tutti i file. 4) Ho usato il comando di controllo delle modifiche 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.

Dovresti usare soluzioni che non sono state create in modo che i file non revisionati non includano l'output.

Non vedo l'ora di passare alla versione 1.5+

Seleziona le revisioni da unire mentre selezioni " Unisci un intervallo di rivisioni " opzione usando TortoiseSVN. Ciò eviterà che i conflitti dell'albero per gli stessi file vengano nuovamente visualizzati per ogni operazione di unione.

Penso di aver risolto questo problema. 1. Fai clic con il pulsante destro del mouse su " branch " che hai unito. 2. Fai clic su Tortoise SVN > > fondersi 3. "Unisci una serie di revisioni" e poi 4. !!! CONTROLLA " Inverti unione " !!!   , URL da unire da "ramo", intervallo specifico "revisione unita di recente" e Avanti 5. Avanti 6. SVN Commite

Dopodiché posso unirmi dal ramo al tronco.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top