JGit获取文件

我在两个不同的文件夹( folder1folder2 )中有一个存储库。 仓库中有一个"oldFile"文件

folder1我执行以下步骤:

echo 123 > oldFile
touch newFile
git add newFile oldFile
git commit -m "Change the oldFile from folder1 and add the newFile" oldFile newFile
git push origin master

之后,在文件folder2我执行下列步骤:

echo zxc > oldFile;
git add oldFile;
git commit oldFile -m "Change oldFile from folder2"

在这种情况下,我想要得到合并冲突

我想看到拉文件。 我从这里得到了榜样。

ObjectId oldHead = repository.resolve("HEAD^{tree}"); //save old objectId

PullResult pullResult = pullCommand.setProgressMonitor(new TextProgressMonitor(new OutputStreamWriter(System.out))).call();

ObjectId head = repository.resolve("HEAD^{tree}");

ObjectReader reader = repository.newObjectReader();
CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
oldTreeIter.reset(reader, oldHead);
CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
newTreeIter.reset(reader, head);
List<DiffEntry> diffs= git.diff()
                    .setNewTree(newTreeIter)
                    .setOldTree(oldTreeIter)
                    .call();

pullResult.getMergeResult().getMergeConflicts()我只有文件oldFilediffs收集是空的。

在一个简单的例子中(当我不改变folder2 OldFile时)diffs集合不是空的 - 它有1个文件“newFile”和pullResult.getMergeResult().getMergeConflicts()是emtpy(很明显)。

我做错了什么? 我想得到冲突的文件和成功的拉文件。


我找到了答案。 需要使用

ObjectId head = git.getRepository().resolve("refs/remotes/origin/HEAD^{tree}");

代替

ObjectId head = repository.resolve("HEAD^{tree}");

链接地址: http://www.djcxy.com/p/92573.html

上一篇: JGit get pulled files

下一篇: Only on azure: Could not create SSL/TLS secure channel