Example usage for org.eclipse.jgit.diff Edit getLengthB

List of usage examples for org.eclipse.jgit.diff Edit getLengthB

Introduction

In this page you can find the example usage for org.eclipse.jgit.diff Edit getLengthB.

Prototype

public final int getLengthB() 

Source Link

Document

Get length of the region in B

Usage

From source file:com.github.gitreport.ReleaseReport.java

License:Open Source License

/**
 * Generate report for repository//from   ww  w. j av a 2 s  . c  o m
 * 
 * @param repository
 * @param start
 * @param end
 * @throws IOException
 */
public void run(final Repository repository, final String start, final String end) throws IOException {
    this.repository = repository;
    this.start = CommitUtils.getCommit(repository, start);
    LastCommitFilter last = null;
    if (end != null) {
        this.end = CommitUtils.getCommit(repository, end);
    } else {
        last = new LastCommitFilter();
    }

    CommitFinder finder = new CommitFinder(repository);
    AuthorSetFilter authorsFilter = new AuthorSetFilter();
    CommitterSetFilter committersFilter = new CommitterSetFilter();
    CommitCountFilter countFilter = new CommitCountFilter();
    AuthorHistogramFilter authorHistogramFilter = new AuthorHistogramFilter();
    CommitterHistogramFilter committerHistogramFilter = new CommitterHistogramFilter();
    CommitLineImpactFilter lineImpactFilter = new CommitLineImpactFilter(10);
    CommitFileImpactFilter fileImpactFilter = new CommitFileImpactFilter(10);

    AllCommitFilter matcher = new AllCommitFilter();
    matcher.add(authorsFilter, committersFilter);
    matcher.add(authorHistogramFilter, committerHistogramFilter);
    matcher.add(new AllDiffFilter(true, lineImpactFilter, fileImpactFilter));
    matcher.add(countFilter);
    if (last != null) {
        matcher.add(last);
    }

    finder.setMatcher(new AllCommitFilter(new AndCommitFilter(NO_MERGES, matcher)));
    if (end != null) {
        finder.findBetween(start, end);
    } else {
        finder.findFrom(start);
    }
    if (last != null) {
        this.end = last.getLast();
    }

    mostFiles = fileImpactFilter.getCommits();
    mostLines = lineImpactFilter.getCommits();
    authorHistogram = authorHistogramFilter.getHistogram();
    committerHistogram = committerHistogramFilter.getHistogram();

    namesToEmails.putAll(RepositoryUtils.mapNamesToEmails(authorsFilter.getPersons()));
    for (PersonIdent person : authorsFilter.getPersons()) {
        authors.add(person.getName());
    }

    namesToEmails.putAll(RepositoryUtils.mapNamesToEmails(committersFilter.getPersons()));
    for (PersonIdent person : committersFilter.getPersons()) {
        committers.add(person.getName());
    }

    commits = countFilter.getCount();

    CommitDiffEditFilter releaseFilter = new CommitDiffEditFilter(true) {

        protected TreeWalk createTreeWalk(RevWalk walker, RevCommit commit) {
            TreeWalk walk = TreeUtils.diffWithCommits(repository, end, commit.name());
            walk.setRecursive(true);
            return walk;
        }

        protected boolean include(RevCommit commit, DiffEntry diff, Collection<Edit> edits) {
            switch (diff.getChangeType()) {
            case ADD:
                added.add(getName(diff.getNewPath()));
                break;
            case DELETE:
                deleted.add(getName(diff.getOldPath()));
                break;
            case MODIFY:
                modified.add(getName(diff.getNewPath()));
                break;
            case RENAME:
                renamed.add(getName(diff.getNewPath()));
                break;
            }
            return super.include(commit, diff, edits);
        }

        protected boolean include(RevCommit commit, DiffEntry diff, Edit edit) {
            switch (edit.getType()) {
            case DELETE:
                linesDeleted += edit.getLengthA();
                break;
            case INSERT:
                linesAdded += edit.getLengthB();
                break;
            case REPLACE:
                linesEdited += edit.getLengthB();
                break;
            }
            return true;
        }
    };
    releaseFilter.setRepository(repository);

    RevWalk walk = new RevWalk(repository);
    try {
        releaseFilter.include(walk, this.start);
    } finally {
        walk.release();
    }

    AllCommitFilter firstTimerFilter = new AllCommitFilter();
    Map<String, CommitCountFilter> otherCommits = new HashMap<String, CommitCountFilter>();
    for (String author : authors) {
        CommitCountFilter filter = new CommitCountFilter();
        otherCommits.put(author, filter);
        firstTimerFilter.add(new AndCommitFilter(new AuthorFilter(author, null), filter));
    }
    finder.setMatcher(firstTimerFilter).findFrom(end);
    for (String author : authors) {
        CommitCountFilter filter = otherCommits.get(author);
        if (filter.getCount() == 0) {
            firstTimers.add(author);
        }
    }
}

From source file:com.github.kevinsawicki.git.reports.ReleaseReport.java

License:Open Source License

/**
 * Generate report for repository//from w w  w  .j a  v  a  2  s.com
 *
 * @param repository
 * @param start
 * @param end
 * @throws IOException
 */
public void run(final Repository repository, final String start, final String end) throws IOException {
    this.repository = repository;
    this.start = CommitUtils.getCommit(repository, start);
    LastCommitFilter last = null;
    if (end != null)
        this.end = CommitUtils.getCommit(repository, end);
    else
        last = new LastCommitFilter();

    CommitFinder finder = new CommitFinder(repository);
    AuthorSetFilter authorsFilter = new AuthorSetFilter();
    CommitterSetFilter committersFilter = new CommitterSetFilter();
    CommitCountFilter countFilter = new CommitCountFilter();
    AuthorHistogramFilter authorHistogramFilter = new AuthorHistogramFilter();
    CommitterHistogramFilter committerHistogramFilter = new CommitterHistogramFilter();
    CommitLineImpactFilter lineImpactFilter = new CommitLineImpactFilter(10);
    CommitFileImpactFilter fileImpactFilter = new CommitFileImpactFilter(10);

    AllCommitFilter matcher = new AllCommitFilter();
    matcher.add(authorsFilter, committersFilter);
    matcher.add(authorHistogramFilter, committerHistogramFilter);
    matcher.add(new AllDiffFilter(true, lineImpactFilter, fileImpactFilter));
    matcher.add(countFilter);
    if (last != null)
        matcher.add(last);

    finder.setMatcher(new AllCommitFilter(new AndCommitFilter(NO_MERGES, matcher)));
    if (end != null)
        finder.findBetween(start, end);
    else
        finder.findFrom(start);
    if (last != null)
        this.end = last.getLast();

    mostFiles = fileImpactFilter.getCommits();
    mostLines = lineImpactFilter.getCommits();
    authorHistogram = authorHistogramFilter.getHistogram();
    committerHistogram = committerHistogramFilter.getHistogram();

    namesToEmails.putAll(RepositoryUtils.mapNamesToEmails(authorsFilter.getPersons()));
    for (PersonIdent person : authorsFilter.getPersons())
        authors.add(person.getName());

    namesToEmails.putAll(RepositoryUtils.mapNamesToEmails(committersFilter.getPersons()));
    for (PersonIdent person : committersFilter.getPersons())
        committers.add(person.getName());

    commits = countFilter.getCount();

    CommitDiffEditFilter releaseFilter = new CommitDiffEditFilter(true) {

        protected TreeWalk createTreeWalk(RevWalk walker, RevCommit commit) {
            TreeWalk walk = TreeUtils.diffWithCommits(repository, end, commit.name());
            walk.setRecursive(true);
            return walk;
        }

        protected boolean include(RevCommit commit, DiffEntry diff, Collection<Edit> edits) {
            switch (diff.getChangeType()) {
            case ADD:
                added.add(getName(diff.getNewPath()));
                break;
            case DELETE:
                deleted.add(getName(diff.getOldPath()));
                break;
            case MODIFY:
                modified.add(getName(diff.getNewPath()));
                break;
            case RENAME:
                renamed.add(getName(diff.getNewPath()));
                break;
            }
            return super.include(commit, diff, edits);
        }

        protected boolean include(RevCommit commit, DiffEntry diff, Edit edit) {
            switch (edit.getType()) {
            case DELETE:
                linesDeleted += edit.getLengthA();
                break;
            case INSERT:
                linesAdded += edit.getLengthB();
                break;
            case REPLACE:
                linesEdited += edit.getLengthB();
                break;
            }
            return true;
        }
    };
    releaseFilter.setRepository(repository);

    RevWalk walk = new RevWalk(repository);
    try {
        releaseFilter.include(walk, this.start);
    } finally {
        walk.release();
    }

    AllCommitFilter firstTimerFilter = new AllCommitFilter();
    Map<String, CommitCountFilter> otherCommits = new HashMap<String, CommitCountFilter>();
    for (String author : authors) {
        CommitCountFilter filter = new CommitCountFilter();
        otherCommits.put(author, filter);
        firstTimerFilter.add(new AndCommitFilter(new AuthorFilter(author, null), filter));
    }
    finder.setMatcher(firstTimerFilter).findFrom(end);
    for (String author : authors) {
        CommitCountFilter filter = otherCommits.get(author);
        if (filter.getCount() == 0)
            firstTimers.add(author);
    }
}

From source file:org.gitective.core.filter.commit.CommitLineImpactFilter.java

License:Open Source License

@Override
protected boolean include(RevCommit commit, DiffEntry diff, Edit hunk) {
    switch (hunk.getType()) {
    case DELETE:/*  ww  w  .  ja  v a  2  s  .c  o  m*/
        delete += hunk.getLengthA();
        break;
    case INSERT:
        add += hunk.getLengthB();
        break;
    case REPLACE:
        edit += hunk.getLengthB();
        break;
    }
    return true;
}

From source file:org.gitective.core.filter.commit.DiffCountFilter.java

License:Open Source License

@Override
protected boolean include(final RevCommit commit, final DiffEntry diff, final Collection<Edit> edits) {
    for (Edit edit : edits)
        switch (edit.getType()) {
        case DELETE:
            count += edit.getLengthA();//from   ww w.jav a2s.c om
            break;
        case INSERT:
        case REPLACE:
            count += edit.getLengthB();
            break;
        }
    return true;
}

From source file:org.gitective.core.filter.commit.DiffLineCountFilter.java

License:Open Source License

protected boolean include(RevCommit commit, DiffEntry diff, Edit hunk) {
    switch (hunk.getType()) {
    case DELETE:/*from w w  w .ja  va2s  . co  m*/
        deleted += hunk.getLengthA();
        break;
    case INSERT:
        added += hunk.getLengthB();
        break;
    case REPLACE:
        edited += hunk.getLengthB();
        break;
    }
    return true;
}

From source file:org.gitective.core.filter.commit.DiffLineSizeFilter.java

License:Open Source License

@Override
protected boolean include(final RevCommit commit, final DiffEntry diff, final Edit edit) {
    switch (edit.getType()) {
    case DELETE://from   www  .  j av  a  2 s . c o m
        count += edit.getLengthA();
        break;
    case INSERT:
    case REPLACE:
        count += edit.getLengthB();
        break;
    }
    return true;
}