Могу ли я отказаться от другого ветки в tfs 2008?

Предположим, что какой-то разработчик в моей команде отложил свои изменения, которые он сделал в филиале A. И я работаю над ветвью B. Могу ли я не использовать его изменения в ветке B? (По GUI или командной строке)

Ответ 1

Инструменты Visual Studio Power Tools должны позволить вам сделать это.

C:\src\2\Merlin\Main>tfpt unshelve /?
tfpt unshelve - Unshelve into workspace with pending changes

Allows a shelveset to be unshelved into a workspace with pending changes.
Merges content between local and shelved changes. Allows migration of shelved
changes from one branch into another by rewriting server paths.

Usage: tfpt unshelve [shelvesetname[;username]] [/nobackup]
                     [/migrate /source:serverpath /target:serverpath]

 shelvesetname          The name of the shelveset to unshelve
 /nobackup              Skip the creation of a backup shelveset
 /migrate               Rewrite the server paths of the shelved items
                        (for example to unshelve into another branch)
 /source:serverpath     Source location for path rewrite (supply with /migrate)
 /target:serverpath     Target location for path rewrite (supply with /migrate)
 /nobackup              Skip the creation of a backup shelveset

Например, чтобы объединить набор полки под названием "Имя набора стеллажей", созданный на Branch1 to Branch2, используйте это:

>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"

Ответ 2

Альтернативное решение для tfpt, которое позволяет не объединять каждый файл вручную

Проблема с инструментом tfs power заключается в том, что вы делаете "необоснованное слияние" , поэтому должны подтвердить каждый файл. У меня была полка из более чем 800 файлов, и я никогда не доверяю кнопке "авто слияния" и не хочу проходить через каждый файл по очереди - так что мне пришлось искать другой способ!

  • Загрузите и установите TFS Shelveset Sidekick.
  • Инструмент появляется в разделе "Инструменты" в VS2010
  • Запустите инструмент "Полка шелка", нажмите "Поиск", чтобы отобразить полки.
  • Щелкните правой кнопкой мыши на полке и выберите "Экспортировать полки"
  • Сохранить в пустом месте, например C:\temp\shelveset-name
  • Теперь у вас есть полная структура каталогов, содержащая JUST новые файлы

(Примечание: при экспорте нет индикатора выполнения, поэтому, если у вас есть большой шкафчик, который занимает много времени для экспорта, вам просто нужно будет проверить в Проводнике Windows (Файл > Свойствa > Размер), что файлы все еще идут вниз, если вы считаете, что он заморожен).

Теперь вам просто нужно скопировать их в новую ветку с помощью проводника Windows.

Это сработало для меня:

  • Сначала проверьте все решение (в новой ветке)
  • Закройте это решение
  • Возьмите TFS в автономном режиме из VS (Инструмент для этого) - см. ниже, почему это важно...
  • Скопировать файлы в Проводнике Windows. Структура каталогов в C:\temp\shelveset-name должна быть переименована в соответствии с новой ветвью. Совет. Обязательно скопируйте нужное место.
  • Принесите VS онлайн
  • Он должен найти все изменения и добавить новые файлы
  • Если он попросит вас связать источник, убедитесь, что путь верен для новой ветки.
  • Тест - и затем проверьте новые файлы

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

Ответ 4

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

EDIT: Ну, я думаю, я делал это с трудом. Мне придется попробовать решение Курта.:)

Ответ 5

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

Ошибка:

невозможно определить рабочее пространство

Эта конкретная проблема была решена путем запуска команды из корневой папки источника ветки. Это противоречит некоторым ответам на SO, где говорят, что нужно использовать "целевую" ветку - нет, используйте "источник":

cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"

Вторая проблема появилась после этого. Кажется, он не может подключиться к серверу TFS. Я понял, что у меня установлено несколько VS и они подключены к разным TFS-серверам. Я использовал VS12, и у меня было рабочее пространство и подключение к серверу. Но я не осознавал, что для работы TFPT2013 необходимо реплицировать то же соединение в VS13. Он подключается к одному и тому же серверу и рабочей области.

Я также попытался сделать это с помощью TFPT2015, но я установил его, и он не установил TFPT.exe, следовательно, он был бесполезен. Поэтому я попытался от TFPT2013 до TFS2015, и это работало для этой конкретной команды. Интересно, а почему бы и нет, если VS12/13 отлично работает против TFS2015?

Подводя итог

  • Используйте CMD или DevCMD - не имеет значения
  • выполнить команду из исходной корневой папки ветки
  • проверить соединение с Team Explorer для определенного VS
  • TF Power Tools 2013 работает против TFS v15, хотя бы опция переноса работает

Ответ 6

Следующие шаги можно использовать для небольших наборов полок (~ 20 файлов или меньше).

  1. Начните с ветвей shelveset и target, отметив все ожидающие обновления или выполнив откат.
  2. В ветке shelveset удалите файлы из соответствующего shelveset.
  3. В целевой ветки извлеките любой из существующих файлов, которые были в нерасфасованном наборе полок.
  4. Сравните несохраненные файлы в ветки shelveset с файлами в целевой ветки, чтобы определить те файлы, которые требуют обновлений слияния (если они есть).
  5. При необходимости внесите обновления слиянием в соответствующие файлы предыдущего шага вручную и сохраните эти файлы в рабочей области целевой ветки.
  6. Скопируйте другие файлы наборов полок из рабочей области ветки "Полка" в целевую рабочую область ветки.
  7. Сравните новые обновленные файлы в рабочей области целевой ветки с отмеченными файлами. Внесите любые необходимые исправления.
  8. Проверьте новые обновленные файлы в целевой ветки.
  9. Откатить ненужные файлы в ветке shelveset.