diff options
author | Arthur Baars <arthur@semmle.com> | 2013-03-31 15:28:47 +0100 |
---|---|---|
committer | Arthur Baars <arthur@semmle.com> | 2013-03-31 15:36:47 +0100 |
commit | 35be98fb8ffb2b21144f23efc599505fa3d60dd7 (patch) | |
tree | c2378107c859eb08bed9245b7c5aaf04e5764e6b | |
parent | 2b9c440fd1a08158b5e69d3a9e1a5bed4a17b286 (diff) | |
download | jgit-35be98fb8ffb2b21144f23efc599505fa3d60dd7.tar.gz jgit-35be98fb8ffb2b21144f23efc599505fa3d60dd7.zip |
LogCommand.all(): filter out refs that do not refer to commit objects
1. I have authored 100% of the content I'm contributing,
2. I have the rights to donate the content to Eclipse,
3. I contribute the content under the EDL
Change-Id: I48b1828e0b1304f76276ec07ebac7ee9f521b194
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/api/LogCommandTest.java | 8 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java | 15 |
2 files changed, 21 insertions, 2 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/LogCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/LogCommandTest.java index c6402e75ea..34432c588b 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/LogCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/LogCommandTest.java @@ -100,11 +100,17 @@ public class LogCommandTest extends RepositoryTestCase { commits.add(git.commit().setMessage("initial commit").call()); TagCommand tagCmd = git.tag(); - tagCmd.setName("tagname"); + tagCmd.setName("tagcommit"); tagCmd.setObjectId(commits.get(0)); tagCmd.setTagger(new PersonIdent(db)); Ref tag = tagCmd.call(); + tagCmd = git.tag(); + tagCmd.setName("tagtree"); + tagCmd.setObjectId(commits.get(0).getTree()); + tagCmd.setTagger(new PersonIdent(db)); + tagCmd.call(); + Iterator<RevCommit> log = git.log().all().call().iterator(); assertTrue(log.hasNext()); RevCommit commit = log.next(); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java index 70b3658d93..cad2790aca 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/LogCommand.java @@ -241,10 +241,23 @@ public class LogCommand extends GitCommand<Iterable<RevCommit>> { for (Ref ref : getRepository().getAllRefs().values()) { if(!ref.isPeeled()) ref = getRepository().peel(ref); + ObjectId objectId = ref.getPeeledObjectId(); if (objectId == null) objectId = ref.getObjectId(); - add(objectId); + RevCommit commit = null; + try { + commit = walk.parseCommit(objectId); + } catch (MissingObjectException e) { + // ignore: the ref points to an object that does not exist; + // it should be ignored as traversal starting point. + } catch (IncorrectObjectTypeException e) { + // ignore: the ref points to an object that is not a commit + // (e.g. a tree or a blob); + // it should be ignored as traversal starting point. + } + if (commit != null) + add(commit); } return this; } |