Visual Studio 2017 не может перемещать полки в другую ветку

Поскольку они предположительно интегрировали большинство функциональных возможностей Power Tools в VS2017, новая команда "tf unshelve" не работает так же, как и старая команда "tfpt unhelve", чтобы переместить полки в другую ветку, поскольку вы не можете добавить источник и цель используя новую команду. Мне действительно не нужно устанавливать VS2015 на моем ноутбуке, чтобы переместить полку. Кто-нибудь знает, как это сделать с VS2017? Я с трудом верю, что это уже невозможно.

Любая помощь очень ценится!

Ответ 1

Еще одно временное...

  1. Проверьте изменения с существующего полки (Набор изменений 1)
  2. Слейте изменения в другую ветку и зайдите (Изменения 2)
  3. Отмените изменения из набора 1.

Это сохраняет изменения с набора изменений 2 и отбрасывает исходную ветвь.

Этот процесс может не работать для каждой компании и их политики, но она работает. Мне это не нравится, но иногда это необходимо.

Ответ 2

К сожалению, переместить Shelveset в другую ветку с помощью команды "tftp unshelve" или "tf unshelve" пока не поддерживается в VS 2017.

Уже есть отзыв, отправленный здесь, чтобы отслеживать это, так же как Юхана Насейм [MSFT] упоминается ниже (источник здесь):

Для VS 2017 года у нас нет выпуска электроинструментов. Мы постоянно оценка функций, которые все еще отсутствуют в продукте. Три наиболее заметных из них:

  • Интеграция TFS с Windows Shell

  • Поиск по статусу для рабочих областей сервера

  • Unshelve/migrate

Поэтому в качестве обходного пути вы можете попробовать следующие способы:

Ответ 3

Я абсолютно согласен с тем, что это очень упущенная функция в 2017 году и выше. После слишком большого количества попыток сделать это вручную я решил добавить его в свое (бесплатное) расширение Visual Studio под названием "MultiMerge". Теперь вы можете щелкнуть правой кнопкой мыши набор полок и выбрать целевую ветвь. Существует версия VS2017 и VS2019. Или вы можете просто выбрать это расширение, используя меню "Инструменты и расширения" в Visual Studio.

Не стесняйтесь оценить расширение, и пусть другие найдут его быстрее :)

Ответ 4

Вот как я это делаю, когда знаю, что файлы веток могут быть перезаписаны непосредственно с помощью полки. Если вам нужно объединить, то используйте win-merge с каталогом сравнения, чтобы объединить вещи обратно.

  • Закройте все экземпляры Visual Studio
  • Переименуйте ваш локальный исходный каталог во временное имя
  • Откройте Visual Studio
  • Отменяйте ваши изменения в обычном режиме - VS воссоздает структуру каталогов с вашими изменениями.
  • Скопируйте все ваши измененные файлы в каталог вашей ветки (перезаписывайте файлы только для чтения)
  • Закрыть визуальную студию
  • Переименуйте ваш локальный каталог с исходным именем (избавьтесь от воссозданного VS)
  • Откройте свой филиал
  • Теперь есть два варианта: вы можете перейти в автономный режим, а затем снова подключиться к сети, чтобы позволить VS выяснить, что изменилось, или просто проверить всю папку, а затем снова зарегистрироваться. Просто убедитесь, что у вас больше ничего не проверено, прежде чем вы это сделаете!

Жаль, что это еще не было включено в VS как нативную функцию, но если учесть сложность развертывания в слияние кода, сохранения истории и т.д., Задача становится сложной. Удачи!

Ответ 5

Поскольку до сих пор (май 2019 г.) TSPT недоступен в Visual Studio 2017.

Обходной путь, который я нашел, состоит в том, чтобы создать новую ветвь и использовать такой инструмент, как WinMerge (http://winmerge.org), чтобы сравнивать и объединять изменения из главной в новую ветвь, а затем, когда все в порядке, я отменяю изменения в основной ветке.

Ответ 6

Другой, возможно, более простой способ работы с VS2019 - скопировать/вставить исходную папку в целевую папку ветки и использовать

tf reconcile /promote

для обнаружения всех добавленных или измененных файлов.