Как мне откатить регистрацию TFS?

92

Я хотел бы отменить недавно внесенное мной изменение в TFS. В Subversion это было довольно просто. Однако в TFS это кажется невероятной головной болью:

Вариант 1. Получить предыдущую версию

  1. Получить предыдущую версию каждого файла вручную
  2. Проверить на редактирование
  3. Ошибка - проверка (в VS2008) вынуждает меня получить последнюю версию

Вариант 2: получить TFS Power Tools

  1. Скачать Team Foundation Power Tools
  2. Выдать команду отката из командной строки
  3. Ошибка - не сработает, если есть другие ожидающие изменения.

Вариант 3. Отмена изменений вручную

  1. вручную отменить мои изменения, затем зафиксировать новый набор изменений

Вопрос

Как мне вернуться к предыдущему набору изменений в TFS?

Джейсон
источник
2
VSS не имеет отката. У них есть еще одна функция, которая называется «откат», но в терминах TFS это действительно Destroy. (а) это можно сделать только с наконечника; он не сработает, если после того, которое вы хотите откатить, были проверены какие-либо дополнительные изменения. (б) он НАСТОЯЩИЙ УДАЛЯЕТ изменения из базы данных
Ричард Берг
1
Ох, как я жажду простоты отката VSS.
Грег
2
Недавно я наткнулся на эту проблему - какого черта так сложно откатиться в TFS.
Откатить
2
В TFS это слишком болезненно!
Джон Краг,
1
Переходите на Mercurial! Я сменил работу и подключился к TFS. С тех пор я пишу сценарии PowerShell, чтобы из командной строки казалось, что это Hg.
Сумо

Ответы:

63
  1. Загрузите и установите Team Foundation Power Tools .
  2. Откройте командную строку Visual Studio.
  3. Перейдите в каталог файловой системы, с которой сопоставлен TFS. Если вы этого не сделаете, при попытке отката вы получите сообщение об ошибке «Невозможно определить рабочую область».
  4. Убедитесь, что все остальное зарегистрировано или отложено
  5. запустите tfpt rollback, чтобы открыть интерфейс.
  6. Выберите наборы изменений, которые нужно откатить
  7. Проверьте новые версии файлов, которые вы откатили

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

Если вам нужна помощь в определении того, какие наборы изменений следует откатить, я считаю очень полезным инструмент проверки кода в бесплатной надстройке Team Foundation Side Kicks .

Слон
источник
Вы можете попробовать этот способ, но будьте осторожны, инструменты плохо документированы, и даже если вы сможете преодолеть все ошибки, вы можете или не сможете действительно выполнить откат. (Я просто пытался в течение 2 часов)
алхимический
1
У меня эта техника сработала. Предложение рабочей области было очень хорошим (и важно, если вы имеете дело с большой базой кода).
Cloggins
1
Предупреждение ... есть уловка 22, если вы используете несовпадающие версии TFS и Visual Studio. Я использую VS2010 с TFS2008 (классический случай, когда ИТ не догоняет разработчика), а TF.EXE с VS2010 теперь имеет откат ... но он не работает с TFS2008. А в tfpt 2010 удален откат, поэтому я не могу сделать это по-старому.
Саймон Гиллби
7
команда 'rollback' была перемещена из Power Tools для VS2010, поэтому теперь вам просто нужно ввести 'tf rollback': social.msdn.microsoft.com/Forums/en/tfspowertools/thread/…
Дэн,
Начиная с версии TFS Power Tools от августа 2011 года, для отката вам больше не нужно использовать командную строку.
Joerage
24

Ваше решение №1 будет работать: 1. вручную получить предыдущую версию каждого файла

  1. проверить для редактирования

  2. Зарегистрируйте файл и игнорируйте изменения сервера при появлении запроса.

Причина, по которой это не удалось, заключается в том, что у вас должна быть включена опция «Получить последнюю версию элемента при оформлении заказа». Отключите этот параметр, перейдя в Инструменты ... Параметры ... Управление исходным кодом ... Visual Studio Tema Foundation Server и сняв флажок "Получать последнюю версию элемента при оформлении"

Ура

Happer
источник
2
Просто сделал это после двух часов борьбы с электроинструментами и никуда не денешься ... черт возьми, TFS не поддерживает эту базовую функциональность ...
alchemical
Функциональность добавлена ​​в TFS 2010 / Visual Studio 2010.
Робатикус,
2
Чтобы было ясно, это не настоящий откат. Становится более старая версия. Не то же самое.
Райан Кромвель
+1 за указание на проблему с настройкой Получить последнюю версию элемента при оформлении заказа!
Сэр Криспалот
18

Откат перенесен с tfpt.exe на tf.exe, инструмент управления версиями 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
Есть ли способ сделать это напрямую из Visual Studio?
Кайл Делани
14

У вас есть два варианта отката (возврата) набора изменений в TFS 2010 Version Control. Первый вариант - использование пользовательского интерфейса (если у вас установлена ​​последняя версия TFS 2010 Power Tools ).

Откат изменения в пользовательском интерфейсе для TFS 2010

Другой вариант - использовать приложение командной строки для управления версиями TFS 2010:

tf.exe rollback

У меня есть информация об обоих подходах в моем сообщении в блоге, доступном здесь: http://www.edsquared.com/2010/02/02/Rollback+Or+Undo+A+Changeset+In+TFS+2010+Version+Control.aspx

Эд Бланкеншип
источник
14

Другой способ заставить ваш вариант 1 работать - это изменить порядок шагов в обратном порядке:

  1. Проверить предметы
  2. Получить конкретную версию к старой версии
  3. Зарегистрируйтесь (игнорируя диалоговое окно «Предупреждение о более новой версии сервера») ИЛИ в разделе конфликтов диалогового окна «Ожидающие изменения» разрешите конфликты, сохранив локальную версию.

Это будет работать, даже если у вас установлен параметр «Получить последнюю версию при оформлении заказа».

Дэйв Робертс
источник
1
У меня не получилось. Но это должно быть из-за того, что какой-то болван настроил TFS с помощью глупых политик.
SHODAN
5

Для справки, если вы используете TFS 2010 , вот ссылка на руководство по Rollback Command (Team Foundation Version Control) .

Чтобы откатить конкретный набор изменений , перейдите в командную строку Visual Studio (2010) , перейдите в каталог рабочей области TFS и введите команду:

tf rollback /changeset:C12345

где номер 12345вашего набора изменений. После этого он покажет вам журнал того, что он сделал, и вам нужно будет разобраться в конфликтах слияния.

Иван Грозный
источник
4

Отсутствие возможности отката на самом деле является особенностью TFS;)

Для отката изменений:

  1. Проверьте, какую конкретную версию изменений вы хотите
  2. Правка-> Выбрать все-> Скопировать текст в файл
  3. Проверить, какая версия файла находится на сервере
  4. Вставьте файл и отметьте его.

И теперь все ваши промежуточные изменения перед откатом также сохраняются! Какая замечательная функция!

CamelBlues
источник
Сначала я подумал, что это саркастично, но это решение может действительно сработать для тех из нас, кому не повезло получить разрешение на откат.
EBarr
Если позже не были внесены изменения в те же файлы, которые вы действительно хотите сохранить.
Роберт Джеппесен
Грубо, но это был единственный способ сделать это в TFS. Если я произведу проверку, а затем получу старую версию, TFS будет автоматически объединяться с последней версией всякий раз, когда я пытаюсь вернуть ее.
Стив,
1

Если вы выполнили 1 регистрацию и просто хотите отменить ее, с ней связан набор изменений #. Выполните журнал в рассматриваемой папке, чтобы увидеть неверный набор изменений. Откройте его, чтобы увидеть подробности (все файлы изменены и т. Д.).

Я считаю, что вы можете восстановить или отменить набор изменений с этого экрана, но моя Visual Studio просто вылетела, когда я попытался сделать это. / вздох - Я определенно разделяю твою боль.

Где на этом сайте выполнить даунмод TFS?

Бен Шейрман
источник
Нет, откат из пользовательского интерфейса History был добавлен только в TFS 2010.
Ричард Берг,
1

Я думаю, что Team Foundation Power Tools - это то, что вам нужно. Если есть ожидающие изменения, вы можете переместить их в набор полок, а затем отменить или зарегистрировать все ожидающие изменения перед запуском команды отката. См. Http://www.codeplex.com/VSTSGuidance/Wiki/View.aspx?title=How%20to%20undo%20a%20check-in&referringTitle=Source%20Control%20Practices%20at%20a%20Glance для получения дополнительной информации.

Филип Уэллс
источник
1

Бен Шейрман - диалоговое окно «Сведения о наборе изменений» не имеет функции отката.

jlo
источник
1

Другой вариант - TFSPlus . Этот надстройка Visual Studio добавляет (среди прочего) команду «Получить эту версию» в окно истории. Если у вас есть файл, он заменит его этой версией. Если вы выполните проверку после этого, вы фактически откатитесь к этой версии.

Однако он работает с отдельными файлами, а не с полными наборами изменений.

Дамир Арх
источник
1

Получить конкретную версию

В раскрывающемся списке Тип версии выберите Тип как набор изменений.

Используйте кнопку Changeset ..., чтобы найти свой набор изменений, или просто введите его, если вы знаете этот номер.

После того, как у вас есть конкретный набор изменений.

Проверять, выписываться

Регистрироваться

Гуру
источник
0

Ни одно из этих решений не сработало для меня. Решение Дэйва Робертса было самым близким к тому, с чем я действительно работал. У меня не включена функция «Получить последнюю версию элемента при оформлении заказа», однако, похоже, это политика сервера.

Мое решение - проверить файл для редактирования, получить конкретную версию, а затем, когда обнаружен конфликт, использовать инструмент слияния (и вручную не объединять никакие изменения), чтобы файл находился в том состоянии, в котором он был.

Я собирался сравнить с конкретной версией и скопировать весь файл, а затем просто вставить его поверх старого.

Тем не менее должен быть более простой способ сделать это!

ПЮК
источник
0

Приведенное выше решение предназначено для TFS2008. TFS2010 имеет встроенную функцию отката. подробности см. в этой статье.

StarCub
источник
За исключением того, что VS2010 (tf) не работает с TFS2008, и, поскольку TFPT 2010 больше не имеет отката, вы попали в беду.
Саймон Гиллби
0

Установите последнюю версию TFS Power Tools (август 2011 г.), и вы можете просто щелкнуть правой кнопкой мыши набор изменений и выбрать «Откатить весь набор изменений ». Нет ничего проще.

Он доступен здесь: http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f

Это намекается в разделе Улучшения Team Explorer на вышеуказанной странице:

Новым в этом выпуске является возможность [..] простого отката изменений в системе контроля версий.

Евгений Березовский
источник