开发者

jgit repository browser

开发者 https://www.devze.com 2023-03-13 16:44 出处:网络
I would like to create a git repository browser with jgit. But i don\'t know how to get the last modified date and the last commit message for a file. Here is my current code for the browser:

I would like to create a git repository browser with jgit. But i don't know how to get the last modified date and the last commit message for a file. Here is my current code for the browser:

File dir开发者_C百科ectory = new File("/Users/sdorra/.scm/repositories/git/scm-git");
Repository repository =
  RepositoryCache.open(RepositoryCache.FileKey.lenient(directory,
    FS.DETECTED), true);

try
{
  ObjectId revId = repository.resolve(Constants.HEAD);
  DirCache cache = new DirCache(directory, FS.DETECTED);
  TreeWalk treeWalk = new TreeWalk(repository);

  treeWalk.addTree(new RevWalk(repository).parseTree(revId));
  treeWalk.addTree(new DirCacheIterator(cache));

  while (treeWalk.next())
  {
    System.out.println("---------------------------");
    System.out.append("name: ").println(treeWalk.getNameString());
    System.out.append("path: ").println(treeWalk.getPathString());

    ObjectLoader loader = repository.open(treeWalk.getObjectId(0));

    System.out.append("directory: ").println(loader.getType()
                      == Constants.OBJ_TREE);
    System.out.append("size: ").println(loader.getSize());
    // ???
    System.out.append("last modified: ").println("???");
    System.out.append("message: ").println("???");
  }
}
finally
{
  if (repository != null)
  {
    repository.close();
  }
}

It is possible to get the last commit of a file?

Note: My git repository is a bare repository without working copy.


You're using lower level JGit API, why don't you use LogCommand via the org.eclipse.jgit.api package? Then use addPath(...), call()...

After that, you should get a list of RevCommit's for the specified path.

0

精彩评论

暂无评论...
验证码 换一张
取 消