У нас есть проект, в котором мы в основном используем две ветви: одну для разработки, назовем ее «Основная» и другую, где мы объединяем код для выпуска, давайте назовем его «Релиз». Ветвь релиза была создана из ветви 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 не может обнаружить, что старые элементы удалены (так как их нет в локальной сопоставленной папке).
Для лучшего понимания взгляните на изображение:
Предположим, что версия 1 SolutionB содержит FileFour и FileThree. Версия 2 содержит FileThree и FileFive. Это будет означать, что после регистрации версии 2 в VCS он только добавит FileFive в папку SolutionB и не удалит FileFour. В результате при объединении из ветви M в ветку R я получу все 3 файла в ветке R в папке SolutionB.
Мы используем Vistual Studio 2015 и Azure DevOps Services