List of usage examples for org.eclipse.jgit.diff Edit getLengthA
public final int getLengthA()
From source file:com.github.gitreport.ReleaseReport.java
License:Open Source License
/** * Generate report for repository/* w w w. j a va 2 s.c om*/ * * @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 ww . jav a2s. 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://from w w w. jav a 2 s . co 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(); break; case INSERT: case REPLACE: count += edit.getLengthB();//from w w w .j a v a 2 s . c o m 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 ww w . ja v a 2 s . 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://w ww. j a va2s . c o m count += edit.getLengthA(); break; case INSERT: case REPLACE: count += edit.getLengthB(); break; } return true; }