Предположим, что какой-то разработчик в моей команде отложил свои изменения, которые он сделал в филиале A. И я работаю над ветвью B. Могу ли я не использовать его изменения в ветке B? (По GUI или командной строке)
Могу ли я отказаться от другого ветки в tfs 2008?
Ответ 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 в автономном режиме, тогда вы получите все новые файлы (с вашего набора изменений), которые будут отображаться без красной галочки, и вам придется исключать и включите их снова, чтобы добавить их. Если у кого-то есть альтернативное решение этой проблемы, я бы с удовольствием узнал, что обновление не работает.
Ответ 3
Демонстрация вышеприведенной команды: Исключить основные команды
Ответ 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 файлов или меньше).
- Начните с ветвей shelveset и target, отметив все ожидающие обновления или выполнив откат.
- В ветке shelveset удалите файлы из соответствующего shelveset.
- В целевой ветки извлеките любой из существующих файлов, которые были в нерасфасованном наборе полок.
- Сравните несохраненные файлы в ветки shelveset с файлами в целевой ветки, чтобы определить те файлы, которые требуют обновлений слияния (если они есть).
- При необходимости внесите обновления слиянием в соответствующие файлы предыдущего шага вручную и сохраните эти файлы в рабочей области целевой ветки.
- Скопируйте другие файлы наборов полок из рабочей области ветки "Полка" в целевую рабочую область ветки.
- Сравните новые обновленные файлы в рабочей области целевой ветки с отмеченными файлами. Внесите любые необходимые исправления.
- Проверьте новые обновленные файлы в целевой ветки.
- Откатить ненужные файлы в ветке shelveset.