2013-10-28 80 views
2

我正在尝试使用JGit显示文件变更历史记录。我设法获取提交消息的历史记录。但不能得到与每个提交的更改(如git log -p),基本上我需要检查什么变化......(如+, - 日志命令)在JGit中记录变更历史记录

public void test() { 

    try { 
     File gitWorkDir = new File("/home/test/GITTEST/"); 
     Git git = null; 
     git = Git.open(gitWorkDir); 
     Repository repo = git.getRepository(); 
     LogCommand log = git.log(); 
     log.setMaxCount(2); 
     Iterable<RevCommit> logMsgs = log.call(); 
     for (RevCommit commit : logMsgs) { 
      System.out.println("----------------------------------------"); 
      System.out.println(commit); 
      System.out.println(commit.getAuthorIdent().getName()); 
      System.out.println(commit.getAuthorIdent().getWhen()); 
      System.out.println(" ---- " + commit.getFullMessage()); 
      System.out.println("----------------------------------------"); 
      RevTree tree = commit.getTree(); 

TreeWalk treeWalk = new TreeWalk(repo); 
treeWalk.addTree(tree); 
treeWalk.setRecursive(true); 
treeWalk.setFilter(TreeFilter.ANY_DIFF); 

//treeWalk.setFilter(PathFilter.create(".")); 
if (!treeWalk.next()) 
{ 
    System.out.println("Nothing found!"); 
    return; 
} 
ObjectId objectId = treeWalk.getObjectId(0); 
ObjectLoader loader = repo.open(objectId); 
ByteArrayOutputStream out = new ByteArrayOutputStream(); 
loader.copyTo(out); 
System.out.println("----" + out.toString()); 
     System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>----------------------------------------");  
     } 
    } catch (Exception e) { 
     System.out.println("no head exception : " + e); 
    } 
} 
+0

http://codesnippetx.blogspot.com/ – lakmal

回答

0

如果没有简单的方法来通过纯java LogCommand显示修补程序,您可以使用org.eclipse.jgit.pgm.Log类,它将调用包装为git。

作为包装,它确实有-p选项。

+0

感谢VonC以下,使用Logcommand我可以承诺与ifle信息资讯。这些信息只是文字,并不能确定变化是什么 – lakmal

+0

@lakmal我同意。除了日志以外,我只能看到'org.eclipse.jgit.pgm.Log'能够显示这些补丁信息。 – VonC