Comando Rollback (Controllo della versione di Team Foundation)

È possibile utilizzare questo comando per eseguire il rollback degli effetti di uno o più insiemi di modifiche su uno o più elementi inclusi nel controllo della versione. Questo comando non rimuove gli insiemi di modifiche dalla cronologia delle versioni di un elemento. Questo comando crea invece nell'area di lavoro un set di modifiche in sospeso che negano gli effetti degli insiemi di modifiche specificati.

Autorizzazioni necessarie

Per utilizzare questo comando, è necessario che le autorizzazioni Lettura, Estrai, e Archivia siano impostate su Consenti. Per ulteriori informazioni, vedere Autorizzazioni per Team Foundation Server.

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

Argomento

Oggetto di descrizione

ChangesetFrom~ChangesetTo

Utilizzare questo argomento con l'opzione /changeset per specificare i set di modifiche di cui si desidera eseguire il rollback. È possibile specificare l'insieme di modifiche in uno dei seguenti modi:

  • Un solo insieme di modifiche

    Esempio: /changeset:C11

  • Intervallo di insiemi di modifiche

    Esempio: /changeset:C7~C20

  • Una data

    Esempio: /changeset:D09/30/09

  • Intervallo di date

    Esempio:/changeset:D09/23/09~D10/07/09

  • Insieme di modifiche più recente

    Esempio: /changeset:Tip o /changeset:T

ItemSpec

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

Per ulteriori informazioni su come Team Foundation analizza le specifiche degli elementi, vedere Sintassi della riga di comando (controllo della versione).

NotaNota
È possibile specificare più di un argomento Itemspec.

VersionSpec

Valore fornito dall'utente per le opzioni /version e /toversion.

Utilizzare questo argomento con l'opzione /toversion per ripristinare un file al suo stato in un set di modifiche specifico. È possibile specificare la versione in uno dei seguenti modi:

  • Un solo insieme di modifiche

    Esempio: /toversion:C32

  • Una data (a mezzanotte)

    Esempio: /toversion:D06/19/09

  • Data e ora.

    Esempio: /toversion:D06/19/09T14:32

  • Etichetta.

    Esempio: /toversion:LTestLabel

  • La versione presente nell'area di lavoro mappata alla directory corrente.

    Esempio: /toversion:W

  • Versione in un'area di lavoro specifica

    Esempio: /toversion:WResolveRIConflicts;AKerry

Per ulteriori informazioni su come Team Foundation analizza gli oggetti versionspec, vedere Sintassi della riga di comando (controllo della versione).

Opzione

Oggetto di descrizione

/changeset

Utilizzare questo argomento per specificare uno o più elementi di cui si desidera annullare le modifiche.

/keepmergehistory

Questa opzione ha effetto solo se uno o più insiemi di modifiche dei quali si esegue il rollback includono una modifica branch o merge. Specificare questa opzione se si desidera effettuare unioni future tra lo stesso database di origine e lo stesso database di destinazione per escludere le modifiche delle quali si esegue il rollback.

Per ulteriori informazioni, vedere Esempio: l'opzione /keepmergehistory.

/lock

Specificare questa opzione per impedire ad altri utenti di archiviare o estrarre elementi fino a quando il rollback di tutte le modifiche associate non è stato completato. Per ulteriori informazioni, vedere Informazioni sui tipi di blocco.

Opzioni di blocco

  • Nessuna correzione

    Default. Non viene applicato alcun blocco. Se il file di cui si sta eseguendo il rollback è stato bloccato, questa opzione rimuove il blocco.

  • Checkin

    Blocca un elemento fino al rilascio del blocco mediante un'operazione di archiviazione. Altri utenti possono estrarre gli elementi specificati, ma non archiviare revisioni in file bloccati fino a quando il blocco non viene rimosso. Non è possibile bloccare un file che è già bloccato.

  • Checkout

    Impedisce agli utenti di archiviare o estrarre un elemento bloccato fino a quando il blocco non viene rimosso mediante un'operazione di archiviazione.

/login

Per informazioni su questa opzione, vedere Opzioni della riga di comando.

/noprompt

Disattiva la visualizzazione delle finestre di dialogo che verrebbero altrimenti visualizzate durante questa operazione.

/recursive

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

/toversion

Specificare questa opzione per ripristinare un file al suo stato in un insieme di modifiche specifico. Quando si utilizza questa opzione, si nega l'effetto di tutti i set di modifiche applicate dalla versione specificata.

/version

Consente di specificare la versione corrente di file e cartelle a cui di desidera eseguire il rollback.

Note

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

Se si esegue il rollback di questa modifica...

... vengono eseguiti il ripristino dello stato precedente e la seguente modifica aggiuntiva

add, branch o undelete

delete

edit

edit

encoding

encoding

rename/move

rename/move

delete

undelete

merge

Modifica che crea l'immagine in negativo delle modifiche unite nel ramo corrente.

Nell'elenco seguente vengono forniti alcuni esempi di modifiche che sono il risultato del comando Rollback:

  • Se si sta eseguendo il rollback di un insieme di modifiche in cui si è verificata una modifica add , l'operazione di rollback provoca una modifica rollback e una modifica delete.

  • Se si sta eseguendo il rollback di un insieme di modifiche 521 in cui si è verificata una modifica edit, l'operazione di rollback causa una modifica rollback e una modifica edit, che negano le modifiche incluse dalla modifica edit nell'insieme di modifiche 521.

  • Nell'insieme di modifiche 132, è stata effettuata l'unione da $/BranchA/File1.txt a $/BranchB/File1.txt. Le modifiche incluse in tale unione includevano modifiche edit negli insiemi di modifiche 92 e 104. Nell'insieme di modifiche 162 viene eseguito il rollback dell'insieme di modifiche 132, che comporta una modifica rollback e una modifica edit al file $/BranchB/File1.txt, che impedisce le modifiche negli insiemi di modifiche 92 e 104.

Codici di uscita

Nella tabella seguente vengono visualizzati i codici di uscita dopo l'esecuzione del comando tf rollback.

Codice di uscita

Oggetto di descrizione

0

L'operazione ha consentito di ripristinare tutti gli elementi in modo corretto.

1

L'operazione ha consentito di ripristinare almeno un elemento in modo corretto ma non è stato possibile ripristinare altri elementi.

100

L'operazione non ha consentito di ripristinare alcun elemento.

Esempi

Nell'esempio seguente viene negato l'effetto dell'insieme di modifiche 23 su tutti gli elementi modificati in tale insieme.

c:\workspace> tf rollback /changeset:C23

Nell'esempio seguente viene negato l'effetto dell'insieme di modifiche 23 sul file a.txt.

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

Nell'esempio seguente viene modificato il contenuto di a.txt affinché corrisponda alla versione archiviata con l'insieme di modifiche 23.

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

Nell'esempio seguente viene modificato il contenuto di OurTeamProject affinché corrisponda all'ultimo insieme di modifiche applicato il giorno (o prima della mezzanotte del) 31 agosto 2009.

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

Esempio: l'opzione /keepmergehistory

Quando si esegue il rollback di un insieme di modifiche comprendenti un ramo o un'unione di modifiche, di solito si desidera effettuare unioni future tra lo stesso database di origine e lo stesso database di destinazione per includere tali modifiche. Tuttavia, è possibile utilizzare l'opzione /keepmergehistory se si desidera eseguire unioni future tra la stessa origine e la stessa destinazione per escludere insiemi di modifiche inclusi in una precedente operazione di unione.

Il comando può essere utilizzato ad esempio nella seguente situazione:

  1. Il 30 giugno 2009 si esegue un'unione completa di tutti gli elementi da $/ BranchA/ a $/ BranchB/:

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

    Si archivia questa unione come parte dell'insieme di modifiche 292.

  2. A luglio vengono apportate molte modifiche al file $/BranchA/Util.cs. Queste modifiche vengono incluse negli insiemi di modifiche 297, 301 e 305.

  3. Il 1 agosto 2009 si unisce $/BranchA/Util.cs to $/BranchB/Util.cs:

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

    Si archivia la modifica come parte dell'insieme di modifiche 314. Il risultato di questa operazione è che le modifiche effettuate a $/BranchA/Util.cs negli insiemi di modifiche 297, 301 e 305 si applicano ora anche a $/BranchB/Util.cs.

  4. Una settimana dopo, ci si rende conto che le modifiche eseguite a luglio in $/BranchA/Util.cs non sono appropriate per $/BranchB/Util.cs. È possibile utilizzare il comando di rollback per negare questi cambiamenti. Quando si utilizza il comando di ripristino per eseguire il rollback di una modifica merge o di una modifica branch, è necessario prendere una decisione.

    • Se si desidera che le modifiche apportate a luglio a $/BranchA/Util.cs vengano riapplicate a $/BranchB/Util.cs nelle unioni future, è necessario digitare il seguente comando:

      c:\workspace> tf rollback /changeset:314
      
    • Se si desidera che le modifiche apportate a luglio a $/BranchA/Util.cs non vengano mai riapplicate a $/BranchB/Util.cs nelle unioni future, è necessario digitare il seguente comando:

      c:\workspace> tf rollback /changeset:314 /keepmergehistory
      
  5. Qualche settimana dopo, unire $/ BranchA/ a $/ BranchB/:

    c:\workspace> tf merge $/BranchA $/BranchB
    
    • Se è stata omessa l'opzione /keepmergehistory, la modifica merge applicherà a $/BranchB/Util.cs tutti gli insiemi di modifiche applicati a $/BranchA/Util.cs dall'insieme di modifiche 292, inclusi gli insiemi di modifiche 297, 301 e 305. In altre parole, un'unione futura annullerà la modifica di rollback.

    • Se è stata inclusa l'opzione /keepmergehistory, l'operazione di unione applicherà a $/BranchB/Util.cs tutti gli insiemi di modifiche applicati a $/BranchA/Util.cs dall'insieme di modifiche 292, esclusi gli insiemi di modifiche 297, 301 e 305. In altre parole, un'unione futura non annullerà la modifica di rollback. Il contenuto in BranchA potrebbe quindi non corrispondere al contenuto in BranchB.

Vedere anche

Riferimenti

Comando Merge

Concetti

Operazioni disponibili solo dalla riga di comando (controllo della versione di Team Foundation)

Altre risorse

Comandi dell'utilità della riga di comando Tf