Libgit2中如何判断快进和不快进?

How to judge fast-forward and no-fast-forward in Libgit2?

我在使用libgit2 merge的时候,发现每次merge都会产生一个新的oid,所以在merge commit之前应该有一个判断是否需要merge commit的函数。我用git_merge_analysis()来判断是哪种合并方法,但是总是returnsGIT_MERGE_ANALYSIS_UP_TO_DATE,想知道如果这是一个好习惯,那么最好的方法是什么?

如果可能,

git_merge_analysis 应该 return GIT_MERGE_ANALYSIS_FASTFORWARD。否则,假设它还不是最新的(提交 oid 相等),正常结果表明像往常一样需要合并——这是不可能进行快进合并的时候。

就个人而言,当第一次使用 libgit2 时,我经常混淆 'ours' 和 'theirs',这导致了意想不到的结果。由于分析方法将 'theirs' 与当前 HEAD 进行比较,如果 'theirs' 等于或已经是 HEAD 当前引用的提交的祖先(哪个可能已设置为先前合并的结果)。然而,如果交换了东西,如果 HEAD 是 'theirs'.

的祖先,你会得到快进的结果