Предположим, что какой-то разработчик в моей команде отложил свои изменения, которые он сделал в ветке A. А я работаю над веткой B. Могу ли я отложить его изменения в ветку B? (С помощью графического интерфейса или командной строки)
Могу ли я перенести полку в другую ветку в tfs 2008?
Ответы (5)
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, в Branch2 используйте следующее:
>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"
Альтернативное решение для tfpt, позволяющее избежать объединения каждого файла вручную
Проблема с электроинструментом tfs заключается в том, что вы выполняете" безосновное слияние ", поэтому вам нужно подтверждать каждый файл. У меня был набор полок из более чем 800 файлов, и я никогда не доверял кнопке «автоматическое объединение» и не хотел просматривать каждый файл по очереди - поэтому мне пришлось найти другой способ!
- Загрузите и установите TFS Shelveset Sidekick.
- Инструмент отображается в разделе «Инструменты» в VS2010.
- Запустите инструмент Shelveset Sidekick, нажмите Search, чтобы отобразить наборы полок.
- Щелкните правой кнопкой мыши свой набор полок и выберите «Экспортировать набор полок».
- Сохранить в пустом месте, например
C:\temp\shelveset-name
- Теперь у вас есть полная структура каталогов, содержащая ТОЛЬКО новые файлы
(Примечание: при экспорте нет индикатора выполнения - поэтому, если у вас есть большой набор полок, экспорт которого занимает много времени, вам просто нужно проверить в проводнике Windows (Файл> Свойства> Размер), что файлы все еще сбрасываются, если вы думаю заморожен).
Теперь вам просто нужно скопировать их в новую ветку с помощью проводника Windows.
Это сработало для меня:
- Сначала проверяем все решение (в новой ветке)
- Закройте это решение
- Переведите TFS в автономный режим из VS (Инструмент для этого) - почему это важно, см. ниже ...
- Скопируйте файлы в проводнике Windows. Структуру каталогов в
c:\temp\shelveset-name
необходимо переименовать, чтобы она соответствовала новой ветке. Совет: убедитесь, что вы копируете в нужное место !!! - Принесите VS онлайн
- Он должен найти все изменения и добавить новые файлы
- Если он просит вас привязать исходный элемент управления, убедитесь, что путь правильный для новой ветки.
- Протестируйте - а затем проверьте новые файлы
Важно: я обнаружил, что если вы сначала не переведете TFS в автономный режим, то в конечном итоге все новые файлы (из набора изменений незаполненных полок) будут отображаться без маленькой красной галочки, и вам придется исключить и снова включить их. чтобы заставить их добавить. Если у кого-то есть альтернативное решение этой проблемы, я хотел бы знать - обновление, похоже, не работает.
Информация на полке включает в себя конкретный путь, по которому она идет. К сожалению, я не знаю ни одного автоматического способа убрать с полки в другое место, кроме того, в которое он был поставлен. Когда я хотел это сделать, мне приходилось проверять эквивалентные файлы в новой ветке, снимать с полки из старой ветки, а затем вручную копировать файлы.
РЕДАКТИРОВАТЬ: Ну, я думаю, я делал это трудным путем. Мне нужно попробовать решение Курта. :)
Я потратил много времени, чтобы сделать это, и у меня было несколько проблем, которые нужно было решить. Это возможно, но здесь несколько вопросов и несколько правил, которым нужно следовать, чтобы избежать этих проблем.
Ошибка:
невозможно определить рабочее пространство
Эта конкретная проблема была решена путем выполнения команды из корневой папки ветки source. Это противоречит некоторым ответам на 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, и у меня было рабочее пространство и подключение к серверу. Но я не понимал, что такое же соединение необходимо реплицировать в VS13 для работы TFPT2013. Он подключается к тому же серверу и рабочему пространству.
Я также пробовал сделать это с помощью TFPT2015, но я установил его, и он не установил TFPT.exe, поэтому он был бесполезен. Итак, я пробовал с TFPT2013 на TFS2015, и это сработало для этой конкретной команды. Интересно, а почему бы и нет, если VS12 / 13 отлично работает против TFS2015?
Подведем итоги
- Используйте CMD или DevCMD - неважно
- запустить команду из корневой папки ветки источника
- проверить подключение к серверу Team Explorer для конкретной VS
- TF Power Tools 2013 работает с TFS v15, работает по крайней мере опция migrate
Следующие шаги можно использовать для полочных наборов небольшого размера (~ 20 файлов или меньше).
- В ветвях shelveset и target начните с регистрации или отката всех ожидающих обновлений.
- В ветке полочного набора уберите с полки файлы из соответствующего набора полок.
- В целевой ветке извлеките любой из существующих файлов, которые были в наборе без полок.
- Сравните файлы без полок в ветке полочного набора с файлами в целевой ветке, чтобы определить те файлы, которые требуют обновлений слиянием (если таковые имеются).
- При необходимости вручную сделайте обновления слиянием для применимых файлов предыдущего шага и сохраните эти файлы в рабочей области целевой ветви.
- Скопируйте другие файлы полочного набора из рабочего пространства ветви полочного набора в целевую рабочую область ветви.
- Сравните новые обновленные файлы в рабочей области целевой ветви с зарегистрированными файлами. Внесите необходимые исправления.
- Зарегистрируйте новые обновленные файлы в целевой ветке.
- Откатить незаполненные файлы в ветке полочного набора.