Конфликт слияния TFS

#tfs #merge #tfvc

#tfs #слияние #tfvc

Вопрос:

У меня есть ветви main и dev. Я вношу изменения в оба и регистрируюсь. Я перехожу из main в dev и регистрируюсь. Теперь я перехожу из dev в main. У меня есть конфликты. Как это возможно?

Ответ №1:

Разрешение конфликта для слияния в одном направлении не обязательно подходит для слияния в другом направлении. Во многих рабочих процессах вы в основном объединяетесь, чтобы сохранить две ветви как можно более похожими — например, перенося изменения из ветки разработки в производственную ветку и, возможно, перенося критические исправления из производственной ветки обратно в ветку разработки. В такого рода рабочих процессах вы обычно не хотели бы расходиться при объединении двух ветвей (в конце концов, вам нужно это критическое исправление ошибок в обеих ветвях), поэтому не очевидно, почему вам пришлось бы разрешать конфликт слияния оба раза, но это, конечно, не единственный рабочий процесс при работе с ветвями.

Раньше я работал над проектом Java, в котором были некоторые служебные библиотеки, которыми мы делились с группой, работающей над другим проектом. В какой-то момент нашим библиотекам понадобилось отличаться от их по разным причинам, поэтому мы взяли ветку их проекта, и обе группы внесли уникальные изменения в библиотеку. Иногда случалось, что мы исправляли ошибку, а иногда случалось, что они добавляли новую функцию, поэтому мы часто объединялись друг с другом.

Здесь вы можете видеть, что результаты слияния из нашей ветки в их не обязательно должны быть результатами слияния из их ветки в нашу. Давайте предположим, что существовал файл, в который мы добавили несколько новых методов и, возможно, исправили несколько ошибок. И давайте предположим, что они добавили несколько разных методов. Когда они объединяли наши изменения в свою ветку, они получали конфликт слияния, и давайте предположим, что они использовали исправления, но не использовали наши новые методы, поскольку они им не были нужны. Теперь, когда мы выполняем слияние, чтобы перенести их изменения в нашу ветку, мы все равно получаем конфликт слияния — это позволяет нам перенести их методы в наш файл.

Если бы TFS сделала какое-то предположение о слиянии из их ветки в нашу на основе результатов из нашей ветки в их, это было бы неточно.