Поделиться через


Команда rollback (управление версиями в Team Foundation)

Эту команду можно использовать для отката последствий одного или нескольких наборов изменений в одном или нескольких элементов системы управления версиями. Эта команда не удаляет наборы изменений из журнала версий элемента. Вместо этого команда создает в рабочей области набор ожидающих изменений, который инвертировать эффект указанных наборов изменений.

Необходимые разрешения

Для использования этой команды разрешения Чтение, Извлечение и Возврат должны иметь значение Разрешить. Дополнительные сведения см. в разделе Разрешения 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]]

Параметры

Аргумент

Описание

ChangesetFrom~ChangesetTo

Этот аргумент используется с параметром /changeset для указания наборов изменений, которые требуется откатить. Можно задать наборы изменений одним из следующих способов:

  • Единственный набор изменений

    Пример: /changeset:C11

  • Диапазон наборов изменений

    Пример: /changeset:C7~C20

  • Дата

    Пример: /changeset:D09/30/09

  • Диапазон дат

    Пример/changeset:D09/23/09~D10/07/09

  • Самый последний набор изменений

    Пример. /changeset:Tip или /changeset:T

ItemSpec

Этот аргумент используется для указания одного или нескольких элементов, которые требуется откатить. Если используется параметр /toversion, необходимо указать этот аргумент.

Дополнительные сведения о том, как Team Foundation анализирует спецификации элементов, см. в разделе Синтаксис командной строки (управление версиями).

ПримечаниеПримечание
Можно указать более одного аргумента Itemspec.

VersionSpec

Предоставляемое пользователем значение обоих параметров /version и /toversion.

Используйте этот аргумент с параметром /toversion, чтобы вернуть файл в состояние определенного набора изменений. Версию можно задать одним из следующих способов:

  • Единственный набор изменений

    Пример: /toversion:C32

  • Дата (полночь)

    Пример: /toversion:D06/19/09

  • Дата и время.

    Пример /toversion:D06/19/09T14:32

  • Метка

    Пример: /toversion:LTestLabel

  • Версия в рабочей области, которая сопоставлена с текущим каталогом

    Пример: /toversion:W

  • Версия в конкретной рабочей области

    Пример: /toversion:WResolveRIConflicts;AKerry

Дополнительные сведения о том, как Team Foundation анализирует спецификации версий, см. в разделе Синтаксис командной строки (управление версиями).

Параметр

Описание

/changeset

Этот параметр используется для указания одного или нескольких конкретных наборов изменений, которые требуется отменить.

/keepmergehistory

Этот параметр действует только в том случае, если один или несколько наборов изменений, для которых выполняется откат, включают изменение branch или merge. Укажите этот параметр, если требуется, чтобы будущие объединения одного и того же источника и такого же целевого объекта не содержали изменений при выполнении отката.

Дополнительные сведения см. в примере Пример. Параметр /keepmergehistory.

/lock

Укажите этот параметр, чтобы запретить другим пользователям возврат или извлечение элементов до тех пор, пока не будет завершен откат всех соответствующих изменений. Дополнительные сведения см. в разделе Основные сведения о типах блокировки.

Параметры блокировки

  • Нет

    По умолчанию. Блокировка не применяется. Если файл, для которого выполняется откат, заблокирован, то этот параметр удаляет блокировку.

  • Checkin

    Блокирует элемент до отмены блокировки с помощью выполнения возврата. Другие пользователи могут извлекать указанные элементы, но не могут возвращать исправления до снятия блокировки. Нельзя заблокировать файл, который уже был заблокирован.

  • Checkout

    Запрещает пользователям возврат и извлечение заблокированного элемента до снятия блокировки при выполнении возврата.

/login

Дополнительные сведения об этом параметре см. в разделе Параметры командной строки.

/noprompt

Отключает вывод всех диалоговых окон, которые могут отображаться в ходе этой операции.

/recursive

Задайте этот параметр, если требуется, чтобы в операции использовались элементы во вложенных папках.

/toversion

Задайте этот параметр, чтобы вернуть файл в состояние определенного набора изменений. При использовании этого параметра отменяются все наборы изменений, примененные начиная с указанной пользователем версии.

/version

Указывает текущую версию файлов и папок, которые требуется восстановить.

Заметки

Команда tf rollback отменяет эффект каждого набора изменений, указанного для каждого элемента. В следующей таблице указано, как операция меняет каждый тип изменения на противоположный.

При выполнении отката этого изменения…

... сделан откат изменений и внесены следующие дополнительные изменения

add, branch или undelete

delete

edit

edit

encoding

encoding

rename/move

rename/move

delete

undelete

merge

Изменение, которое отменяет все изменения, слитые в текущей ветви.

Ниже приведены некоторые примеры изменений, являющиеся результатом отката команды.

  • Если выполняется откат набора изменений, в котором произошло изменение add , то операция отката вызывает изменение rollback и изменение delete.

  • Если выполняется откат набора изменений 521, в котором произошло изменение edit, то операция отката вызывает изменение rollback и изменение edit , которые отменяют изменения, включенные в изменение edit набора изменений 521.

  • В наборе изменений 132 выполнялось слияние от $/BranchA/File1.txt до $ / BranchB/File1.txt. В число изменений, включенных в это слияние, входят изменения edit из наборов изменений 92 и 104. В наборе изменений 162 выполнялся откат набора изменений 132, что привело к изменениям rollback и edit в $/BranchB/File1.txt и отрицанию изменений редактирования в наборах изменений 92 и 104.

Коды выхода

Коды выхода в следующей таблице отображаются после выполнения команды tf rollback.

Код выхода

Описание

0

Откат всех элементов выполнен успешно.

1

Выполнен откат по крайней мере одного элемента, но не удалось восстановить один или несколько элементов.

100

Операции не удалось выполнить откат элементов.

Примеры

В следующем примере эффект набора изменений 23 меняется на противоположный для всех элементов, которые были изменены в этом наборе.

c:\workspace> tf rollback /changeset:C23

В следующем примере эффект набора изменений 23 для файла a.txt меняется на противоположный.

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

В следующем примере изменяется содержимое файла a.txt в соответствии с версией, которая была извлечена с набором изменений 23.

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

В следующем примере изменяется содержимое OurTeamProject в соответствии с последним набором изменений, который был применен до полуночи на 31 августа 2009 года включительно.

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

Пример. Параметр /keepmergehistory

При откате набора изменений, включающего ветвление или слияние, обычно эти изменения требуется включать в будущие слияния между тем же источником и целевым объектом. Однако если планируются будущие слияния между одними и теми же источником и целевым объектом, чтобы исключить наборы изменений, которые были выявлены в прошлой операции слияния, можно использовать параметр /keepmergehistory.

Например, эту команду можно использовать в следующих случаях:

  1. 30 июня 2009 г. выполняется полное слияние всех элементов из $ /BranchA/ в $ / BranchB /:

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

    Слияние возвращается как часть набора изменений 292.

  2. В июле внесены некоторые изменения в $ / BranchA/Util.cs. Эти изменения заключены в наборы изменений 297, 301 и 305.

  3. 1 августа 2009 г. $/BranchA/Util.cs объединяется с $/BranchB/Util.cs:

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

    Изменение возвращается как часть набора изменений 314. В результате этой операции изменения, внесенные в наборах изменений 297, 301 и 305 относительно файла $/BranchA/Util.cs, теперь также применяются к $/BranchB/Util.cs.

  4. Через неделю можно будет понять, что изменения, внесенные в $/BranchA/Util.cs в июле, не подходят для $ / BranchB/Util.cs. Для отмены этих изменений можно использовать команду отката. При использовании команды отката для отката изменений merge или branch необходимо принять решение.

    • Если требуется, чтобы изменения, сделанные в июле в файле $/BranchA/Util.cs, применялись к $/BranchB/Util.cs при будущих слияниях, необходимо ввести следующую команду:

      c:\workspace> tf rollback /changeset:314
      
    • Если требуется, чтобы изменения, сделанные в июле в файле $/BranchA/Util.cs, никогда не применялись к $/BranchB/Util.cs при будущих слияниях, необходимо ввести следующую команду:

      c:\workspace> tf rollback /changeset:314 /keepmergehistory
      
  5. Несколько недель спустя выполняется слияние $/BranchA/ в $/ BranchB/:

    c:\workspace> tf merge $/BranchA $/BranchB
    
    • Если параметр /keepmergehistory опущен, то изменение merge будет применять к $/BranchB/Util.cs все наборы изменений, которые были применены к $/BranchA/Util.cs после набора изменений 292, включая наборы изменений 297, 301 и 305. Другими словами, будущее слияние будет отменять изменение rollback.

    • Если включен параметр /keepmergehistory, то операция слияния применит к $/BranchB/Util.cs все наборы изменений, которые были применены к $/BranchA/Util.cs после набора изменений 292, исключая наборы изменений 297 301 и 305. Другими словами, будущие слияния не будут отменять изменение отката. Соответственно, контент на BranchA может не соответствовать контенту на BranchB.

См. также

Ссылки

Команда merge

Основные понятия

Операции, доступные только с помощью командной строки (система управления версиями Team Foundation)

Другие ресурсы

Команды служебной программы командной строки "tf"