История Git, испорченная TFS PR - PullRequest
       10

История Git, испорченная TFS PR

0 голосов
/ 18 октября 2019

Я делал PR из нашей основной ветки dev в подветви dev_group1 , которую мы используем для параллельной разработки и которую мы обычно объединяем в dev и куда я могу выполнить слияние dev .

У Dev есть политика слияния No-Fast Forward в TFS (принудительно), а у dev_group1 есть политика слияния Squash (принудительно).

Каждые несколько недель мы делаем:

dev -> dev-group1
dev_group1 -> dev

Это работало нормально в течение нескольких месяцев, но во время последнего слияния мы сначала сделали слияние

dev -> dev-group1

, которое имело около20 конфликтов файлов. Мы решили их и объединили PR.

Когда мы попытались выполнить слияние

dev_group1 -> dev

Мы увидели почти одинаковые конфликтующие файлы (было около 18 конфликтов). Это было уже очень странно, и мы решили повторить слияние

dev -> dev-group1

, которое дало те же конфликты. Мы взяли версию dev_group1, так как она разрешала конфликты.

Когда мы пошли в TFS, мы увидели, что PR затрагивал около 180 элементов tfs, но без каких-либо изменений файла.

Мы закрылиPR.

Затем мы попытались повторить слияние

dev_group1 -> dev

Но у нас все еще остаются те же конфликты!

Это очень озадачивает, и я не могу дать объяснениеза это. Что могло пойти не так?

1 Ответ

1 голос
/ 19 октября 2019

Squash merge отбрасывает родословную связь с исходной веткой. Поэтому в следующий раз, когда счетчик будет выполнен, объединенные изменения попытаются объединить снова. Это может быть успешным без конфликтов, если изменения с обеих сторон абсолютно одинаковы. Это может произойти, если изменения в dev_group1 и dev не связаны. Вот почему у вас не было конфликта предыдущих раз. Но как только у вас возникнут конфликты, они будут возникать снова и снова.

Вы не должны использовать сквош-слияние, если собираетесь использовать исходную ветвь после слияния. Поскольку ваша ветка dev, очевидно, будет использоваться позже, вы не должны использовать слияние с ней.

...