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
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/"
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. :)
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.
Questo metodo è più semplice per gli scaffali più grandi ed è quello che ho seguito. Grazie! – Ani
Questo metodo è davvero migliore per gli scaffali più grandi – Aamir
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
Demo di comando di cui sopra: Unshelve command basics
Ooohhh ... Curt, penso che hai appena fatto il mio giorno. Dovrò provarlo più tardi. – Herms
Da dove prendi gli utensili elettrici? – Guy
Sì, gli strumenti elettrici DOVREBBE permettervi di farlo, ma sfortunatamente l'unione diventa orribilmente sbagliata ogni volta, quindi è quasi inutile. –