Posso liberarmi da un altro ramo di tfs 2008?
Domanda
Supponiamo che alcuni sviluppatori del mio team abbiano accantonato i suoi cambiamenti che ha fatto nel ramo A. E sto lavorando al ramo B. Posso rimuovere i suoi cambiamenti nel ramo B? (Tramite la GUI o il prompt dei comandi)
Soluzione
Power Studio di Visual Studio dovrebbe consentirti di farlo.
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 un set di scaffali chiamato " Shelve Set Name " creato da Branch1 a Branch2 usare questo:
>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"
Altri suggerimenti
Soluzione alternativa a tfpt che evita di dover unire manualmente ogni file
Il problema con lo strumento di potere tfs è che stai facendo una" fusione senza base ", quindi devi confermare ogni file . Avevo uno scaffale di oltre 800 file e non mi fido mai del pulsante "unione automatica" e non volevo scorrere ogni file a turno, quindi ho dovuto trovare un altro modo!
- Scarica e installa il TFS Shelveset Sidekick .
- Lo strumento appare sotto "Strumenti" in VS2010
- Esegui lo strumento "Sidekick scaffale", fai clic su Cerca per mostrare gli scaffali
- Fai clic destro sul tuo scaffale e seleziona "Esporta scaffale"
- Salva in una posizione vuota come
C:\temp\shelveset-name
- Ora ha una struttura di directory completa contenente SOLO i nuovi file
(Nota: non c'è una barra di avanzamento durante l'esportazione, quindi se hai un grande scaffale che richiede molto tempo per esportare devi solo controllare in Esplora risorse (File > Proprietà > Dimensione) che i file stanno ancora arrivando giù se pensi che sia congelato).
Ora devi solo copiarli nel nuovo ramo con Windows Explorer.
Questo ha funzionato per me:
- Verifica prima l'intera soluzione (nella nuova filiale)
- Chiudi quella soluzione
- Porta TFS offline da VS ( Strumento da fare questo ) - vedi sotto per perché questo è importante ...
- Copia i file in Esplora risorse. La struttura della directory in
c: \ temp \ shelfet-name
dovrà essere rinominata per corrispondere al nuovo ramo. Suggerimento: assicurati di copiare nel posto giusto !!! - Porta VS online
- Dovrebbe trovare tutte le modifiche e aggiungere i nuovi file
- Se ti chiede di associare il sourcecontrol assicurati di verificare che il percorso sia corretto per il nuovo ramo.
- Test: quindi controlla i nuovi file
Importante: ho scoperto che se non porti TFS offline per la prima volta, finirai con tutti i nuovi file (dal set di modifiche degli scaffali) mostrati senza un piccolo segno di spunta rosso e dovrai escludere e includili di nuovo per farli aggiungere. Se qualcuno ha una soluzione alternativa a questo problema, mi piacerebbe sapere che l'aggiornamento non sembra funzionare.
Le informazioni sullo scaffale includono il percorso specifico a cui vanno. Sfortunatamente non conosco alcun modo automatico per liberarmi di una posizione diversa da quella in cui era accantonato. Le volte in cui volevo farlo, dovevo controllare i file equivalenti nel nuovo ramo, estranei al vecchio ramo, quindi copiarli manualmente.
EDIT: Beh, immagino che lo stavo facendo nel modo più duro. Dovrò provare la soluzione di Curt. :)
Ho trascorso un bel po 'di tempo per farlo e avevo pochi problemi da superare. È possibile ma qui pochi problemi e poche regole da seguire per avois questi problemi
Errore:
impossibile determinare l'area di lavoro
Questo particolare problema è stato risolto eseguendo il comando dalla cartella radice del ramo sorgente . Ciò è contrario ad alcune risposte su SO in cui si dice di usare "target" branch - no, usa " source " ;:
cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"
Il secondo numero è apparso dopo questo. Sembra che non possa connettersi al server TFS. Quello che ho realizzato, ho più VS installati e collegati a diversi server TFS. Stavo usando VS12 e avevo spazio di lavoro e connessione al server. Ma non mi ero reso conto che la stessa connessione doveva essere replicata in VS13 affinché TFPT2013 funzionasse. Si collega allo stesso server e spazio di lavoro.
Ho anche provato a farlo usando TFPT2015 ma l'ho installato e non ha installato TFPT.exe quindi è stato inutile. Quindi ho provato da TFPT2013 a TFS2015 e ha funzionato per questo particolare comando. Mi chiedo, perché no, se VS12 / 13 funziona bene contro TFS2015?
Per riassumere
- Usa CMD o DevCMD - non importa
- esegui comando dalla sorgente cartella radice del ramo
- verifica la connessione di Team Explorer Server per VS specifici
- TF Power Tools 2013 funziona con TFS v15, almeno l'opzione migra funziona