TFS всегда имеет конфликты с файлами проекта, которые он отказывается от автоматического слияния, как это происходит с файлами кода

КАЖДЫЙ ОДИН ВРЕМЯ Я отменяю набор изменений с добавлением / переименованием / перемещением / удалением изменений или имею ожидающие изменения с такими изменениями, я должен вручную объединить файл родительского проекта, который получает много активности (большая часть кодовой базы вложена в одну проект, так что версия его файла проекта меняется очень часто).

Это разочарование несколько раз в день, и кажется, что TFS должен быть в состоянии сделать это для меня, так как изменения просты (например, удалить строку для удаленного файла в последней версии и добавить строку для нового файла в локальном версия). Я пришел к выводу, потому что это ведет себя разумно таким образом для файлов кода для автоматического объединения версий.

Так почему же automerge ведет себя иначе с файлами проекта, чем с файлами кода?

Например, разработчик A создает набор изменений, добавляя файл в проект и помещая его на хранение. Затем другой разработчик B регистрирует изменения в проекте, который также добавляет файл (не связанный), поэтому, когда я перехожу к незавершенным изменениям разработчика A, мне приходится разрешать конфликты в файле проекта.

Кроме того, если группа файлов перемещена / переименована / добавлена, и я хочу снять ее с одного изменяющего изменения, гораздо проще просто взять серверную версию файла проекта и вручную повторно применить одно изменение (например, добавить существующий файл).) вместо объединения дюжины разнесенных изменений по тысячам строк. (И не дай бог, вы изменили переименование и взяли серверную версию файла проекта, потому что тогда вам нужно вручную отредактировать его с помощью текстового редактора, чтобы переименовать, иначе вы получите последовательность ошибок из-за переименованного файла, уже существующего на диске. при попытке переименовать из обозревателя решений).

Использование VS2014 и нашей кодовой базы в основном осуществляется в рамках одного гигантского проекта базы данных (*.sqlproj).

1 ответ

Скорее всего, разные файлы добавляются в одну и ту же строку файла, поскольку в большинстве случаев файлы проекта генерируются автоматически, в отличие от обычного кода, трудно сказать, в какую строку VS вставит новый элемент файла, когда кто-то добавит его передний конец. Если 2 человека добавляют новые элементы в проект одновременно, весьма вероятно, что вы получите 2 версии файла проекта с этими новыми элементами, записанными в одной строке, что приведет к конфликту. Иногда (например, если вы добавите ссылку), это более одной строки на элемент, что делает слияние еще хуже. Я хотел бы предложить, чтобы каждый разработчик, который вносит изменения в файл проекта, проверял его с помощью блокировки (исключительно), чтобы за один раз происходило одно изменение. Кроме того, убедитесь, что другие разработчики получили последние версии, прежде чем вносить свои изменения (в Visual Studio есть настройка в разделе Инструменты> Параметры> Управление исходным кодом> Visual Studio Team Foundation Server). Это сделает работу автоматического слияния.

Другие вопросы по тегам