Come si ripristina un check-in TFS?


92

Vorrei ripristinare una modifica che ho apportato di recente in TFS. In Subversion, questo era abbastanza semplice. Tuttavia, sembra essere un incredibile mal di testa in TFS:

Opzione 1: ottieni la versione precedente

  1. Ottieni manualmente la versione precedente di ogni file
  2. Controlla per la modifica
  3. Fallito: il checkout (in VS2008) mi obbliga a ottenere l'ultima versione

Opzione 2: ottieni TFS Power Tools

  1. Scarica Team Foundation Power Tools
  2. Emettere il comando di rollback dalla riga cmd
  3. Fallito: non funzionerà se sono presenti altre modifiche in sospeso

Opzione 3: annullare manualmente le modifiche

  1. annullare manualmente le mie modifiche, quindi eseguire il commit di un nuovo changeset

Domanda

Come si ripristina un precedente changeset in TFS?


2
VSS non dispone di rollback. Hanno un'altra caratteristica che sembra essere chiamata "rollback" ma in termini TFS è davvero un Destroy. (a) puoi farlo solo dalla punta; non funzionerà se sono state archiviate ulteriori modifiche successive a quella di cui si desidera eseguire il rollback (b) RIMUOVE PERMANENTEMENTE le modifiche dal database
Richard Berg

1
Oh, quanto desidero la facilità del rollback VSS.
Greg

2
Di recente mi sono imbattuto in questo problema: perché diavolo è così difficile eseguire il rollback in TFS. Il rollback è una delle funzioni di base del controllo del codice sorgente
JohnIdol

2
Questo è troppo doloroso in TFS!
Jon Kragh

1
Passa a Mercurial! Ho cambiato lavoro e mi sono unito a TFS. Da allora ho scritto script PowerShell per farlo sembrare Hg dalla riga di comando.
Sumo

Risposte:


63
  1. Scarica e installa Team Foundation Power Tools .
  2. Apri il prompt dei comandi di Visual Studio
  3. Accedere alla directory nel file system a cui è mappato TFS. Se non lo fai, riceverai un errore "Impossibile determinare l'area di lavoro" quando provi a eseguire il rollback
  4. Assicurati che tutto il resto sia archiviato o accantonato
  5. eseguire tfpt rollback per visualizzare l'interfaccia.
  6. Scegli i gruppi di modifiche di cui desideri eseguire il rollback
  7. Controlla le nuove versioni dei file di cui hai eseguito il rollback

Il grande svantaggio dello strumento è che vorrà aggiornare tutto nel tuo spazio di lavoro prima che tu possa unirlo. Ho aggirato questo problema creando un nuovo spazio di lavoro solo per il rollback che mappato direttamente al punto dell'albero di origine in cui si trovavano i file interessati.

Se hai bisogno di aiuto per capire quali changeset ripristinare, trovo molto utile lo strumento di revisione del codice nell'add-in gratuito Team Foundation Side Kicks .


Puoi provare in questo modo, ma tieni presente che gli strumenti non sono ben documentati e, anche se riesci a superare tutti gli errori, potresti o meno essere in grado di eseguire il rollback. (Ho appena provato per 2 ore)
alchemico

1
Questa tecnica ha funzionato per me. Il suggerimento sullo spazio di lavoro era molto buono (ed è importante se hai a che fare con una grande base di codice).
intasamenti

1
Avviso ... c'è un problema 22 se si utilizzano versioni non corrispondenti di TFS e Visual Studio. Sto usando VS2010 con TFS2008 (un classico caso di IT che non si mette al passo con dev) e TF.EXE con VS2010 ora ha il rollback ... ma non funziona contro TFS2008. E tfpt 2010 ha rimosso il rollback, quindi non posso farlo alla vecchia maniera.
Simon Gillbee

7
il comando 'rollback' è stato spostato da Power Tools per VS2010, quindi ora devi solo digitare 'tf rollback': social.msdn.microsoft.com/Forums/en/tfspowertools/thread/…
Dan

A partire dalla versione agosto 2011 di TFS Power Tools, per eseguire il rollback non è più necessario utilizzare la riga di comando.
joerage

24

La tua soluzione n. 1 funzionerà: 1. ottieni manualmente la versione precedente di ogni file

  1. controlla per la modifica

  2. Archivia il file e ignora le modifiche al server quando richiesto.

Il motivo per cui non è riuscito per te è perché devi avere l'opzione "Scarica l'ultima versione dell'articolo al momento del check-out" attivata. Disattiva questa opzione andando su Strumenti ... Opzioni ... Controllo del codice sorgente ... Visual Studio Tema Foundation Server e deselezionando "Scarica l'ultima versione dell'elemento al momento del check out"

Saluti


2
L'ho fatto in questo modo dopo aver lottato per 2 ore con utensili elettrici e non essere arrivato da nessuna parte ... wtf è con TFS che non supporta questa funzionalità di base ...
alchemico

La funzionalità è stata aggiunta a TFS 2010 / Visual Studio 2010.
Robaticus

2
Per essere chiari, questo non è un vero rollback. Sta ottenendo una versione precedente. Non è la stessa cosa.
Ryan Cromwell

+1 per aver segnalato il problema con l' impostazione Ottieni l'ultima versione dell'articolo al momento del pagamento!
Sir Crispalot

18

Il rollback è stato spostato da tfpt.exe a tf.exe, lo strumento di controllo della versione di Team Foundation.

TF - Team Foundation Version Control Tool, Version 10.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Rolls back the changes in a single or a range of changesets:
tf rollback /changeset:changesetfrom~changesetto [itemspec] [/recursive]
            [/lock:none|checkin|checkout] [/version:versionspec]
            [/keepmergehistory] [/noprompt] [/login:username,[password]]

tf rollback /toversion:versionspec itemspec [/recursive]
            [/lock:none|checkin|checkout] [/version:versionspec]
            [/keepmergehistory] [/noprompt] [/login:username,[password]]

1
C'è un modo per farlo direttamente da Visual Studio?
Kyle Delaney

14

Sono disponibili due opzioni per eseguire il rollback (ripristino) di un changeset in TFS 2010 Version Control. La prima opzione è utilizzare l'interfaccia utente (se è installata l'ultima versione di TFS 2010 Power Tools ).

Set di modifiche di rollback nell'interfaccia utente per TFS 2010

L'altra opzione è utilizzare l'applicazione della riga di comando di controllo della versione TFS 2010:

tf.exe rollback

Ho informazioni su entrambi gli approcci nel mio post sul blog disponibile qui: http://www.edsquared.com/2010/02/02/Rollback+Or+Undo+A+Changeset+In+TFS+2010+Version+Control.aspx


14

Un altro modo per far funzionare la tua opzione 1 è invertire l'ordine dei passaggi:

  1. Controlla gli articoli
  2. Ottieni la versione specifica della vecchia versione
  3. Effettua il check-in (ignorando la finestra di dialogo "La versione del server di avviso è più recente") OPPURE nella sezione dei conflitti della finestra di dialogo Modifiche in sospeso risolvi i conflitti mantenendo la versione locale.

Funzionerà anche se hai impostato Ottieni l'ultimo al checkout.


1
Non ha funzionato per me. Ma ciò deve essere dovuto al fatto che alcune capocchia di spillo hanno impostato TFS con politiche stupide.
SHODAN

5

Per riferimento, se si utilizza TFS 2010 , ecco il collegamento al manuale del comando di rollback (controllo della versione di Team Foundation) .

Per eseguire il rollback di un particolare changeset , vai al Prompt dei comandi di Visual Studio (2010) , vai alla directory dell'area di lavoro TFS e digita il comando:

tf rollback /changeset:C12345

dov'è il 12345tuo numero di changeset. Dopo questo, ti mostrerà il registro di ciò che ha fatto e dovrai risolvere i conflitti di unione.



4

Non avere un'opzione di rollback è in realtà una caratteristica di TFS;)

Per ripristinare le modifiche:

  1. Controlla la versione specifica delle modifiche che desideri
  2. Modifica-> Seleziona tutto-> Copia il testo nel file
  3. Controlla qualunque versione del file sia sul server
  4. Incolla il file e fai il check-in.

E ora vengono salvati anche tutti i tuoi changeset intermedi prima del rollback! Che grande caratteristica!


All'inizio ho pensato che fosse sarcastico, ma questa soluzione potrebbe effettivamente funzionare per quelli di noi che non sono abbastanza fortunati da aver ottenuto il permesso di rollback.
EBarr

A meno che non siano state successivamente apportate modifiche agli stessi file che si desidera effettivamente conservare.
Robert Jeppesen

Grezzo ma questo è stato l'unico modo in cui posso eseguirlo in TFS. Se eseguo un checkout, recupero la vecchia versione TFS si unirà automaticamente all'ultima versione ogni volta che tento di controllarla nuovamente.
Steve

1

Se hai eseguito 1 check-in e vuoi semplicemente annullarlo, è associato un changeset #. Fai una cronologia sulla cartella in questione per vedere il changeset non valido. Aprilo per vedere i dettagli (tutti i file modificati, ecc.).

Credo che tu possa ripristinare o annullare un changeset da quella schermata, ma il mio Visual Studio si è bloccato quando ho provato a farlo. / sigh - Condivido decisamente il tuo dolore.

Dove posso eseguire il downmod di TFS su questo sito?


No, il rollback dell'interfaccia utente della cronologia è stato aggiunto solo in TFS 2010.
Richard Berg,


1

Ben Scheirman - la finestra di dialogo Dettagli changeset non ha funzionalità di rollback.


1

Un'altra opzione è TFSPlus . Questo componente aggiuntivo di Visual Studio aggiunge (tra gli altri) il comando Ottieni questa versione alla finestra della cronologia. Se hai estratto il file, lo sostituirà con quella versione. Se in seguito esegui un check-in, eseguirai effettivamente un rollback a quella versione.

Tuttavia, funziona su singoli file anziché su set di modifiche completi.



1

Ottieni una versione specifica

Nel menu a discesa Tipo di versione selezionare Tipo come set di modifiche

Usa il pulsante Changeset ... per trovare il tuo changeset o semplicemente digita, se conosci questo numero.

Dopo aver ottenuto lo specifico Changeset.

Check-out

Registrare


0

Nessuna di queste soluzioni ha funzionato abbastanza per me La soluzione di Dave Roberts è stata la più vicina a ciò che ho effettivamente ottenuto. Non ho abilitato Ottieni l'ultima versione dell'elemento al momento del check-out, tuttavia sembra essere un criterio del server.

La mia soluzione è controllare il file per la modifica, ottenere una versione specifica, quindi quando viene rilevato il conflitto utilizzare lo strumento di unione (e unire manualmente nessuna delle modifiche) in modo che il file sia nella condizione in cui era.

Stavo per andare a confrontare con la versione specifica e copiare l'intero file, quindi incollarlo sopra quello vecchio.

Tuttavia dovrebbe esserci un modo più semplice per farlo!


0

La soluzione sopra è per TFS2008. TFS2010 ha una funzione di rollback incorporata. vedere questo articolo per i dettagli.


Tranne che VS2010 (tf) non funziona contro TFS2008 e dal momento che TFPT 2010 non ha più rollback, sei hosed.
Simon Gillbee

0

Installa l' ultima versione di TFS Power Tools (agosto 2011) e puoi semplicemente fare clic con il pulsante destro del mouse su una serie di modifiche e selezionare "Ripristina intero gruppo di modifiche". Non c'è niente di più facile di così.

È disponibile qui: http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f

È accennato in Miglioramenti di Team Explorer nella pagina sopra:

Una novità di questa versione è la possibilità di [..] ripristinare facilmente le modifiche nel controllo della versione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.