List of usage examples for org.eclipse.jgit.patch FileHeader getBuffer
public byte[] getBuffer()
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; }