Example usage for org.eclipse.jgit.diff DiffFormatter toFileHeader

List of usage examples for org.eclipse.jgit.diff DiffFormatter toFileHeader

Introduction

In this page you can find the example usage for org.eclipse.jgit.diff DiffFormatter toFileHeader.

Prototype

public FileHeader toFileHeader(DiffEntry ent)
        throws IOException, CorruptObjectException, MissingObjectException 

Source Link

Document

Creates a org.eclipse.jgit.patch.FileHeader representing the given org.eclipse.jgit.diff.DiffEntry

This method does not use the OutputStream associated with this DiffFormatter instance.

Usage

From source file:com.GitAnalytics.CommitInfo.java

private CommitInfo(DiffFormatter df, RevWalk rw, RevCommit commit, List<String> tags) throws Exception {
    System.out.print("Processing Commit: " + I + "\r");
    I++;// w w w.  j  a v a 2  s  .  c  o m
    mCommit = commit;
    mTags = tags;
    mAuthor = mCommit.getAuthorIdent();
    mLinesChanged = new int[3];

    RevTree parent = null;
    try {
        parent = rw.parseCommit(commit.getParent(0).getId()).getTree();
    } catch (Exception e) {
    }
    //int filesChanged = diffs.size();
    mLinesChanged[0] = mLinesChanged[1] = mLinesChanged[2] = 0;
    for (DiffEntry diff : df.scan(parent, commit.getTree())) {
        for (Edit edit : df.toFileHeader(diff).toEditList()) {
            int del = edit.getEndA() - edit.getBeginA();
            int add = edit.getEndB() - edit.getBeginB();

            if (edit.getType() == Type.REPLACE) {
                mLinesChanged[1] += Math.abs(add - del);
            }

            mLinesChanged[2] += add;
            mLinesChanged[0] += del;
        }
    }
}

From source file:com.github.checkstyle.regression.git.DiffParser.java

License:Open Source License

/**
 * Converts a {@link DiffEntry} to {@link GitChange} for the further use.
 * @param diffEntry the {@link DiffEntry} instance to be converted
 * @param formatter the diff formatter to provide the line changes information
 * @return the {@link GitChange} instance converted from the given {@link DiffEntry}
 * @throws IOException JGit library exception
 *//*from   www  .j  a va2 s .  c  o  m*/
private static GitChange convertDiffEntryToGitChange(DiffEntry diffEntry, DiffFormatter formatter)
        throws IOException {
    final List<Integer> addedLines = formatter.toFileHeader(diffEntry).toEditList().stream()
            .filter(edit -> edit.getBeginB() < edit.getEndB())
            .flatMapToInt(edit -> Arrays.stream(new IntRange(edit.getBeginB(), edit.getEndB() - 1).toArray()))
            .boxed().collect(Collectors.toList());
    final List<Integer> deletedLines = formatter.toFileHeader(diffEntry).toEditList().stream()
            .filter(edit -> edit.getBeginA() < edit.getEndA())
            .flatMapToInt(edit -> Arrays.stream(new IntRange(edit.getBeginA(), edit.getEndA() - 1).toArray()))
            .boxed().collect(Collectors.toList());
    return ImmutableGitChange.builder().path(diffEntry.getNewPath()).addAllAddedLines(addedLines)
            .addAllDeletedLines(deletedLines).build();
}

From source file:com.google.gerrit.server.patch.PatchListLoader.java

License:Apache License

private FileHeader toFileHeader(PatchListKey key, final DiffFormatter diffFormatter, final DiffEntry diffEntry)
        throws IOException {

    Future<FileHeader> result = diffExecutor.submit(new Callable<FileHeader>() {
        @Override/*from  w  w w. java 2 s.co  m*/
        public FileHeader call() throws IOException {
            return diffFormatter.toFileHeader(diffEntry);
        }
    });

    try {
        return result.get(timeoutMillis, TimeUnit.MILLISECONDS);
    } catch (InterruptedException | TimeoutException e) {
        log.warn(timeoutMillis + " ms timeout reached for Diff loader" + " in project " + project
                + " on commit " + key.getNewId().name() + " on path " + diffEntry.getNewPath() + " comparing "
                + diffEntry.getOldId().name() + ".." + diffEntry.getNewId().name());
        result.cancel(true);
        return toFileHeaderWithoutMyersDiff(diffFormatter, diffEntry);
    } catch (ExecutionException e) {
        // If there was an error computing the result, carry it
        // up to the caller so the cache knows this key is invalid.
        Throwables.propagateIfInstanceOf(e.getCause(), IOException.class);
        throw new IOException(e.getMessage(), e.getCause());
    }
}

From source file:com.google.gerrit.server.patch.PatchListLoader.java

License:Apache License

private FileHeader toFileHeaderWithoutMyersDiff(DiffFormatter diffFormatter, DiffEntry diffEntry)
        throws IOException {
    HistogramDiff histogramDiff = new HistogramDiff();
    histogramDiff.setFallbackAlgorithm(null);
    diffFormatter.setDiffAlgorithm(histogramDiff);
    return diffFormatter.toFileHeader(diffEntry);
}

From source file:org.gitistics.visitor.commit.TreeWalkVisitorStandard.java

License:Open Source License

private EditList handleEdits(DiffFormatter formatter, RevCommit commit, DiffEntry entry) {
    try {// ww  w. j  av  a2s .  c  o  m
        formatter.setContext(0);
        FileHeader h = formatter.toFileHeader(entry);
        return h.toEditList();
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

From source file:org.oneandone.gitter.gitio.GitDirectory.java

License:Apache License

private int diffSize(String newCommit) throws IOException {
    int size = 0;
    try {//from  w w  w  .j av  a2s  .  co m
        ObjectReader reader = repository.newObjectReader();
        CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
        ObjectId oldTree = repository.resolve(newCommit + "~1^{tree}"); // equals newCommit.getTree()
        // TODO the first commit has no precedessor .. we have no diff :-(
        if (oldTree == null) {
            log.error("No precedessor object for " + newCommit
                    + " returning default zero (which is not correct)");
            return 0;
        }
        Objects.requireNonNull(oldTree, "oldTree is null for " + newCommit);
        oldTreeIter.reset(reader, oldTree);
        CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
        ObjectId newTree = repository.resolve(newCommit + "^{tree}"); // equals oldCommit.getTree()
        Objects.requireNonNull(newTree, "newTree is null for " + newCommit);
        newTreeIter.reset(reader, newTree);

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DiffFormatter df = new DiffFormatter(baos);
        df.setRepository(repository);
        List<DiffEntry> entries = df.scan(oldTreeIter, newTreeIter);

        for (DiffEntry entry : entries) {
            FileHeader fileHeader = df.toFileHeader(entry);

            log.debug("Fileheader for {} -> {}", fileHeader.getPath(DiffEntry.Side.OLD),
                    fileHeader.getPath(DiffEntry.Side.NEW));

            log.debug(" length in bytes is {}", fileHeader.getBuffer().length);

            size += fileHeader.getBuffer().length;

            size += fileHeader.getBuffer().length;
            baos.reset();
        }
        //System.out.println("baos"+baos.toString());
    } catch (RevisionSyntaxException | IncorrectObjectTypeException ex) {
        throw new IOException(ex);
    }
    return size;
}

From source file:org.uberfire.java.nio.fs.jgit.util.commands.DiffBranches.java

License:Apache License

private FileHeader getFileHeader(final DiffFormatter formatter, final DiffEntry elem) {
    try {/*from w  ww .  ja v a  2s.c  o  m*/
        return formatter.toFileHeader(elem);
    } catch (IOException e) {
        throw new GitException("A problem occurred when trying to obtain diffs between files", e);
    }
}

From source file:playRepository.GitRepository.java

License:Apache License

/**
 * Finds authors who last modified or removed lines from the given edit
 * list./*from www  .j  a va2  s.  c  o m*/
 *
 * @param repository
 * @param diff   an edit list
 * @param start  the oldest commit to be considered
 * @return
 * @throws GitAPIException
 * @throws IOException
 */
private static Set<User> getAuthorsFromDiffEntry(Repository repository, DiffEntry diff, RevCommit start)
        throws GitAPIException, IOException {
    DiffFormatter diffFormatter = new DiffFormatter(NullOutputStream.INSTANCE);
    try {
        diffFormatter.setRepository(repository);
        EditList edits = diffFormatter.toFileHeader(diff).toEditList();
        BlameResult blameResult = new Git(repository).blame().setFilePath(diff.getOldPath())
                .setFollowFileRenames(true).setStartCommit(start).call();
        return getAuthorsFromBlameResult(edits, blameResult);
    } finally {
        diffFormatter.release();
    }
}