TFV C не обнаруживает удаленные файлы при объединении - PullRequest
0 голосов
/ 03 мая 2020

У нас есть проект, в котором мы в основном используем две ветви: одну для разработки, назовем ее «Основная» и другую, где мы объединяем код для выпуска, давайте назовем его «Релиз». Ветвь релиза была создана из ветви Main с использованием Visual Studio (щелкните правой кнопкой мыши на ветке Main => Branch - так мы создали ветку Release) В ветке Main у нас есть два файла, после того как мы объединили все в ветку Release, она также содержит эти два файла. Позже, если мы удалим один из файлов в ветке Main, а затем попробуем объединить изменения в ветке Release, это не обнаружит этой разницы. Мы ожидаем, что инструмент слияния должен обнаружить, что один файл должен быть удален.

Как тогда мы гарантируем, что позже, когда у нас будет более двух файлов, мы можем доверять tfs, что он обнаружит удаление и правильно объединит изменения? Есть ли какая-либо настройка, чтобы сделать это возможным?

Пример:

В ветви M у нас есть две папки: SolutionA и SolutionB. SolutionA - это наш пакет, в котором мы регистрируем изменения. SolutionB - это решение, предоставляемое независимым поставщиком программного обеспечения (ISV), время от времени ISV отправляет нам новую версию своего решения, которую мы должны зарегистрировать в соответствующей папке. Дело в том, что часто случается так, что они удаляют некоторые объекты в своем пакете и создают новый. С новыми объектами все работает нормально, но с теми, которые они удалили - нет.

Как мы развернем новую версию? - Возьмите среду разработки и удалите папку SolutionB из локально сопоставленного каталога, разверните новую версию SolutionB в этой среде и затем зарегистрируйтесь. В результате к элементу управления попадают только новые элементы, а те элементы, которые были удалены ISV, остаются в хранилище. Поэтому любой разработчик, который получает последнюю версию на своем devbox, получает только новые файлы, что очевидно, поскольку для них не было зарегистрировано никакого действия удаления. И второй момент - когда мы хотим объединить новую версию SolutionB с веткой Release, мы добавляем туда только новые элементы.

Отслеживать вручную, какие файлы были удалены, не вариант, так как SolutionB имеет тысячи элементов внутри. Поэтому мне интересно, что не так с моей настройкой, что в тот момент, когда я регистрирую новую версию SolutionB из devbox, VCS не может обнаружить, что старые элементы удалены (так как их нет в локальной сопоставленной папке).

Для лучшего понимания взгляните на изображение:

enter image description here

Предположим, что версия 1 SolutionB содержит FileFour и FileThree. Версия 2 содержит FileThree и FileFive. Это будет означать, что после регистрации версии 2 в VCS он только добавит FileFive в папку SolutionB и не удалит FileFour. В результате при объединении из ветви M в ветку R я получу все 3 файла в ветке R в папке SolutionB.

Мы используем Vistual Studio 2015 и Azure DevOps Services

1 Ответ

0 голосов
/ 05 мая 2020

Поскольку вы используете VS 2015, вы можете установить Microsoft Visual Studio Team Foundation Server 2015 Power Tools , а затем щелкнуть правой кнопкой мыши V2 SolutionB, выбрать Team Foundation Server - Обнаруженное изменение , для продвижения ожидающих изменений вы увидите удаленные файлы.

enter image description here

Или вам нужно удалить SolutionB из Source Control Explorer и проверить в внесите изменения, а затем добавьте новую версию SolutionB в свое рабочее пространство, чтобы проверить наличие новой версии.

Кстати, вы можете пригласить своего поставщика в свои DevOps и использовать одно и то же хранилище для совместной работы.

...