Команда 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 для указания наборов изменений, которые требуется откатить. Можно задать наборы изменений одним из следующих способов:
|
ItemSpec |
Этот аргумент используется для указания одного или нескольких элементов, которые требуется откатить. Если используется параметр /toversion, необходимо указать этот аргумент. Дополнительные сведения о том, как Team Foundation анализирует спецификации элементов, см. в разделе Синтаксис командной строки (управление версиями). ![]()
Можно указать более одного аргумента Itemspec.
|
VersionSpec |
Предоставляемое пользователем значение обоих параметров /version и /toversion. Используйте этот аргумент с параметром /toversion, чтобы вернуть файл в состояние определенного набора изменений. Версию можно задать одним из следующих способов:
Дополнительные сведения о том, как Team Foundation анализирует спецификации версий, см. в разделе Синтаксис командной строки (управление версиями). |
Параметр |
Описание |
---|---|
/changeset |
Этот параметр используется для указания одного или нескольких конкретных наборов изменений, которые требуется отменить. |
/keepmergehistory |
Этот параметр действует только в том случае, если один или несколько наборов изменений, для которых выполняется откат, включают изменение branch или merge. Укажите этот параметр, если требуется, чтобы будущие объединения одного и того же источника и такого же целевого объекта не содержали изменений при выполнении отката. Дополнительные сведения см. в примере Пример. Параметр /keepmergehistory. |
/lock |
Укажите этот параметр, чтобы запретить другим пользователям возврат или извлечение элементов до тех пор, пока не будет завершен откат всех соответствующих изменений. Дополнительные сведения см. в разделе Основные сведения о типах блокировки. Параметры блокировки
|
/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.
Например, эту команду можно использовать в следующих случаях:
30 июня 2009 г. выполняется полное слияние всех элементов из $ /BranchA/ в $ / BranchB /:
c:\workspace> tf merge $/BranchA $/BranchB
Слияние возвращается как часть набора изменений 292.
В июле внесены некоторые изменения в $ / BranchA/Util.cs. Эти изменения заключены в наборы изменений 297, 301 и 305.
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.
Через неделю можно будет понять, что изменения, внесенные в $/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
Несколько недель спустя выполняется слияние $/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.
См. также
Ссылки
Основные понятия
Операции, доступные только с помощью командной строки (система управления версиями Team Foundation)