В нашей системе каждый PR запускает сборку проверки PR на контроллере сборки, где:
- Рабочая область контроллера сборки обновляется до origin / master
- PR объединяется
- Извлечен коммит PR слияния
- Сборка запущена
Насколько я понимаю, коммит PR слияния будет иметь следующих двух родителей:
- origin / master
- Последний коммит в PR
Однако это не всегда так!
Пожалуйста, соблюдайте:
Вывод шага сборки Sources Get
2018-11-27T15:39:21.3096756Z bf58eb148..b00bf1df0 master -> origin/master
2018-11-27T15:39:21.3099964Z * [new ref] refs/pull/3987/merge -> pull/3987/merge
2018-11-27T15:39:31.3045930Z ##[command]git checkout --progress --force refs/remotes/pull/3987/merge
2018-11-27T15:39:32.8530040Z Previous HEAD position was ce1d1c670... Merge pull request 3982 from wfm/work/pbi476403 into master
2018-11-27T15:39:32.8530496Z HEAD is now at 81317ea59... Merge pull request 3987 from onboarding/476463-Automation_GettingStarted_Performance_Improvements into master
PR 3987 содержит только один коммит:
Исходя из того, что моя логика говорит мне, что:
- В этот момент origin / master = b00bf1df0
- Локальный коммит PR слияния, т.е. pull / 3987 / merge = 81317ea59
- Первым родителем pull / 3987 / merge будет origin / master, т.е. b00bf1df0
- Вторым родителем pull / 3987 / merge будет bпоследняя фиксация PR, т.е. b7d9617fc
Теперь я пойду на контроллер сборки и проверю там:
Я вижу, что первый родитель не b00bf1df0, но какой-то другой коммит 959f488bb.
Я не понимаю, как это возможно.Кто-нибудь может объяснить?