[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[jgit-dev] Commits and tags
|
Hi, All !
I'm using jgit from org.eclipse.jgit_2.0.0.201206121211.jar. Could
anybody please to help me to solve issue ?
I need to find last tagged commit in my branch.
http://stackoverflow.com/questions/7501646/jgit-retrieve-tag-associated-with-a-git-commit?rq=1
doesn't help me because git.tagList().call() returns List<Ref> instead
List<RevTag>.
As far as I understand, I can get reference to tagged RevCommit by
tagRef.getPeeledObjectId(). Am I right ?
So, I created RevWalk by code:
Ref ref = gitRepository.getRef(Constants.HEAD);
RevWalk walk = new RevWalk(gitRepository);
walk.markStart(walk.parseCommit(ref.getObjectId()));
for (RevCommit commit : walk) {
...
}
I have correct list of commits from latest to earlier, and I want to
compare each commit with tags. I retrieved tags by
gitRepository.getTags(). Refs in this map pointed to tag, not to
commit. Just like in .git/refs/tags/* files. But for all tags in this
map, tagRef.getPeeledObjectID() is always null.
After that, I runned "git gc" from command line, then it moved tags to
.git/packed-refs file. After that, tagRef.getPeeledObjectId() contains
correct ID for commit.
So, am I using correct algorithm for find last tagged commit ? Why
tagRef.getPeeledObjectId() works only after "git gc" ? Is it jgit bug
?
BTW, I created tags by JGit.
WBR, Alex.