我正在使用StashApplyCommand
该类将隐藏的提交应用于工作树。如果发生冲突,call()
此类的方法将抛出StashApplyFailureException
。
但是,我找不到一种方法来检索冲突列表。与不同MergeCommand
,StashApplyCommand
不会将列表作为call()
方法返回值的一部分返回。
是否完全有可能检索由JGit中的隐藏应用程序引起的冲突?
我遇到了同样的问题,无法找到一种方法StashApplyCommand
告诉我哪些文件引起了冲突。
我当前使用的解决方法是使用aResolveMerger
来查看是否可以应用隐藏。如果存在冲突的文件,则合并程序可以列出它们。
例如:
ObjectId headCommitId = // id of head commit
RevCommit stashCommit = // parsed stash (commit) to be applied
ObjectId stashHeadCommit = stashCommit.getParent( 0 );
ResolveMerger merger = ( ResolveMerger )MergeStrategy.RESOLVE.newMerger( repository, true );
merger.setWorkingTreeIterator( new FileTreeIterator( repository ) );
merger.setBase( stashHeadCommit );
if( !merger.merge( headCommitId, stashCommit ) ) {
// look into merger.getFailingPaths() and merger.getUnmergedPaths()
}
请注意,上述代码段无法检测到索引冲突,因为在我的环境中,索引永远不会导致冲突。尽管应该可以扩展这种方法来检查索引是否存在冲突。IIRCstashCommit.getParent( 1 )
指向隐匿的指数。
希望有一天解决方案过时,我提出了一项增强请求:https : //bugs.eclipse.org/bugs/show_bug.cgi?id=501475
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句