2012-05-23 17 views
6

Abbiamo un progetto in cui abbiamo lavorato in una filiale per la versione 6.1. Una delle modifiche apportate nel ramo 6.1 (changeset 1800) era una correzione di bug, e qualcuno ha deciso che è abbastanza urgente per meritare una patch per la nostra versione 6.0 di produzione.Applicare un diff da un ramo come patch a un altro in Visual Studio TFS

Ora sono state apportate modifiche al file in questione sia prima del changeset 1800 che dopo. Quello che vogliono è solo per la patch da applicare a 6.0.

Come per http://linux.die.net/man/1/patch, sembra che la cosa migliore da fare sarebbe quella di creare un file diff confrontando changeset 1800-1799, e poi applicare tale file diff come patch-6,0. Non so nemmeno da dove cominciare a farlo in TFS.

Come piano di riserva, posso sempre passare le differenze nel changeset 1800 a mano e copiarle nell'ultima versione di produzione per correggerlo, ma mi piacerebbe farlo correttamente se possibile.

parte: Capisco che applicando solo un diff, si rischia il fatto che parte del codice coinvolto nel 1799> 1800 diff si basa sul codice che è stato istituito solo tra la versione di produzione corrente e changeset 1799, ma ciò può essere facilmente verificato creando rapidamente e testando la produzione dopo l'applicazione della patch di diff. Non siamo preoccupati per questo.

+0

Ho dovuto solo visualizzare le differenze e copiare e incollare le modifiche in una copia di produzione a mano perché erano di fretta, ma mi piacerebbe sapere come farlo usando i comandi TFS integrati in il futuro però. So che c'è un programma da riga di comando da qualche parte per roba TFS avanzata, ma non ci ho mai provato. – Alain

risposta

9

Ok, io non sono sicuro di aver capito tutto, ma qui è:

Changeset in TFS non memorizzare il contenuto assoluto di un file, ma la differenza (linee aggiunto, cancellato, cambiato).

Se si desidera segnalare la correzione del bug dalla versione 6.1 alla 6.0 e questa correzione è inclusa nel changeset 1800 (e nient'altro che questa correzione), quindi semplicemente unire il changeset specificato alla versione 6.0. Tutte le modifiche apportate prima del changeset 1800 non verranno unite nel 6.0, solo quello che hai fatto in questo changeset verrà unito.

Quando si esegue una stampa unione si hanno due opzioni:

  1. unire tutte le modifiche dal ramo sorgente alla destinazione uno
  2. unire un insieme di modifiche selezionato dalla sorgente alla destinazione.

Utilizzare il secondo e specificare il changeset 1800 e starai bene.

Alcune immagini:

enter image description here

enter image description here

SOLO l'insieme di modifiche selezionato saranno uniti.

+0

Quando esco Merge> Selected changesets> e quindi selezionare "1800", quindi tenta di unire tutto * fino a * 1800 incluso.Hai verificato che esiste un altro modo per unire solo le modifiche apportate tra il 1799 e il 1800 utilizzando questa funzione? – Alain

+0

Se ho capito bene la domanda, non c'è nulla nel ramo 6.0 che non appartiene al 6.1? In tal caso, potrebbe essere utile un'unione completa da 6.0 a 6.1 _prior a_ l'effettiva unione di changeset. __And__ è solo da TFS 2010 che i changeset contengono solo le differenze. Prima di ciò, fare una tale fusione può essere molto difficile, come dici tu. –

+0

Ho aggiornato la mia risposta, non so dove l'hai trovata. Non sta usando il metodo che ho dato con gli screenshot, è solo quello selezionato, ti garantisco. – Nock

Problemi correlati