/** * Whether we use lightweight tags or not for describe Candidates * * @param ref * reference under inspection * @return true if it should be used for describe or not regarding * {@link org.eclipse.jgit.api.DescribeCommand#useTags} */ @SuppressWarnings("null") private boolean filterLightweightTags(Ref ref) { ObjectId id = ref.getObjectId(); try { return this.useTags || (id != null && (w.parseTag(id) != null)); } catch (IOException e) { return false; } } }
private Date tagDate(Ref tag) throws IOException { RevTag t = w.parseTag(tag.getObjectId()); w.parseBody(t); return t.getTaggerIdent().getWhen(); } };
@Nonnull public static RevTag getTag(@Nonnull AnyObjectId tagObjectId, @Nonnull ObjectReader reader) throws IOException { try(RevWalk revWalk = new RevWalk(reader)) { return revWalk.parseTag(tagObjectId); } }
@Nonnull public static RevTag getTag(AnyObjectId tagObjectId, ObjectReader reader) throws IOException { try(RevWalk revWalk = new RevWalk(reader)) { return revWalk.parseTag(tagObjectId); } }
Repository repository = ... ObjectId objectId = ObjectId.fromString( "a33a2d4dff046b3a19e36b3d1026fbcc5b806889" ); RevWalk revWalk = new RevWalk( repository ); RevTag revTag = revWalk.parseTag( objectId ); // do something with revTag revWalk.release();
@Nonnull public static RevTag getTag(AnyObjectId tagObjectId, ObjectReader reader) throws IOException { try(RevWalk revWalk = new RevWalk(reader)) { return revWalk.parseTag(tagObjectId); } }
/** * Whether we use lightweight tags or not for describe Candidates * * @param ref * reference under inspection * @return true if it should be used for describe or not regarding * {@link org.eclipse.jgit.api.DescribeCommand#useTags} */ @SuppressWarnings("null") private boolean filterLightweightTags(Ref ref) { ObjectId id = ref.getObjectId(); try { return this.useTags || (id != null && (w.parseTag(id) != null)); } catch (IOException e) { return false; } } }
/** * Retrieve the date of the given tag. * @param tagObjectId a non null {@link ObjectId} of a tag * @return the date of the date */ public Date dateOfTagObjectId(ObjectId tagObjectId) throws IOException { return revWalk.parseTag(tagObjectId).getTaggerIdent().getWhen(); }
private Map<String, List<RevTag>> createCommitIDToTagsMap(Repository repository, RevWalk revWalk) throws IOException { Map<String, Ref> allTags = repository.getTags(); Map<String, List<RevTag>> revTags = new HashMap<String, List<RevTag>>(); for (Ref ref : allTags.values()) { try { RevTag revTag = revWalk.parseTag(ref.getObjectId()); String commitID = revTag.getObject().getId().getName(); if (!revTags.containsKey(commitID)) { revTags.put(commitID, new ArrayList<RevTag>()); } revTags.get(commitID).add(revTag); } catch (IncorrectObjectTypeException e) { log.debug("Light-weight tags not supported. Skipping " + ref.getName()); } } return revTags; }
private Date getAnnotatedTagDate(Ref ref) { try { RevTag tag = walk.parseTag(ref.getObjectId()); PersonIdent identity = tag.getTaggerIdent(); return identity.getWhen(); } catch (Exception ignored) { return null; } }
/** * @param event * @return the tags * @throws ExecutionException */ protected List<RevTag> getRevTags(ExecutionEvent event) throws ExecutionException { Repository repo = getRepository(event); Collection<Ref> revTags = repo.getTags().values(); List<RevTag> tags = new ArrayList<RevTag>(); RevWalk walk = new RevWalk(repo); for (Ref ref : revTags) { try { tags.add(walk.parseTag(repo.resolve(ref.getName()))); } catch (IOException e) { throw new ExecutionException(e.getMessage(), e); } } return tags; }
private Date tagDate(Ref tag) throws IOException { RevTag t = w.parseTag(tag.getObjectId()); w.parseBody(t); return t.getTaggerIdent().getWhen(); } };
/** {@inheritDoc} */ @Override public String getTagMessage(String tagName) throws GitException { try (Repository repo = getRepository(); ObjectReader or = repo.newObjectReader(); RevWalk walk = new RevWalk(or)) { return walk.parseTag(repo.resolve(tagName)).getFullMessage().trim(); } catch (IOException e) { throw new GitException(e); } }
private boolean excludeTag(Ref ref, Repository repo) { if (ref instanceof PeeledTag) { RevWalk rw = new RevWalk(repo); try { RevTag tag = rw.parseTag(ref.getObjectId()); return !(rw.parseAny(tag.getObject()) instanceof RevCommit); } catch (IOException e) { Activator.logError(e.getMessage(), e); } finally { rw.dispose(); } } return false; }
@Override public Map<String, RevTag> findTagsBetween(Git git, RevCommit c1, RevCommit c2) throws GitAPIException, IOException { Map<ObjectId, List<RevTag>> reverseReferences = new HashMap<>(); RevWalk walk = new RevWalk(git.getRepository()); for (Ref t : git.tagList().call()) { Ref peeled = git.getRepository().peel(t); if (peeled != null && peeled.getPeeledObjectId() != null) { if (!reverseReferences.containsKey(peeled.getPeeledObjectId())) { reverseReferences.put(peeled.getPeeledObjectId(), new LinkedList<RevTag>()); } reverseReferences.get(peeled.getPeeledObjectId()).add(walk.parseTag(t.getObjectId())); } } Map<String, RevTag> result = new HashMap<>(); Iterable<RevCommit> commits = git.log().addRange(c1, c2).call(); for (RevCommit commit : commits) { if (reverseReferences.containsKey(commit.getId())) { for (RevTag tag : reverseReferences.get(commit.getId())) { result.put(tag.getTagName(), tag); } } } return result; }
public static AnnotatedTag fromRef(Repository repository, Ref gitTag) throws IOException, IncorrectObjectTypeException { Guard.notNull("gitTag", gitTag); RevWalk walk = new RevWalk(repository); JSONObject message; try { ObjectId tagId = gitTag.getObjectId(); RevTag tag = walk.parseTag(tagId); message = (JSONObject) JSONValue.parse(tag.getFullMessage()); } finally { walk.dispose(); } if (message == null) { message = new JSONObject(); message.put(VERSION, "0"); message.put(BUILD_NUMBER, "0"); } return new AnnotatedTag(gitTag, stripRefPrefix(gitTag.getName()), message); }
private void showTag(Ref ref, Repository repo) { RevWalk rw = new RevWalk(repo); try { RevCommit c = null; RevObject any = rw.parseAny(ref.getLeaf().getObjectId()); if (any instanceof RevCommit) c = (RevCommit) any; else if (any instanceof RevTag) { RevTag t = rw.parseTag(any); Object anyCommit = rw.parseAny(t.getObject()); if (anyCommit instanceof RevCommit) c = (RevCommit) anyCommit; } if (c != null) graph.selectCommit(c); } catch (IOException e) { Activator.handleError(e.getMessage(), e, true); } }
@Override public CommitRef getCommitRefForTag(TagRef ref) { try { if (repository == null) { initRepository(); } AnyObjectId tagRef = repository.resolve(ref.getStringRepresentation()); if (tagRef == null) { LOGGER.debug("Couldnt resolve reference {} in repository", ref.getStringRepresentation()); return null; } RevWalk walk = new RevWalk(repository); RevTag revTag = walk.parseTag(tagRef); CommitRef commitRef = null; if (revTag.getObject() instanceof RevCommit) { commitRef = new GitCommitRef((RevCommit) revTag.getObject()); LOGGER.debug("Resolved reference {} to commit {}", ref.getStringRepresentation(), commitRef.getStringRepresentation()); } return commitRef; } catch (IOException e) { throw new ScmException(e); } }
@Rule public final TemporaryFolder tempFolder = new TemporaryFolder(); @Test public void testRevWalkDoesNotLeakResources() throws Exception { Git git = Git.init().setDirectory( tempFolder.getRoot() ).call(); git.commit().setMessage( "First commit" ).call(); git.tag().setName( "First-Tag" ).call(); Ref tagRef = git.getRepository().getRef( "refs/tags/First-Tag" ); RevWalk revWalk = new RevWalk( git.getRepository() ); RevTag tag = revWalk.parseTag( tagRef.getObjectId() ); revWalk.release(); git.getRepository().close(); tempFolder.delete(); assertNotNull( tag ); assertFalse( tempFolder.getRoot().exists() ); }