Как судить о перемотке вперед и без перемотки вперед в Libgit2? - PullRequest
0 голосов
/ 05 мая 2018

Когда я использовал слияние libgit2, я обнаружил, что каждое слияние создает новый oid , поэтому должна существовать функция, позволяющая определить, требуется ли слияние перед фиксацией слияния. Я использую git_merge_analysis () , чтобы определить, какой метод слияния, но он всегда возвращает GIT_MERGE_ANALYSIS_UP_TO_DATE , задаваясь вопросом, если это хорошая практика, то каков наилучший способ сделать это?

1 Ответ

0 голосов
/ 11 мая 2018

git_merge_analysis должен вернуть GIT_MERGE_ANALYSIS_FASTFORWARD , когда это возможно. В противном случае, если предположить, что он еще не обновлен (значения oid коммитов равны), обычный результат указывает на то, что слияние необходимо как обычно, то есть когда слияние в ускоренном режиме невозможно.

Лично, когда я впервые использовал libgit2, я регулярно смешивал «наши» и «их», что приводило к неожиданным результатам. Поскольку метод анализа сравнивает «их» с текущим HEAD, вы можете получить актуальный результат, если «их» равен или уже является предком коммита, на который ссылается в настоящее время HEAD (который мог быть установлен в результате предыдущего слияния). Принимая во внимание, что если что-то поменять местами, вы получите быстрый результат, если HEAD был предком «их».

...