Example usage for org.eclipse.jgit.patch FileHeader getBuffer

List of usage examples for org.eclipse.jgit.patch FileHeader getBuffer

Introduction

In this page you can find the example usage for org.eclipse.jgit.patch FileHeader getBuffer.

Prototype

public byte[] getBuffer() 

Source Link

Document

Get the byte array holding this file's patch script.

Usage

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

License:Apache License

private static byte[] compact(final FileHeader h) {
    final int end = end(h);
    if (h.getStartOffset() == 0 && end == h.getBuffer().length) {
        return h.getBuffer();
    }// w  w  w  .  java 2 s .c om

    final byte[] buf = new byte[end - h.getStartOffset()];
    System.arraycopy(h.getBuffer(), h.getStartOffset(), buf, 0, buf.length);
    return buf;
}

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

License:Apache License

private static PatchType toPatchType(final FileHeader hdr) {
    PatchType pt;/*from  w ww . j a v a 2s  .  co  m*/

    switch (hdr.getPatchType()) {
    case UNIFIED:
        pt = Patch.PatchType.UNIFIED;
        break;
    case GIT_BINARY:
    case BINARY:
        pt = Patch.PatchType.BINARY;
        break;
    default:
        throw new IllegalArgumentException("Unsupported type " + hdr.getPatchType());
    }

    if (pt != PatchType.BINARY) {
        final byte[] buf = hdr.getBuffer();
        for (int ptr = hdr.getStartOffset(); ptr < hdr.getEndOffset(); ptr++) {
            if (buf[ptr] == '\0') {
                // Its really binary, but Git couldn't see the nul early enough
                // to realize its binary, and instead produced the diff.
                //
                // Force it to be a binary; it really should have been that.
                //
                pt = PatchType.BINARY;
                break;
            }
        }
    }

    return pt;
}

From source file:com.google.gitiles.HtmlDiffFormatter.java

License:Open Source License

@Override
public void format(FileHeader hdr, RawText a, RawText b) throws IOException {
    int start = hdr.getStartOffset();
    int end = hdr.getEndOffset();
    if (!hdr.getHunks().isEmpty()) {
        end = hdr.getHunks().get(0).getStartOffset();
    }/*from w  w  w .  j  a  v a  2 s.co  m*/
    renderHeader(RawParseUtils.decode(hdr.getBuffer(), start, end));

    if (hdr.getPatchType() == PatchType.UNIFIED) {
        getOutputStream().write(DIFF_BEGIN);
        format(hdr.toEditList(), a, b);
        getOutputStream().write(DIFF_END);
    }
}

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

License:Apache License

private int diffSize(String newCommit) throws IOException {
    int size = 0;
    try {//from   www . j a v 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;
}