Некорректное слияние PR в VSTS - новое изменение исчезло после слияния - PullRequest
0 голосов
/ 17 января 2019

Я сталкиваюсь с очень странной ситуацией, где:

  1. Разработчик внес изменения в какой-то файл.
  2. Объединено изменение с помощью запроса на извлечение.
  3. Изменение было удалено слиянием.

Теперь я знаю, как работает рекурсивная стратегия Git слияния, и, насколько я понимаю, изменение должно было пережить слияние.

Теперь кровавые подробности. Основные коммиты:

  1. cfff5f5577 - здесь разработчик внес изменения.
  2. e2f51c17e7 - это коммит PR слияния. Изменения исчезли отсюда.

Итак, это пиар-коммиты:

enter image description here

Это коммит PR слияния:

enter image description here

Теперь, суть проблемы в том, что изменения в cfff5f5577 не распространяются на e2f51c17e7.

Насколько я понимаю, диаграмма слияния:

  +------------ Y -----+ e2f51c17e7
 /                    /
X                    /
 \                  /
  +------ cfff5f5577 

Где Y - цель PR-слияния, а X - общий предок.

Y - e2f51c17e7 ^ 1, что дает нам 462fc3b376:

enter image description here

А для X я использую команду merge-base, которая выдает 483b84e708:

enter image description here

Итак, окончательная диаграмма слияния:

           +------ 462fc3b376 --+ e2f51c17e7
          /                    /
483b84e708                    /
          \                  /
           +------ cfff5f5577 

Теперь, чтобы изменения появились в коммите слияния, должно произойти следующее (насколько мне известно):

  1. соответствующие строки кода должны быть неизменными между 483b84e708 и 462fc3b376
  2. Соответствующие строки кода должны измениться между 483b84e708 и cfff5f5577

Если это произойдет, изменение будет распространяться на e2f51c17e7.

Сравнение 483b84e708 с 462fc3b376

enter image description here

enter image description here

Итак, эти четыре строки выглядят одинаково.

Сравнение 483b84e708 с cfff5f5577

enter image description here

enter image description here

Изменение есть.

Сравнение cfff5f5577 с e2f51c17e7

enter image description here

enter image description here

Изменение прошло!

Сравнение 462fc3b376 с e2f51c17e7

enter image description here

Это идентично!

Заключение

Из этого я делаю вывод, что автоматическое слияние решило убить изменение. Теперь я понимаю, что мои снимки Beyond Compare могут не точно представлять картинку слияния, потому что BC может выравнивать строки не так, как Git. В каком случае я спрашиваю - как я могу проследить процесс слияния Git, чтобы понять, почему слияние было убито?

Это крайне тревожно, потому что это коммит PR-слияния - мы не можем просмотреть его до , когда он объединен с базой кода, так как он не является частью PR-коммитов. Мы должны верить, что это правильно. И я верю, что это так, поэтому я совершенно озадачен здесь.

Может кто-нибудь объяснить, что происходит?

1 Ответ

0 голосов
/ 18 января 2019

Глупый я.

Когда я проверял слияние локально, он сразу же говорил мне, что существует конфликт слияния. И тут меня осенило. У нас установлен плагин для разрешения конфликтов при слиянии. Вот:

enter image description here

Разработчик неправильно разрешил конфликт слияния. Он взял цель вместо источника слияния.

Дело закрыто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...