Comando Rollback (controllo della versione di Team Foundation)

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

È possibile usare il comando controllo della versione di Team Foundation (TFVC) tf rollback per eseguire il rollback degli effetti di uno o più insiemi di modifiche in uno o più elementi controllati dalla versione. Questo comando non rimuove gli insiemi di modifiche dalla cronologia delle versioni di un elemento. Questo comando crea invece un set di modifiche in sospeso nell'area di lavoro che nega gli effetti dei set di modifiche specificati.

Prerequisiti

Per usare questo comando, è necessario disporre delle autorizzazioni Lettura, Estrazione e Archiviazione impostate su Consenti. Per altre informazioni, vedere Autorizzazioni tfvc predefinite.

Sintassi

tf rollback /toversion:VersionSpec ItemSpec [/recursive] [/lock:none|checkin|checkout] [/version:versionspec] [/keepmergehistory] [/login:username,[password]] [/noprompt]
tf rollback /changeset:ChangesetFrom~ChangesetTo [ItemSpec] [/recursive] [/lock:none|checkin|checkout] [/version:VersionSpec]
[/keepmergehistory] [/noprompt] [/login:username,[password]]

Parametri

Argomenti

Argomento

Descrizione

<ChangesetFrom>~<ChangesetTo>

Usare questo argomento con l'opzione /changeset per specificare gli insiemi di modifiche di cui si vuole eseguire il rollback. È possibile specificare i set di modifiche nei modi seguenti:

  • Un singolo insieme di modifiche, ad esempio /changeset:C11
  • Intervallo di insiemi di modifiche, ad esempio /changeset:C7~C20
  • Data, ad esempio /changeset:D09/30/09
  • Intervallo di date, ad esempio /changeset:D09/23/09~D10/07/09
  • Set di modifiche più recente o /changeset:Tip/changeset:T

<ItemSpec>

Utilizzare questo argomento per specificare uno o più elementi di cui si vuole eseguire il rollback. Se si usa l'opzione /toversion , è necessario specificare questo argomento.

Per altre informazioni su come tfvc analizza le specifiche degli elementi, vedere Usare i comandi di controllo della versione di Team Foundation.

Nota

È possibile specificare più itemspec argomenti.

<VersionSpec>

Valore fornito dall'utente sia per l'opzione /version che per l'opzione /toversion .

Utilizzare questo argomento con l'opzione /toversion per ripristinare lo stato di un file in un insieme di modifiche specifico. È possibile specificare la versione nei modi seguenti:

  • Un singolo insieme di modifiche, ad esempio /toversion:C32
  • Data a mezzanotte, ad esempio /toversion:D06/19/09
  • Una data e un'ora, ad esempio /toversion:D06/19/09T14:32
  • Un'etichetta, ad esempio /toversion:LTestLabel
  • Versione nell'area di lavoro mappata alla directory corrente. /toversion:W
  • Versione in un'area di lavoro specifica, ad esempio /toversion:WResolveRIConflicts;AKerry

Per altre informazioni sull'analisi del controllo della versione di Team Foundation, versionspecvedere Usare i comandi di controllo della versione di Team Foundation.

Opzioni

Opzione

Descrizione

/changeset

Usare questa opzione per specificare uno o più insiemi di modifiche specifici da negare.

/keepmergehistory

Questa opzione ha effetto solo se uno o più insiemi di modifiche di cui si esegue il rollback includono un ramo o una modifica di tipo merge. Specificare questa opzione se si desidera unire in futuro tra la stessa origine e la stessa destinazione per escludere le modifiche di cui si esegue il rollback.

/lock

Specificare questa opzione per impedire ad altri utenti di eseguire l'archiviazione o l'estrazione di elementi fino a quando non si completa il rollback di tutte le modifiche associate. Per altre informazioni, vedere Informazioni sui tipi di blocco.

Opzioni di blocco:

  • None. Predefinito. Non viene applicato alcun blocco. Se il file di cui si esegue il rollback è stato bloccato, questa opzione rimuove il blocco.
  • Checkin. Blocca un elemento fino a quando non si rilascia il blocco eseguendo un'archiviazione. Altri utenti possono controllare l'elemento specificato, ma gli utenti non possono archiviare le revisioni fino a quando il blocco non viene rimosso. Non è possibile bloccare un file già bloccato.
  • Checkout. Impedisce agli utenti di archiviare o archiviare un elemento bloccato fino a quando non si rimuove il blocco eseguendo un'archiviazione.

/login

Per informazioni su questa opzione, vedere Usare le opzioni per modificare le funzioni di un comando.

/noprompt

Utilizzare questa opzione per eliminare tutte le finestre di dialogo che altrimenti verranno visualizzate durante questa operazione.

/recursive

Specificare questa opzione se si desidera che l'operazione includa elementi nelle sottocartelle.

/toversion

Specificare questa opzione per ripristinare lo stato di un file in un insieme di modifiche specifico. Quando si usa questa opzione, si nega l'effetto di tutti i set di modifiche applicati dopo la versione specificata.

/version

Specifica la versione corrente dei file e delle cartelle di cui si vuole eseguire il rollback.

Osservazioni:

Il tf rollback comando nega l'effetto di ogni insieme di modifiche specificato per ogni elemento specificato. Nella tabella seguente viene elencato il modo in cui l'operazione nega ogni tipo di modifica.

Tipo di modifica di cui è stato eseguito il rollback Tipo di modifica del rollback
aggiungere, diramare o annullare l'eliminazione delete
edit edit
encoding encoding
rinomina/sposta rinomina/sposta
delete annulla eliminazione
merge Modificare che nega le modifiche unite nel ramo corrente.

L'elenco seguente fornisce alcuni esempi di modifiche risultanti dal rollback comando :

  • Si esegue il rollback di un insieme di modifiche in cui si è verificata una modifica aggiunta. L'operazione di rollback causa una modifica di rollback e una modifica di eliminazione .

  • Si esegue il rollback del set di modifiche 521 in cui si è verificata una modifica . L'operazione di rollback causa una modifica di rollback e una modifica che nega la modifica nel set di modifiche 521.

  • Nel set di modifiche 132 è stato eseguito il merge da $/BranchA/File1.txt a $/BranchB/File1.txt. Le modifiche apportate a tale unione includono modifiche alle modifiche apportate ai set di modifiche 92 e 104. Nel set di modifiche 162 si esegue il rollback del set di modifiche 132, che comporta una modifica di rollback e una modifica apportata a $/BranchB/File1.txt che nega le modifiche apportate ai set di modifiche 92 e 104.

Codici di uscita

Dopo l'esecuzione del tf rollback comando viene visualizzato un codice di uscita dalla tabella seguente.

Codice di uscita Descrizione
0 Operazione di cui è stato eseguito il rollback di tutti gli elementi.
1 L'operazione ha eseguito il rollback di almeno un elemento, ma non è stato possibile eseguire il rollback di uno o più elementi.
100 L'operazione non è riuscita a eseguire il rollback di elementi.

Esempi

Nell'esempio seguente viene negato l'effetto del set di modifiche 23 su tutti gli elementi modificati nel set di modifiche:

c:\workspace> tf rollback /changeset:C23

Nell'esempio seguente viene negato l'effetto del set di modifiche 23 nel file a.txt:

c:\workspace> tf rollback /changeset:C23 a.txt

L'esempio seguente modifica il contenuto di a.txt in modo che corrisponda alla versione archiviata con il set di modifiche 23:

c:\workspace> tf rollback /toversion:C23 a.txt

L'esempio seguente modifica il contenuto di OurTeamProject in modo che corrisponda all'ultimo set di modifiche applicato alla mezzanotte del 31 agosto 2009:

c:\workspace> tf rollback /toversion:D08/31/2009 /recursive $/OurTeamProject/

Esempio di opzione /keepmergehistory

Quando si esegue il rollback di un insieme di modifiche che include un ramo o una modifica di tipo merge, in genere si desidera unire future tra la stessa origine e la stessa destinazione per includere tali modifiche. Tuttavia, è possibile usare l'opzione /keepmergehistory se si desidera unire in futuro tra la stessa origine e la stessa destinazione per escludere i set di modifiche inclusi in un'operazione di unione precedente. Ad esempio:

  1. Il 30 giugno 2009 si esegue un merge completo di tutti gli elementi da $/BranchA/ a $/BranchB/.

    c:\workspace> tf merge $/BranchA $/BranchB
    

    L'unione viene archiviata come parte del set di modifiche 292.

  2. A luglio si apportano diverse modifiche $/BranchA/Util.cs. Queste modifiche sono incluse nei set di modifiche 297, 301 e 305.

  3. Il 1° agosto 2009 si unisce $/BranchA/Util.cs a $/BranchB/Util.cs.

    c:\workspace> tf merge $/BranchA/Util.cs $/BranchB/Util.cs
    

    La modifica viene archiviata come parte del set di modifiche 314. Il risultato di questa operazione è che le modifiche apportate nei set di modifiche 297, 301 e 305 a $/BranchA/Util.cs vengono ora applicate anche a $/BranchB/Util.cs.

  4. Una settimana dopo, ci si rende conto che le modifiche apportate a $/BranchA/Util.cs a luglio non sono appropriate per $/BranchB/Util.cs. È possibile usare il rollback comando per negare queste modifiche. Quando si usa il comando per eseguire il rollback rollback di una modifica di tipo merge o di un ramo , è necessario prendere una decisione.

    • Se si desidera che le modifiche apportate a $/BranchA/Util.cs nel mese di luglio vengano applicate nuovamente a $/BranchB/Util.cs in future merge, immettere il comando seguente:

      c:\workspace> tf rollback /changeset:314
      
    • Se si desidera che le modifiche apportate a $/BranchA/Util.cs nel mese di luglio non vengano mai riapplicate a $/BranchB/Util.cs in future merge, immettere il comando seguente:

      c:\workspace> tf rollback /changeset:314 /keepmergehistory
      
  5. Alcune settimane dopo, si unisce $/BranchA/ in $/BranchB/.

    c:\workspace> tf merge $/BranchA $/BranchB
    
    • Se si omette l'opzione /keepmergehistory durante il rollback, la modifica di merge si applica a $/BranchB/Util.cs tutti i set di modifiche applicati a $/BranchA/Util.cs dal set di modifiche 292, inclusi i set di modifiche 297, 301 e 305. In altre parole, l'unione annulla la modifica di rollback.

    • Se è stata inclusa l'opzione /keepmergehistory durante il rollback, l'operazione di merge si applica a $/BranchB/Util.cs tutti i set di modifiche applicati a $/BranchA/Util.cs dopo il set di modifiche 292, esclusi i set di modifiche 297, 301 e 305. In altre parole, l'unione non annulla la modifica di rollback. Di conseguenza, il contenuto di BranchA potrebbe non corrispondere al contenuto in BranchB.