package ru.ulstu.extractor; import org.eclipse.jgit.diff.DiffEntry; import org.eclipse.jgit.diff.DiffFormatter; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevWalk; import java.io.IOException; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; public class NewClass { private final RevWalk revWalk; private final DiffFormatter diffFormatter; private NewClass(RevWalk revWalk, DiffFormatter diffFormatter) { this.revWalk = revWalk; this.diffFormatter = diffFormatter; } public Set getModified(final RevCommit commit) throws IOException { final RevCommit[] parents = commit.getParents(); final Set result = new HashSet<>(); if (parents.length == 1) { // merge commit if length > 1 final RevCommit parent = revWalk.parseCommit(parents[0].getId()); // get diff of this commit to its parent, as list of paths final List diffs = getDiffEntries(commit, parent); for (final DiffEntry diff : diffs) { final String changePath = diff.getChangeType().equals(DiffEntry.ChangeType.DELETE) ? diff.getOldPath() : diff.getNewPath(); result.add(changePath); } } return result; } private List getDiffEntries(final RevCommit commit, final RevCommit parent) { try { return diffFormatter.scan(parent.getTree(), commit.getTree()); } catch (Exception e) { e.printStackTrace(); } return Collections.emptyList(); } } // Optional lineFrom = Optional.empty(); // Optional lineTo = Optional.empty(); // for (String string: strings) { // Optional maybeFileName = getFileName(string); // if (maybeFileName.isPresent()) { // fileChange = new FileChange(); // fileChange.setFile(maybeFileName.get()); // /// вытащить другие изменения из коммита // changes.getFileChanges().add(fileChange); // } // // Optional maybeLineFrom = getLineFrom(string); // LineChange lineChange = new LineChange(); // if (maybeLineFrom.isPresent()) { // lineChange.setLineFrom(maybeLineFrom.get()); // if (lineFrom.isPresent()){ // lineChange.setLineFrom(lineChange.getLineFrom() + "\n" + lineFrom); // fileChange.getLineChanges().add(lineChange); // lineFrom = maybeLineFrom; // } // else { // fileChange.getLineChanges().add(lineChange); // lineFrom = maybeLineFrom; // } // } // Optional maybeLineTo = getLineTo(string); // if (maybeLineTo.isPresent()) { // lineChange.setLineTo(maybeLineTo.get()); // if(lineTo.isPresent()){ // lineChange.setLineTo(lineChange.getLineTo() + "\n" + lineTo); // fileChange.getLineChanges().add(lineChange); // lineTo = maybeLineTo; // } // else { // fileChange.getLineChanges().add(lineChange); // lineTo = maybeLineFrom; // } // } // } // return changes; // }