Example usage for org.eclipse.jgit.revwalk RevSort REVERSE

List of usage examples for org.eclipse.jgit.revwalk RevSort REVERSE

Introduction

In this page you can find the example usage for org.eclipse.jgit.revwalk RevSort REVERSE.

Prototype

RevSort REVERSE

To view the source code for org.eclipse.jgit.revwalk RevSort REVERSE.

Click Source Link

Document

Flip the output into the reverse ordering.

Usage

From source file:at.ac.tuwien.inso.subcat.miner.GitMiner.java

License:Open Source License

private void _run() throws IOException, MinerException, SQLException {
    FileRepositoryBuilder builder = new FileRepositoryBuilder();
    Repository repository = builder.setGitDir(new File(settings.srcLocalPath, ".git")).readEnvironment()
            .findGitDir().build();//from w  w  w . j  av  a 2 s.com

    /*
    Map<String,Ref> refs = repository.getAllRefs();
    for (Map.Entry<String, Ref> ref : refs.entrySet ()) {
       System.out.println (ref.getKey ());
    }
    */

    Ref head = repository.getRef(startRef);
    if (head == null) {
        throw new MinerException("Unknown reference: '" + startRef + "'");
    }

    RevWalk walk = new RevWalk(repository);
    RevCommit commit = walk.parseCommit(head.getObjectId());
    walk.markStart(commit);
    walk.sort(RevSort.REVERSE);

    // count commit: (fast)
    int commitCount = 0;
    Iterator<RevCommit> iter = walk.iterator();
    while (iter.hasNext()) {
        iter.next();
        commitCount++;
    }

    emitTasksTotal(commitCount);

    // process commits: (slow)
    walk.reset();
    walk.markStart(commit);
    walk.sort(RevSort.REVERSE);

    Map<String, ManagedFile> fileCache = new HashMap<String, ManagedFile>();

    for (RevCommit rev : walk) {
        if (stopped == true) {
            break;
        }

        processCommit(repository, walk, rev, fileCache);
    }

    walk.dispose();
    repository.close();
}

From source file:boa.datagen.scm.GitConnector.java

License:Apache License

@Override
protected void setRevisions() {
    try {//from   w  w w .j av  a 2 s . co m
        revwalk.reset();
        revwalk.markStart(revwalk.parseCommit(repository.resolve(Constants.HEAD)));
        revwalk.sort(RevSort.TOPO, true);
        revwalk.sort(RevSort.COMMIT_TIME_DESC, true);
        revwalk.sort(RevSort.REVERSE, true);

        revisions.clear();
        revisionMap = new HashMap<String, Integer>();

        for (final RevCommit rc : revwalk) {
            final GitCommit gc = new GitCommit(repository, this);

            gc.setId(rc.getName());
            gc.setAuthor(rc.getAuthorIdent().getName());
            gc.setCommitter(rc.getCommitterIdent().getName());
            gc.setDate(new Date(((long) rc.getCommitTime()) * 1000));
            gc.setMessage(rc.getFullMessage());

            gc.getChangeFiles(this.revisionMap, rc);

            revisionMap.put(gc.id, revisions.size());
            revisions.add(gc);
        }
    } catch (final IOException e) {
        if (debug)
            System.err.println("Git Error getting parsing HEAD commit for " + path + ". " + e.getMessage());
    }
}

From source file:br.com.metricminer2.scm.GitRepository.java

License:Apache License

public SCMRepository info() {
    RevWalk rw = null;/*from   w  ww  . jav a2 s  .co  m*/
    Git git = null;
    try {
        git = Git.open(new File(path));
        AnyObjectId headId = git.getRepository().resolve(Constants.HEAD);

        rw = new RevWalk(git.getRepository());
        RevCommit root = rw.parseCommit(headId);
        rw.sort(RevSort.REVERSE);
        rw.markStart(root);
        RevCommit lastCommit = rw.next();

        String origin = git.getRepository().getConfig().getString("remote", "origin", "url");

        return new SCMRepository(this, origin, path, headId.getName(), lastCommit.getName());
    } catch (Exception e) {
        throw new RuntimeException("error when info " + path, e);
    } finally {
        if (rw != null)
            rw.release();
        if (git != null)
            git.close();
    }

}

From source file:com.gitblit.plugin.flowdock.TicketMessageGenerator.java

License:Apache License

private List<RevCommit> getCommits(String repositoryName, String baseId, String tipId) {
    IRepositoryManager repositoryManager = GitblitContext.getManager(IRepositoryManager.class);
    Repository db = repositoryManager.getRepository(repositoryName);
    List<RevCommit> list = new ArrayList<RevCommit>();
    RevWalk walk = new RevWalk(db);
    walk.reset();//from  w  ww  . j  a v a2  s.  co m
    walk.sort(RevSort.TOPO);
    walk.sort(RevSort.REVERSE, true);
    try {
        RevCommit tip = walk.parseCommit(db.resolve(tipId));
        RevCommit base = walk.parseCommit(db.resolve(baseId));
        walk.markStart(tip);
        walk.markUninteresting(base);
        for (;;) {
            RevCommit c = walk.next();
            if (c == null) {
                break;
            }
            list.add(c);
        }
    } catch (IOException e) {
        // Should never happen, the core receive process would have
        // identified the missing object earlier before we got control.
        log.error("failed to get commits", e);
    } finally {
        walk.release();
        db.close();
    }
    return list;
}

From source file:com.gitblit.utils.JGitUtils.java

License:Apache License

/**
 * Returns the first commit on a branch. If the repository does not exist or
 * is empty, null is returned.//w  w  w  .  jav  a2  s .c o m
 *
 * @param repository
 * @param branch
 *            if unspecified, HEAD is assumed.
 * @return RevCommit
 */
public static RevCommit getFirstCommit(Repository repository, String branch) {
    if (!hasCommits(repository)) {
        return null;
    }
    RevCommit commit = null;
    try {
        // resolve branch
        ObjectId branchObject;
        if (StringUtils.isEmpty(branch)) {
            branchObject = getDefaultBranch(repository);
        } else {
            branchObject = repository.resolve(branch);
        }

        RevWalk walk = new RevWalk(repository);
        walk.sort(RevSort.REVERSE);
        RevCommit head = walk.parseCommit(branchObject);
        walk.markStart(head);
        commit = walk.next();
        walk.dispose();
    } catch (Throwable t) {
        error(t, repository, "{0} failed to determine first commit");
    }
    return commit;
}

From source file:com.gitblit.utils.JGitUtils.java

License:Apache License

/**
 * Try to identify all referenced tickets between two commits
 *
 * @param commit//from  w w  w .ja v a  2  s .  co  m
 * @param parseMessage
 * @param currentTicketId, or 0 if not on a ticket branch
 * @return a collection of TicketLink, or null if commit is already linked
 */
public static List<TicketLink> identifyTicketsBetweenCommits(Repository repository, IStoredSettings settings,
        String baseSha, String tipSha) {
    List<TicketLink> links = new ArrayList<TicketLink>();
    if (repository == null) {
        return links;
    }

    RevWalk walk = new RevWalk(repository);
    walk.sort(RevSort.TOPO);
    walk.sort(RevSort.REVERSE, true);
    try {
        RevCommit tip = walk.parseCommit(repository.resolve(tipSha));
        RevCommit base = walk.parseCommit(repository.resolve(baseSha));
        walk.markStart(tip);
        walk.markUninteresting(base);
        for (;;) {
            RevCommit commit = walk.next();
            if (commit == null) {
                break;
            }
            links.addAll(JGitUtils.identifyTicketsFromCommitMessage(repository, settings, commit));
        }
    } catch (IOException e) {
        LOGGER.error("failed to identify tickets between commits.", e);
    } finally {
        walk.dispose();
    }

    return links;
}

From source file:com.gitblit.utils.JGitUtils.java

License:Apache License

public static int countCommits(Repository repository, RevWalk walk, ObjectId baseId, ObjectId tipId) {
    int count = 0;
    walk.reset();/*w w w .ja v  a 2 s . c om*/
    walk.sort(RevSort.TOPO);
    walk.sort(RevSort.REVERSE, true);
    try {
        RevCommit tip = walk.parseCommit(tipId);
        RevCommit base = walk.parseCommit(baseId);
        walk.markStart(tip);
        walk.markUninteresting(base);
        for (;;) {
            RevCommit c = walk.next();
            if (c == null) {
                break;
            }
            count++;
        }
    } catch (IOException e) {
        // Should never happen, the core receive process would have
        // identified the missing object earlier before we got control.
        LOGGER.error("failed to get commit count", e);
        return 0;
    } finally {
        walk.close();
    }
    return count;
}

From source file:com.google.appraise.eclipse.core.client.git.AppraiseGitReviewClient.java

License:Open Source License

/**
 * Gets the review commit, which is the first commit on the review branch
 * after the merge base.//from   w  w  w  .  ja v a  2 s.  c  om
 */
public RevCommit getReviewCommit(String reviewBranch, String targetBranch) throws GitClientException {
    try (RevWalk walk = new RevWalk(repo)) {
        walk.markStart(walk.parseCommit(repo.resolve(reviewBranch)));
        walk.markUninteresting(walk.parseCommit(repo.resolve(targetBranch)));
        walk.sort(RevSort.REVERSE);
        return walk.next();
    } catch (Exception e) {
        throw new GitClientException("Failed to get review commit for " + reviewBranch + " and " + targetBranch,
                e);
    }
}

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

License:Apache License

private RevWalk newWalk(ObjectId start, ObjectId branchTip) throws Exception {
    // Match RevWalk conditions from ReceiveCommits.
    RevWalk rw = new RevWalk(tr.getRepository());
    rw.sort(RevSort.TOPO);/*www .  j a v  a  2s . c o  m*/
    rw.sort(RevSort.REVERSE, true);
    rw.markStart(rw.parseCommit(start));
    rw.markUninteresting(rw.parseCommit(branchTip));
    return rw;
}

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

License:Apache License

public void markCleanMerges(final RevWalk rw, final RevFlag canMergeFlag, final CodeReviewCommit mergeTip,
        final Set<RevCommit> alreadyAccepted) throws MergeException {
    if (mergeTip == null) {
        // If mergeTip is null here, branchTip was null, indicating a new branch
        // at the start of the merge process. We also elected to merge nothing,
        // probably due to missing dependencies. Nothing was cleanly merged.
        ///*from  www  .  j av  a2 s. c o m*/
        return;
    }

    try {
        rw.resetRetain(canMergeFlag);
        rw.sort(RevSort.TOPO);
        rw.sort(RevSort.REVERSE, true);
        rw.markStart(mergeTip);
        for (RevCommit c : alreadyAccepted) {
            rw.markUninteresting(c);
        }

        CodeReviewCommit c;
        while ((c = (CodeReviewCommit) rw.next()) != null) {
            if (c.getPatchsetId() != null) {
                c.setStatusCode(CommitMergeStatus.CLEAN_MERGE);
            }
        }
    } catch (IOException e) {
        throw new MergeException("Cannot mark clean merges", e);
    }
}