Example usage for org.eclipse.jgit.revwalk.filter CommitTimeRevFilter before

List of usage examples for org.eclipse.jgit.revwalk.filter CommitTimeRevFilter before

Introduction

In this page you can find the example usage for org.eclipse.jgit.revwalk.filter CommitTimeRevFilter before.

Prototype

public static final RevFilter before(long ts) 

Source Link

Document

Create a new filter to select commits before a given date/time.

Usage

From source file:org.apache.maven.scm.provider.git.jgit.command.JGitUtils.java

License:Apache License

/**
 * Get a list of commits between two revisions.
 *
 * @param repo     the repository to work on
 * @param sortings sorting/*  w w  w  .  j  a  v  a  2s.co  m*/
 * @param fromRev  start revision
 * @param toRev    if null, falls back to head
 * @param fromDate from which date on
 * @param toDate   until which date
 * @param maxLines max number of lines
 * @return a list of commits, might be empty, but never <code>null</code>
 * @throws IOException
 * @throws MissingObjectException
 * @throws IncorrectObjectTypeException
 */
public static List<RevCommit> getRevCommits(Repository repo, RevSort[] sortings, String fromRev, String toRev,
        final Date fromDate, final Date toDate, int maxLines)
        throws IOException, MissingObjectException, IncorrectObjectTypeException {

    List<RevCommit> revs = new ArrayList<RevCommit>();
    RevWalk walk = new RevWalk(repo);

    ObjectId fromRevId = fromRev != null ? repo.resolve(fromRev) : null;
    ObjectId toRevId = toRev != null ? repo.resolve(toRev) : null;

    if (sortings == null || sortings.length == 0) {
        sortings = new RevSort[] { RevSort.TOPO, RevSort.COMMIT_TIME_DESC };
    }

    for (final RevSort s : sortings) {
        walk.sort(s, true);
    }

    if (fromDate != null && toDate != null) {
        //walk.setRevFilter( CommitTimeRevFilter.between( fromDate, toDate ) );
        walk.setRevFilter(new RevFilter() {
            @Override
            public boolean include(RevWalk walker, RevCommit cmit) throws StopWalkException,
                    MissingObjectException, IncorrectObjectTypeException, IOException {
                int cmtTime = cmit.getCommitTime();

                return (cmtTime >= (fromDate.getTime() / 1000)) && (cmtTime <= (toDate.getTime() / 1000));
            }

            @Override
            public RevFilter clone() {
                return this;
            }
        });
    } else {
        if (fromDate != null) {
            walk.setRevFilter(CommitTimeRevFilter.after(fromDate));
        }
        if (toDate != null) {
            walk.setRevFilter(CommitTimeRevFilter.before(toDate));
        }
    }

    if (fromRevId != null) {
        RevCommit c = walk.parseCommit(fromRevId);
        c.add(RevFlag.UNINTERESTING);
        RevCommit real = walk.parseCommit(c);
        walk.markUninteresting(real);
    }

    if (toRevId != null) {
        RevCommit c = walk.parseCommit(toRevId);
        c.remove(RevFlag.UNINTERESTING);
        RevCommit real = walk.parseCommit(c);
        walk.markStart(real);
    } else {
        final ObjectId head = repo.resolve(Constants.HEAD);
        if (head == null) {
            throw new RuntimeException("Cannot resolve " + Constants.HEAD);
        }
        RevCommit real = walk.parseCommit(head);
        walk.markStart(real);
    }

    int n = 0;
    for (final RevCommit c : walk) {
        n++;
        if (maxLines != -1 && n > maxLines) {
            break;
        }

        revs.add(c);
    }
    return revs;
}

From source file:org.eclipse.orion.server.git.jobs.LogCommand.java

License:Eclipse Distribution License

public LogCommand setDateFilter(String fromDate, String toDate) {
    checkCallable();/*from   w  ww.  j a  v a  2  s.c  o  m*/
    try {
        if (fromDate != null) {
            long fromD = Long.parseLong(fromDate);
            if (toDate != null) {
                long toD = Long.parseLong(toDate);
                dateFilter = CommitTimeRevFilter.between(fromD, toD);
            } else {
                dateFilter = CommitTimeRevFilter.after(fromD);
            }
        } else if (toDate != null) {
            Long toD = Long.parseLong(toDate);
            if (toD != null)
                dateFilter = CommitTimeRevFilter.before(toD);
        }
    } catch (NumberFormatException ex) {
    }
    return this;
}

From source file:org.kuali.student.git.cleaner.RepositorySplitter.java

License:Educational Community License

@Override
protected void onBeforeRevWalk() {

    leftSideCommits = new HashSet<>();

    leftSidePreventGCCommits = new HashSet<>();

    walkLeft.setRevFilter(CommitTimeRevFilter.before(splitDate));

    Iterator<RevCommit> it = walkLeft.iterator();

    while (it.hasNext()) {

        RevCommit commit = it.next();//from w  w  w  .  ja v  a  2 s.  c  o m

        ObjectId commitId = commit.getId();

        leftSideCommits.add(commitId);

        Set<Ref> branches = commitToBranchMap.get(commitId);

        if (branches != null) {
            for (Ref ref : branches) {

                leftRefsWriter.println(ref.getName());

            }
        }

        Set<Ref> tags = commitToTagMap.get(commitId);

        if (tags != null) {
            for (Ref ref : tags) {

                leftRefsWriter.println(ref.getName());

            }
        }
    }
}