Java Code Examples for org.eclipse.jgit.diff.DiffFormatter#setRepository()
The following examples show how to use
org.eclipse.jgit.diff.DiffFormatter#setRepository() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: GitCommit.java From Getaviz with Apache License 2.0 | 6 votes |
private void addDiff(DiffImplementation returnable, RevCommit parent) throws IOException { RevWalk revWalk = new RevWalk(repository); parent = revWalk.parseCommit(parent.getId()); revWalk.close(); ByteArrayOutputStream put = new ByteArrayOutputStream(BUFFER_SIZE); DiffFormatter df = new DiffFormatter(put); df.setRepository(repository); df.setDiffComparator(RawTextComparator.DEFAULT); df.setDetectRenames(true); List<DiffEntry> diffs = df.scan(parent.getTree(), commit.getTree()); for(DiffEntry e : diffs){ df.format(e); String diffText = put.toString(DEFAULT_ENCODING); //TODO make encoding insertable returnable.addOperation(e.getOldPath(), new GitOperation(diffText, e.getOldPath(), e.getNewPath(), e.getChangeType())); put.reset(); } df.close(); }
Example 2
Source File: GitRepoMetaData.java From GitFx with Apache License 2.0 | 6 votes |
public String getDiffBetweenCommits(int commitIndex) throws IOException,GitAPIException{ if(commitIndex+1==commitCount) return "Nothing to Diff. This is first commit"; AbstractTreeIterator current = prepareTreeParser(repository,commitSHA.get(commitIndex)); AbstractTreeIterator parent = prepareTreeParser(repository,commitSHA.get(++commitIndex)); ObjectReader reader = repository.newObjectReader(); ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); // finally get the list of changed files Git git = new Git(repository) ; List<DiffEntry> diff = git.diff(). setOldTree(parent). setNewTree(current). //TODO Set the path filter to filter out the selected file //setPathFilter(PathFilter.create("README.md")). call(); for (DiffEntry entry : diff) { System.out.println("Entry: " + entry + ", from: " + entry.getOldId() + ", to: " + entry.getNewId()); DiffFormatter formatter = new DiffFormatter(byteStream) ; formatter.setRepository(repository); formatter.format(entry); } // System.out.println(byteStream.toString()); String diffContent = byteStream.toString(); return byteStream.toString(); }
Example 3
Source File: GitServiceImpl.java From RefactoringMiner with MIT License | 6 votes |
@Override public Churn churn(Repository repository, RevCommit currentCommit) throws Exception { if (currentCommit.getParentCount() > 0) { ObjectId oldTree = currentCommit.getParent(0).getTree(); ObjectId newTree = currentCommit.getTree(); final TreeWalk tw = new TreeWalk(repository); tw.setRecursive(true); tw.addTree(oldTree); tw.addTree(newTree); List<DiffEntry> diffs = DiffEntry.scan(tw); DiffFormatter diffFormatter = new DiffFormatter(DisabledOutputStream.INSTANCE); diffFormatter.setRepository(repository); diffFormatter.setContext(0); int addedLines = 0; int deletedLines = 0; for (DiffEntry entry : diffs) { FileHeader header = diffFormatter.toFileHeader(entry); List<? extends HunkHeader> hunks = header.getHunks(); for (HunkHeader hunkHeader : hunks) { for (Edit edit : hunkHeader.toEditList()) { if (edit.getType() == Type.INSERT) { addedLines += edit.getLengthB(); } else if (edit.getType() == Type.DELETE) { deletedLines += edit.getLengthA(); } else if (edit.getType() == Type.REPLACE) { deletedLines += edit.getLengthA(); addedLines += edit.getLengthB(); } } } } diffFormatter.close(); return new Churn(addedLines, deletedLines); } return null; }
Example 4
Source File: CommitUtil.java From SZZUnleashed with MIT License | 5 votes |
/** * Extract a list containing all Edits that exists between two revisions. * * @param entry a diffentry which contains information about a diff between two revisions. * @return an EditList containing all Edits. */ public EditList getDiffEditList(DiffEntry entry) throws IOException, GitAPIException { DiffFormatter form = new DiffFormatter(DisabledOutputStream.INSTANCE); form.setRepository(this.git.getRepository()); FileHeader fh = form.toFileHeader(entry); return fh.toEditList(); }
Example 5
Source File: GitIndexEntry.java From git-code-format-maven-plugin with MIT License | 5 votes |
private LineRanges computeLineRanges(DiffEntry diffEntry) { DiffFormatter diffFormatter = new DiffFormatter(NullOutputStream.INSTANCE); diffFormatter.setRepository(repository); try { FileHeader fileHeader = diffFormatter.toFileHeader(diffEntry); return fileHeader.getHunks().stream() .map(HunkHeader.class::cast) .map(this::computeLineRanges) .reduce(LineRanges::concat) .orElse(LineRanges.all()); } catch (IOException e) { throw new MavenGitCodeFormatException(e); } }
Example 6
Source File: RepositoryResource.java From fabric8-forge with Apache License 2.0 | 5 votes |
protected static DiffFormatter createDiffFormatter(Repository r, OutputStream buffer) { DiffFormatter formatter = new DiffFormatter(buffer); formatter.setRepository(r); formatter.setDiffComparator(RawTextComparator.DEFAULT); formatter.setDetectRenames(true); return formatter; }
Example 7
Source File: GitRepoMetaData.java From GitFx with Apache License 2.0 | 5 votes |
public ArrayList<String> getShortMessage() { for (RevCommit revision : walk) { shortMessage.add(revision.getShortMessage()); //[LOG] logger.debug(revision.getShortMessage()); DiffFormatter df = new DiffFormatter(DisabledOutputStream.INSTANCE); df.setRepository(repository); df.setDiffComparator(RawTextComparator.DEFAULT); df.setDetectRenames(true); RevCommit parent = null; if(revision.getParentCount()!=0) { try { parent = walk.parseCommit(revision.getParent(0).getId()); RevTree tree = revision.getTree(); List<DiffEntry> diffs = df.scan(parent.getTree(), revision.getTree()); for (DiffEntry diff : diffs) { String changeType = diff.getChangeType().name(); if(changeType.equals(ADD)|| changeType.equals(MODIFY)) { //[LOG] logger.debug(diff.getChangeType().name()); //[LOG] logger.debug(diff.getNewPath()); tempCommitHistory.add(diff.getNewPath()); } } }catch (IOException ex) { //[LOG] logger.debug("IOException", ex); } } commitSHA.add(commitCount,revision.name()); commitHistory.add(commitCount++,new ArrayList<String>(tempCommitHistory)); tempCommitHistory.clear(); } walk.reset(); return shortMessage; }
Example 8
Source File: PGA.java From coming with MIT License | 5 votes |
private void runDiff(Repository repo, String oldCommit, String newCommit, String path) throws IOException, GitAPIException { // Diff README.md between two commits. The file is named README.md in // the new commit (5a10bd6e), but was named "jgit-cookbook README.md" in // the old commit (2e1d65e4). DiffEntry diff = diffFile(repo, oldCommit, newCommit, path); // Display the diff System.out.println("Showing diff of " + path); DiffFormatter formatter = new DiffFormatter(System.out); formatter.setRepository(repo); //noinspection ConstantConditions formatter.format(diff); }
Example 9
Source File: GitSCM.java From repositoryminer with Apache License 2.0 | 5 votes |
private List<Change> getChangesForCommitedFiles(String hash) throws IOException { RevWalk revWalk = new RevWalk(git.getRepository()); RevCommit commit = revWalk.parseCommit(ObjectId.fromString(hash)); if (commit.getParentCount() > 1) { revWalk.close(); return new ArrayList<Change>(); } RevCommit parentCommit = commit.getParentCount() > 0 ? revWalk.parseCommit(ObjectId.fromString(commit.getParent(0).getName())) : null; DiffFormatter df = new DiffFormatter(DisabledOutputStream.INSTANCE); df.setBinaryFileThreshold(2048); df.setRepository(git.getRepository()); df.setDiffComparator(RawTextComparator.DEFAULT); df.setDetectRenames(true); List<DiffEntry> diffEntries = df.scan(parentCommit, commit); df.close(); revWalk.close(); List<Change> changes = new ArrayList<Change>(); for (DiffEntry entry : diffEntries) { Change change = new Change(entry.getNewPath(), entry.getOldPath(), 0, 0, ChangeType.valueOf(entry.getChangeType().name())); analyzeDiff(change, entry); changes.add(change); } return changes; }
Example 10
Source File: GitSCM.java From repositoryminer with Apache License 2.0 | 5 votes |
private void analyzeDiff(Change change, DiffEntry diff) throws IOException { ByteArrayOutputStream output = new ByteArrayOutputStream(); DiffFormatter df = new DiffFormatter(output); df.setRepository(git.getRepository()); df.format(diff); Scanner scanner = new Scanner(output.toString("UTF-8")); int added = 0; int removed = 0; while (scanner.hasNextLine()) { String line = scanner.nextLine(); if (line.startsWith("+") && !line.startsWith("+++")) { added++; } else if (line.startsWith("-") && !line.startsWith("---")) { removed++; } } output.close(); df.close(); scanner.close(); change.setLinesAdded(added); change.setLinesRemoved(removed); }
Example 11
Source File: JGitHelper.java From go-plugins with Apache License 2.0 | 5 votes |
private Revision getRevisionObj(Repository repository, RevCommit commit) throws IOException { String commitSHA = commit.getName(); Date commitTime = commit.getAuthorIdent().getWhen(); String comment = commit.getFullMessage().trim(); String user = commit.getAuthorIdent().getName(); String emailId = commit.getAuthorIdent().getEmailAddress(); List<ModifiedFile> modifiedFiles = new ArrayList<ModifiedFile>(); if (commit.getParentCount() == 0) { TreeWalk treeWalk = new TreeWalk(repository); treeWalk.addTree(commit.getTree()); treeWalk.setRecursive(false); while (treeWalk.next()) { modifiedFiles.add(new ModifiedFile(treeWalk.getPathString(), "added")); } } else { RevWalk rw = new RevWalk(repository); RevCommit parent = rw.parseCommit(commit.getParent(0).getId()); DiffFormatter diffFormatter = new DiffFormatter(DisabledOutputStream.INSTANCE); diffFormatter.setRepository(repository); diffFormatter.setDiffComparator(RawTextComparator.DEFAULT); diffFormatter.setDetectRenames(true); List<DiffEntry> diffEntries = diffFormatter.scan(parent.getTree(), commit.getTree()); for (DiffEntry diffEntry : diffEntries) { modifiedFiles.add(new ModifiedFile(diffEntry.getNewPath(), getAction(diffEntry.getChangeType().name()))); } } return new Revision(commitSHA, commitTime, comment, user, emailId, modifiedFiles); }
Example 12
Source File: GitHistoryParser.java From proctor with Apache License 2.0 | 5 votes |
static GitHistoryParser fromRepository(final Repository repository, final String testDefinitionDirectory) { final RevWalk revWalk = new RevWalk(repository); final DiffFormatter df = new DiffFormatter(DisabledOutputStream.INSTANCE); df.setRepository(repository); df.setDiffComparator(RawTextComparator.DEFAULT); df.setDetectRenames(false); // to regard rename changes as add and remove return new GitHistoryParser(revWalk, df, testDefinitionDirectory); }
Example 13
Source File: GitRepository.java From APDE with GNU General Public License v2.0 | 5 votes |
public DiffFormatter getDiffFormatter(OutputStream out) { DiffFormatter formatter = new DiffFormatter(out); formatter.setRepository(git.getRepository()); formatter.setDiffComparator(RawTextComparator.DEFAULT); formatter.setDetectRenames(true); return formatter; }
Example 14
Source File: GitHelper.java From repairnator with MIT License | 4 votes |
public void computePatchStats(JobStatus jobStatus, Git git, RevCommit headRev, RevCommit commit) { try { ObjectReader reader = git.getRepository().newObjectReader(); CanonicalTreeParser oldTreeIter = new CanonicalTreeParser(); oldTreeIter.reset(reader, headRev.getTree()); CanonicalTreeParser newTreeIter = new CanonicalTreeParser(); newTreeIter.reset(reader, commit.getTree()); DiffFormatter diffFormatter = new DiffFormatter(DisabledOutputStream.INSTANCE); diffFormatter.setRepository(git.getRepository()); diffFormatter.setContext(0); List<DiffEntry> entries = diffFormatter.scan(newTreeIter, oldTreeIter); int nbLineAdded = 0; int nbLineDeleted = 0; Set<String> changedFiles = new HashSet<>(); Set<String> addedFiles = new HashSet<>(); Set<String> deletedFiles = new HashSet<>(); for (DiffEntry entry : entries) { String path; if (entry.getChangeType() == DiffEntry.ChangeType.DELETE) { path = entry.getOldPath(); } else { path = entry.getNewPath(); } if (!jobStatus.isCreatedFileToPush(path) && path.endsWith(".java")) { if (entry.getChangeType() == DiffEntry.ChangeType.MODIFY || entry.getChangeType() == DiffEntry.ChangeType.RENAME) { changedFiles.add(path); } else if (entry.getChangeType() == DiffEntry.ChangeType.ADD || entry.getChangeType() == DiffEntry.ChangeType.COPY) { addedFiles.add(path); } else if (entry.getChangeType() == DiffEntry.ChangeType.DELETE) { deletedFiles.add(path); } FileHeader fileHeader = diffFormatter.toFileHeader(entry); List<? extends HunkHeader> hunks = fileHeader.getHunks(); for (HunkHeader hunk : hunks) { EditList edits = hunk.toEditList(); for (Edit edit : edits) { switch (edit.getType()) { case INSERT: nbLineAdded += edit.getLengthB(); break; case DELETE: nbLineDeleted += edit.getLengthA(); break; case REPLACE: int diff = edit.getLengthA() - edit.getLengthB(); if (diff > 0) { nbLineAdded += edit.getLengthA(); nbLineDeleted += edit.getLengthB(); } else { nbLineDeleted += edit.getLengthA(); nbLineAdded += edit.getLengthB(); } break; case EMPTY: break; } } } } } PatchDiff patchDiff = jobStatus.getProperties().getPatchDiff(); patchDiff.getFiles().setNumberAdded(addedFiles.size()); patchDiff.getFiles().setNumberChanged(changedFiles.size()); patchDiff.getFiles().setNumberDeleted(deletedFiles.size()); patchDiff.getLines().setNumberAdded(nbLineAdded); patchDiff.getLines().setNumberDeleted(nbLineDeleted); } catch (IOException e) { this.getLogger().error("Error while computing stat on the patch.", e); } }
Example 15
Source File: GetDiffEntriesForCommitsAdapter.java From coderadar with MIT License | 4 votes |
@Override public List<DiffEntry> getDiffs(String projectRoot, String commitName1, String commitName2) throws UnableToGetDiffsFromCommitsException { try { Git git = Git.open(new File(projectRoot)); Repository repository = git.getRepository(); RevCommit commit1 = repository.parseCommit(ObjectId.fromString(commitName1)); RevCommit commit2 = repository.parseCommit(ObjectId.fromString(commitName2)); // change commits so that commit2 is the older one if (commit1.getCommitTime() > commit2.getCommitTime()) { RevCommit tmp = commit1; commit1 = commit2; commit2 = tmp; } ObjectReader reader = git.getRepository().newObjectReader(); CanonicalTreeParser oldTreeIter = new CanonicalTreeParser(); ObjectId oldTree = commit1.getTree(); oldTreeIter.reset(reader, oldTree); CanonicalTreeParser newTreeIter = new CanonicalTreeParser(); ObjectId newTree = commit2.getTree(); newTreeIter.reset(reader, newTree); DiffFormatter df = new DiffFormatter(new ByteArrayOutputStream()); df.setRepository(repository); List<DiffEntry> entries = df.scan(oldTreeIter, newTreeIter).stream() .map( diffEntry -> { DiffEntry entry = new DiffEntry(); entry.setNewPath(diffEntry.getNewPath()); entry.setOldPath(diffEntry.getOldPath()); entry.setChangeType( ChangeTypeMapper.jgitToCoderadar(diffEntry.getChangeType()).ordinal()); return entry; }) .collect(Collectors.toList()); git.close(); return entries; } catch (IOException e) { throw new UnableToGetDiffsFromCommitsException(e.getMessage()); } }
Example 16
Source File: GitCommit.java From compiler with Apache License 2.0 | 4 votes |
private void updateChangedFiles(final RevCommit parent, final int parentIndex, final RevCommit child) { final DiffFormatter df = new DiffFormatter(NullOutputStream.INSTANCE); df.setRepository(repository); df.setDiffComparator(RawTextComparator.DEFAULT); df.setDetectRenames(true); try { final AbstractTreeIterator parentIter = new CanonicalTreeParser(null, repository.newObjectReader(), parent.getTree()); final AbstractTreeIterator childIter = new CanonicalTreeParser(null, repository.newObjectReader(), child.getTree()); List<DiffEntry> diffs = df.scan(parentIter, childIter); for (final DiffEntry diff : diffs) { if (diff.getChangeType() == ChangeType.MODIFY) { if (diff.getNewMode().getObjectType() == Constants.OBJ_BLOB) { updateChangedFiles(parent, child, diff, ChangeKind.MODIFIED); } // RENAMED file may have the same/different object id(s) for old and new } else if (diff.getChangeType() == ChangeType.RENAME) { if (diff.getNewMode().getObjectType() == Constants.OBJ_BLOB) { updateChangedFiles(parent, child, diff, ChangeKind.RENAMED); } } else if (diff.getChangeType() == ChangeType.COPY) { if (diff.getNewMode().getObjectType() == Constants.OBJ_BLOB) { updateChangedFiles(parent, child, diff, ChangeKind.COPIED); } // ADDED file should not have old path and its old object id is 0's } else if (diff.getChangeType() == ChangeType.ADD) { if (diff.getNewMode().getObjectType() == Constants.OBJ_BLOB) { updateChangedFiles(parent, child, diff, ChangeKind.ADDED); } // DELETED file's new object id is 0's and doesn't have new path } else if (diff.getChangeType() == ChangeType.DELETE) { if (diff.getOldMode().getObjectType() == Constants.OBJ_BLOB) { String oldPath = diff.getOldPath(); String oldObjectId = diff.getOldId().toObjectId().getName(); ChangedFile.Builder cfb = getChangedFile(oldPath, ChangeKind.DELETED); filePathGitObjectIds.put(oldPath, diff.getNewId().toObjectId()); } } } } catch (final IOException e) { if (debug) System.err.println("Git Error getting commit diffs: " + e.getMessage()); } df.close(); }