JGit显示远程更改,如git diff --name-status主源/主 [英] JGit Show remote changes like git diff --name-status master origin/master

查看:1124
本文介绍了JGit显示远程更改,如git diff --name-status主源/主的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试一下JGIT。
它工作的很好,但我还没有发现如何在进行拉动之前在远程git上显示更改。
在终端中,我通过以下步骤解决了我的问题: $ b


  1. git fetch


  2. git diff --name-status master origin / master p>


如何使用JGit获取远程更改?有没有人有一个想法?



我认为线程我该如何做等价的git diff --name-status使用jgit?可以提供帮助,但我不知道如何获得远程HEAD。

解决方案

了解如何获取远程HEAD(FETCH_HEAD)。
现在我的代码如下:

  git.fetch()。call(); 
Repository repo = git.getRepository();
ObjectId fetchHead = repo.resolve(FETCH_HEAD ^ {tree});
ObjectId head = repo.resolve(HEAD ^ {tree});

ObjectReader reader = repo.newObjectReader();
CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
oldTreeIter.reset(reader,head);
CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
newTreeIter.reset(reader,fetchHead);
列表< DiffEntry> diffs = git.diff()。setShowNameAndStatusOnly(true)
.setNewTree(newTreeIter)
.setOldTree(oldTreeIter)
.call(); (DiffEntry entry:diffs){
System.out.println(entry.toString());

}

它显示了我想要的远程更改,但它不正确。如果我在我的工作副本中创建一个新文件并提交文件(无需推送),则差异显示新文件在FETCH_HEAD中被删除。
如何过滤这个虚假的删除信息?


I'm trying a bit with JGIT. It's work very well, but I haven't found out how to show changes on a remote git before makeing a pull. In the terminal I solved my problem with the following steps:

  1. git fetch

  2. git diff --name-status master origin/master

How can I get the remote changes with JGit? Has anyone a idea?

I think the thread How do I do the equivalent of "git diff --name-status" with jgit? can help, but I don't know how to get the remote HEAD.

解决方案

I found out how to get the remote HEAD (FETCH_HEAD). Now my Code is as follows:

git.fetch().call();
Repository repo = git.getRepository();      
ObjectId fetchHead = repo.resolve("FETCH_HEAD^{tree}");
ObjectId head = repo.resolve("HEAD^{tree}");

ObjectReader reader = repo.newObjectReader();
CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
oldTreeIter.reset(reader, head);
CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
newTreeIter.reset(reader, fetchHead);
List<DiffEntry> diffs= git.diff().setShowNameAndStatusOnly(true)
                        .setNewTree(newTreeIter)
                        .setOldTree(oldTreeIter)
                        .call();
for(DiffEntry entry : diffs) {
    System.out.println(entry.toString());
}

It shows me remote changes like I wanted, but it works not correct. If I create a new File in my working-copy and commit the file (without to push), then the diff show me that the new file is deleted in the FETCH_HEAD. How can I filter this false delete messages?

这篇关于JGit显示远程更改,如git diff --name-status主源/主的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆