如何使用 JGit 获取冲突行

2024-01-09

我正在开发使用 JGit 的应用程序。

拉取后,我有冲突的文件。我可以从

List<String> list = git.status().call().getConflicting();

该列表包含冲突的文件。

我知道,我可以从中获取冲突的文件

Map<String, int[][]> conflicts = git.pull().call().getMergeResult().getConflicts();

但如果我重新启动我的应用程序,它就不起作用。重新启动后,我将得到一个空地图,因为当存储库处于合并状态时我无法重做拉取。

如何通过 JGit API 通过文件名获取冲突行?


你可以尝试使用ResolveMerger像这样重新运行合并:

ThreeWayMerger merger = StrategyResolve.newMerger(repository, true);
merger.merge(headCommit, fetchedCommit);

请注意,MergeCommand在拉取期间调用的方法可能会使用不同的合并策略。有关详细信息,请参阅 MergeCommand ~ 第 337 行。但是,请确保创建一个in-core合并(第二个参数必须是true).

With merger.getMergeResults()你应该能够得到冲突的线条。

然而,整个方法可能会失败,因为您的工作目录已经被冲突标记弄脏了 (

如果您从上游存储库获取更改(不立即合并),您可以根据需要经常按上述方式试运行合并。这FetchResult由返回FetchCommand::call()包含有关已获取的提交的信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 JGit 获取冲突行 的相关文章

随机推荐