Зафиксировав конец одного и того же файла, объедините оба изменения без конфликтов

Проблема, с которой я столкнулся, связана с проектом автоматизации, над которым я работаю. По сути, через пользовательский интерфейс кто-то фиксирует изменение в конце файла (в данном случае test.conf), и в то же время кто-то другой фиксирует другое изменение в конце того же файла. Порядок этих строф/коммитов не имеет значения. Я хочу сохранить оба изменения, так как прямо сейчас репозитории Azure Devops обнаруживают конфликт слияния, мешающий утверждающим завершить работу в пользовательском интерфейсе.

Например: В отдельной ветке, в данном случае "branch_a", кто-то делает в test.conf коммит "Hello\nworld\n"

В то же время кто-то создает новую ветку «branch_b» и добавляет «это\nme» в конец файла.

Затем, через 5 минут, создается PR для ветки_a в основной и завершается. Итак, на данный момент строка 1 — «hello\nworld».

Затем, через 15 минут, создается PR для ветки_b в main и возникают конфликты слияния, поскольку в строке 1 main теперь есть hello, а не пустая.

Проблема в том, что я хочу, чтобы обе записи были объединены, без необходимости извлекать, объединять и разрешать конфликты. Таким образом, желаемым конечным результатом будет «hello\nworld\nits\nme». Я попытался установить объединение в атрибуты git, но это все равно вызывает конфликт.

Я также хочу, чтобы это выполнялось автоматически через репозитории кода Azure Devops.

Вам нужен собственный драйвер слияния, но даже в этом случае вы, вероятно, столкнетесь со многими случаями, когда потребуется вмешательство человека.

1615903 08.07.2024 07:55

Например, что, если в этом случае Branch_b добавит hello\nworld\nits\nme, конечный результат будет hello\nworld\nhello\nworld\nits\nme?

1615903 08.07.2024 07:56

Кроме того, поскольку фактический файл является файлом .conf, что, если одна ветвь добавит foo=bar, а другая — foo=baz?

1615903 08.07.2024 07:58

Вероятно, это не лучший пример, который я мог бы привести, поскольку он относится к файлу Splunk .conf, поэтому несколько разделов с одинаковыми атрибутами могут быть действительными. Похоже, что TFS не поддерживает это из коробки, что крайне прискорбно. В любом случае спасибо всем за помощь!

MrDaveForDays 08.07.2024 14:52
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Боюсь, что не существует готового метода, позволяющего автоматически объединить две записи в Azure DevOps.

А когда вы используете функцию запроса на извлечение Azure DevOps, она игнорирует настройки в gitattributes и .git/config. Таким образом, параметр объединения объединения не будет работать в Azure DevOps.

Чтобы удовлетворить ваши требования, я предлагаю вам установить и использовать расширение: Расширение конфликта слияния запросов на включение в Azure DevOps.

После установки расширения мы можем разрешить конфликты непосредственно в пользовательском интерфейсе запроса на извлечение Azure DevOps.

Например:

В этом случае пользователи могут объединить две записи вручную в пользовательском интерфейсе запроса на включение и отправить объединение для разрешения конфликта. Затем утверждающие могут продолжить слияние запросов на включение.

Если вам нужно использовать настройки в файле gitattributes, вам необходимо извлечь, объединить и разрешить конфликты на вашем локальном компьютере.

Я могу полностью понять ваши требования. Вы можете отправить заявку на сайте: Сообщество разработчиков, чтобы сообщить об этой функции.

Спасибо тебе за это. К сожалению, он не понимает тег merge=union. Я слышал ужасные истории об этом расширении, стирающем данные, которые являются символом utf-8, но я попробую и посмотрю. Еще раз спасибо.

MrDaveForDays 08.07.2024 14:55

@MrDaveForDays Да. Поскольку это не встроенная функция, у нее могут быть некоторые недостатки. Но это единственный метод в Azure DevOps, который может напрямую разрешать конфликты. Если вы решите использовать это расширение, вы можете заставить утверждающих выполнить некоторую проверку разрешенных конфликтов.

Kevin Lu-MSFT 08.07.2024 14:58

С другой стороны, вы также можете отправить заявку на предложение, основанную на ваших фактических требованиях. Разработчикам Azure Devops будет полезно собрать требования пользователей.

Kevin Lu-MSFT 08.07.2024 14:59

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