Example usage for org.eclipse.jgit.lib Repository peel

List of usage examples for org.eclipse.jgit.lib Repository peel

Introduction

In this page you can find the example usage for org.eclipse.jgit.lib Repository peel.

Prototype

@Deprecated
@NonNull
public Ref peel(Ref ref) 

Source Link

Document

Peel a possibly unpeeled reference to an annotated tag.

Usage

From source file:com.github.checkstyle.github.NotesBuilder.java

License:Open Source License

/**
 * Returns actual SHA-1 object by commit reference.
 * @param repo git repository.//from w w w  .j a  v  a 2 s .  c om
 * @param ref string representation of commit reference.
 * @return actual SHA-1 object.
 * @throws IOException if an I/O error occurs.
 */
private static ObjectId getActualRefObjectId(Repository repo, String ref) throws IOException {
    final ObjectId actualObjectId;
    final Ref referenceObj = repo.findRef(ref);
    if (referenceObj == null) {
        actualObjectId = repo.resolve(ref);
    } else {
        final Ref repoPeeled = repo.peel(referenceObj);
        actualObjectId = Optional.ofNullable(repoPeeled.getPeeledObjectId()).orElse(referenceObj.getObjectId());
    }
    return actualObjectId;
}

From source file:com.github.checkstyle.NotesBuilder.java

License:Open Source License

/**
 * Returns actual SHA-1 object by commit reference.
 * @param repo git repository.//from  ww  w  .ja  v  a  2s. c om
 * @param ref string representation of commit reference.
 * @return actual SHA-1 object.
 * @throws IOException if an I/O error occurs.
 */
private static ObjectId getActualRefObjectId(Repository repo, String ref) throws IOException {
    final ObjectId actualObjectId;
    final Ref referenceObj = repo.getRef(ref);
    if (referenceObj == null) {
        actualObjectId = repo.resolve(ref);
    } else {
        final Ref repoPeeled = repo.peel(referenceObj);
        actualObjectId = Optional.ofNullable(repoPeeled.getPeeledObjectId()).orElse(referenceObj.getObjectId());
    }
    return actualObjectId;
}

From source file:com.google.gerrit.server.git.TagSet.java

License:Apache License

void build(Repository git, TagSet old, TagMatcher m) {
    if (old != null && m != null && refresh(old, m)) {
        return;/*from w ww  .  j  a v  a 2  s. co m*/
    }

    try (TagWalk rw = new TagWalk(git)) {
        rw.setRetainBody(false);
        for (Ref ref : git.getRefDatabase().getRefs(RefDatabase.ALL).values()) {
            if (skip(ref)) {
                continue;

            } else if (isTag(ref)) {
                // For a tag, remember where it points to.
                addTag(rw, git.peel(ref));

            } else {
                // New reference to include in the set.
                addRef(rw, ref);
            }
        }

        // Traverse the complete history. Copy any flags from a commit to
        // all of its ancestors. This automatically updates any Tag object
        // as the TagCommit and the stored Tag object share the same
        // underlying bit set.
        TagCommit c;
        while ((c = (TagCommit) rw.next()) != null) {
            BitSet mine = c.refFlags;
            int pCnt = c.getParentCount();
            for (int pIdx = 0; pIdx < pCnt; pIdx++) {
                ((TagCommit) c.getParent(pIdx)).refFlags.or(mine);
            }
        }
    } catch (IOException e) {
        log.warn("Error building tags for repository " + projectName, e);
    }
}

From source file:jbyoshi.gitupdate.processor.FastForward.java

License:Apache License

private static boolean tryFastForward(Repository repo, Ref ref, Ref target, Report report)
        throws GitAPIException, IOException {
    if (ref == null || target == null) {
        return false;
    }/*  www . java 2  s .  c om*/
    target = repo.peel(target);
    if (!ref.equals(repo.getRef(Constants.HEAD).getTarget())) {
        try (RevWalk revWalk = new RevWalk(repo)) {
            ObjectId targetId = target.getPeeledObjectId();
            if (targetId == null) {
                targetId = target.getObjectId();
            }

            RevCommit targetCommit = revWalk.lookupCommit(targetId);
            ObjectId sourceId = ref.getObjectId();
            RevCommit sourceCommit = revWalk.lookupCommit(sourceId);
            if (revWalk.isMergedInto(sourceCommit, targetCommit)) {
                RefUpdate refUpdate = repo.updateRef(ref.getName());
                refUpdate.setNewObjectId(targetCommit);
                refUpdate.setRefLogMessage("Fast forward", false);
                refUpdate.setExpectedOldObjectId(sourceId);
                Result rc = refUpdate.update();
                switch (rc) {
                case NEW:
                case FAST_FORWARD:
                    report.newChild(ref.getName() + " -> " + target.getName()).modified();
                    return true;
                case REJECTED:
                case LOCK_FAILURE:
                    report.newErrorChild(new ConcurrentRefUpdateException(JGitText.get().couldNotLockHEAD,
                            refUpdate.getRef(), rc));
                    break;
                case NO_CHANGE:
                    break;
                default:
                    report.newErrorChild(new JGitInternalException(MessageFormat
                            .format(JGitText.get().updatingRefFailed, ref.getName(), targetId.toString(), rc)));
                    break;
                }
            }
            return false;
        }
    }
    try {
        MergeResult result = Git.wrap(repo).merge().setFastForward(MergeCommand.FastForwardMode.FF_ONLY)
                .include(target.getTarget()).call();
        if (result.getMergeStatus() == MergeResult.MergeStatus.ALREADY_UP_TO_DATE) {
            // Ignore
        } else if (result.getMergeStatus() == MergeResult.MergeStatus.FAST_FORWARD) {
            report.newChild("Fast-forwarded " + ref.getName() + " to " + target.getName()).modified();
            return true;
        } else {
            report.newChild("Fast-forward failed: status " + result.getMergeStatus()).error();
        }
    } catch (NoHeadException e) {
        // Ignore
    }
    return false;
}

From source file:org.eclipse.egit.ui.internal.commit.CommitEditorPage.java

License:Open Source License

private List<Ref> loadTags() {
    RepositoryCommit repoCommit = getCommit();
    RevCommit commit = repoCommit.getRevCommit();
    Repository repository = repoCommit.getRepository();
    List<Ref> tags = new ArrayList<Ref>();
    for (Ref tag : getTags()) {
        tag = repository.peel(tag);
        ObjectId id = tag.getPeeledObjectId();
        if (id == null)
            id = tag.getObjectId();//from w  w  w.  j  a  v  a2  s  .  c o  m
        if (!commit.equals(id))
            continue;
        tags.add(tag);
    }
    return tags;
}

From source file:org.repodriller.scm.GitRepository.java

License:Apache License

private ObjectId getActualRefObjectId(Ref ref, Repository repo) {
    final Ref repoPeeled = repo.peel(ref);
    if (repoPeeled.getPeeledObjectId() != null) {
        return repoPeeled.getPeeledObjectId();
    }//from   w w w. jav  a 2 s  .co  m
    return ref.getObjectId();
}