2

JGit を使用してファイルの変更履歴を表示しようとしています。コミットメッセージの履歴を取得できました。しかし、各コミットに関連する変更を取得できませんでした ( など git log -p)。

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);
    }
}
4

2 に答える 2

2

DiffFormatter http://codesnippetx.blogspot.com/を使用して以下で解決

于 2013-10-30T08:52:29.167 に答える
0

純粋な Java を介してパッチを表示する簡単な方法がない場合は、git への呼び出しをラップLogCommandするクラスを使用してアイデアを得ることができます。org.eclipse.jgit.pgm.Log

ラッパーとして、-pオプションがあります。

于 2013-10-28T07:45:37.080 に答える