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)

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top