2008-09-22 12 views
103

Supponiamo che qualche sviluppatore del mio team abbia accantonato le sue modifiche che ha fatto nel ramo A. E sto lavorando sul ramo B. Posso annullare le sue modifiche nel ramo B? (Dalla GUI o dal prompt dei comandi)Posso unshelve su un ramo diverso in tfs 2008?

risposta

127

Il Visual Studio Power Tools dovrebbe consentire di fare questo.

C:\src\2\Merlin\Main>tfpt unshelve /? 
tfpt unshelve - Unshelve into workspace with pending changes 

Allows a shelveset to be unshelved into a workspace with pending changes. 
Merges content between local and shelved changes. Allows migration of shelved 
changes from one branch into another by rewriting server paths. 

Usage: tfpt unshelve [shelvesetname[;username]] [/nobackup] 
        [/migrate /source:serverpath /target:serverpath] 

shelvesetname   The name of the shelveset to unshelve 
/nobackup    Skip the creation of a backup shelveset 
/migrate    Rewrite the server paths of the shelved items 
         (for example to unshelve into another branch) 
/source:serverpath  Source location for path rewrite (supply with /migrate) 
/target:serverpath  Target location for path rewrite (supply with /migrate) 
/nobackup    Skip the creation of a backup shelveset 

Ad esempio, per unire una serie ripiano chiamato "Ripiano Set Name" creato su Branch1 per Branch2 utilizzare questo:

>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/" 
+2

Ooohhh ... Curt, penso che hai appena fatto il mio giorno. Dovrò provarlo più tardi. – Herms

+0

Da dove prendi gli utensili elettrici? – Guy

+3

Sì, gli strumenti elettrici DOVREBBE permettervi di farlo, ma sfortunatamente l'unione diventa orribilmente sbagliata ogni volta, quindi è quasi inutile. –

1

L'informazione sullo scaffale include il percorso specifico verso cui va. Sfortunatamente non conosco alcun modo automatico di sgomberare in un luogo diverso da quello a cui è stato accantonato. Le volte in cui volevo farlo dovevo controllare i file equivalenti nel nuovo ramo, unshelve dal vecchio ramo, quindi copiare manualmente i file.

EDIT: Beh, credo che lo stavo facendo nel modo più difficile. Dovrò provare la soluzione di Curt. :)

34

soluzione alternativa alla tfpt che evita di dover unire ciascun file manualmente

Il problema con lo strumento di alimentazione tfs è you're doing a 'baseless merge' so have to confirm every file. Avevo uno scaffale di oltre 800 file e non mi fido mai del pulsante 'auto merge' e non volevo passare da un file all'altro - quindi ho dovuto trovare un altro modo!

  • Scaricare e installare il TFS Shelveset Sidekick. appare
  • Lo strumento sotto 'Strumenti' in VS2010
  • Eseguire lo strumento 'shelveset Sidekick', fare clic su Cerca per visualizzare shelvesets
  • Fare clic destro sul vostro shelveset e selezionare 'Esporta shelveset'
  • Salva in una posizione vuota come ad esempio C:\temp\shelveset-name
  • Ora hanno una struttura completa directory contenente solo i nuovi file

(Nota: non c'è barra di avanzamento durante l'esportazione - quindi se avete una grande shelveset che richiede molto ti per esportare devi solo controllare in Windows Explorer (File> Proprietà> Dimensione) che i file stanno ancora scendendo se pensi che sia congelato).

Ora è sufficiente copiarli sul nuovo ramo con Windows Explorer.

questo ha funzionato per me:

  • Verificando l'intera soluzione prima (nella nuova filiale)
  • Chiudi quella soluzione
  • Prendere TFS in linea dall'interno VS (Tool to do this) - vedi sotto per perché questo è importante ...
  • Copia i file in Windows Explorer. La struttura di directory in c:\temp\shelveset-name dovrà essere rinominata per corrispondere al nuovo ramo. Suggerimento: assicurati di copiare nel posto giusto !!!
  • Portare VS linea
  • Dovrebbe trovare tutti i cambiamenti e aggiungere i nuovi file
  • Se si chiede di impegnare la SourceControl assicurarsi di verificare il percorso è corretto per la nuova filiale.
  • Test - e poi check-nei nuovi file

Importante: Ho scoperto che se non si prendono prima TFS in linea allora si ritroverà con eventuali nuovi file (dal unshelves di modifiche) che mostra senza un piccolo segno di spunta rosso e dovrai escluderli e includerli di nuovo per farli aggiungere. Se qualcuno ha una soluzione alternativa a questo problema mi piacerebbe sapere - l'aggiornamento non sembra funzionare.

+0

Questo metodo è più semplice per gli scaffali più grandi ed è quello che ho seguito. Grazie! – Ani

+0

Questo metodo è davvero migliore per gli scaffali più grandi – Aamir

+0

Bene, si può andare via senza portare TFS offline. Ma non sono sicuro che ne valga la pena. Quello che ho fatto è stato eseguire l'azione Confronto - in Esplora controllo del codice sorgente dal menu di scelta rapida aperto nella cartella pertinente. Si può filtrare l'output per mostrare solo gli elementi che sono diversi. Quindi permette di fare una selezione multipla su di loro e di controllarli tutti in una volta. Ma immagino che portare TFS offline sia più veloce e più semplice di così. – mark

Problemi correlati