List of usage examples for org.eclipse.jgit.diff RawText getString
public String getString(int begin, int end, boolean dropLF)
From source file:com.google.collide.server.shared.merge.JGitMerger.java
License:Open Source License
public static MergeResult formatMerge(org.eclipse.jgit.merge.MergeResult<RawText> results) { int runningIndex = 0; int numLines = 0; List<MergeChunk> mergeChunks = Lists.newArrayList(); MergeChunk currentMergeChunk = null; StringBuilder fileContent = new StringBuilder(); int conflictIndex = 0; for (org.eclipse.jgit.merge.MergeChunk chunk : results) { RawText seq = results.getSequences().get(chunk.getSequenceIndex()); String chunkContent = seq.getString(chunk.getBegin(), chunk.getEnd(), false); if (chunk.getConflictState() == ConflictState.NO_CONFLICT || chunk.getConflictState() == ConflictState.FIRST_CONFLICTING_RANGE) { if (currentMergeChunk != null) { mergeChunks.add(currentMergeChunk); }/* w w w .j av a 2s. c o m*/ currentMergeChunk = new MergeChunk(); } switch (chunk.getConflictState()) { case NO_CONFLICT: currentMergeChunk.setHasConflict(false); currentMergeChunk.setMergedData(chunkContent); fileContent.append(chunkContent); numLines = chunk.getEnd() - chunk.getBegin(); runningIndex = setRanges(currentMergeChunk, runningIndex, numLines); break; case FIRST_CONFLICTING_RANGE: currentMergeChunk.setHasConflict(true); currentMergeChunk.setChildData(chunkContent); fileContent.append(chunkContent); numLines = chunk.getEnd() - chunk.getBegin(); runningIndex = setRanges(currentMergeChunk, runningIndex, numLines); break; case NEXT_CONFLICTING_RANGE: currentMergeChunk.setParentData(chunkContent); break; } } mergeChunks.add(currentMergeChunk); MergeResult mergeResult = new MergeResult(mergeChunks, (conflictIndex > 0) ? "" : fileContent.toString()); return mergeResult; }
From source file:com.google.gitiles.DiffServletTest.java
License:Apache License
@Test public void diffFileNoParentsText() throws Exception { String contents = "foo\ncontents\n"; RevCommit c = repo.update("master", repo.commit().add("foo", contents)); FakeHttpServletRequest req = FakeHttpServletRequest.newRequest(); req.setPathInfo("/test/+diff/" + c.name() + "^!/foo"); req.setQueryString("format=TEXT"); FakeHttpServletResponse res = new FakeHttpServletResponse(); servlet.service(req, res);/*from w ww .j a va 2 s . c o m*/ Patch p = parsePatch(res.getActualBody()); FileHeader f = getOnlyElement(p.getFiles()); assertEquals(ChangeType.ADD, f.getChangeType()); assertEquals(DiffEntry.DEV_NULL, f.getPath(Side.OLD)); assertEquals("foo", f.getPath(Side.NEW)); RawText rt = new RawText(contents.getBytes(UTF_8)); Edit e = getOnlyElement(getOnlyElement(f.getHunks()).toEditList()); assertEquals(Type.INSERT, e.getType()); assertEquals(contents, rt.getString(e.getBeginB(), e.getEndB(), false)); }
From source file:com.google.gitiles.DiffServletTest.java
License:Apache License
@Test public void diffFileOneParentText() throws Exception { String contents1 = "foo\n"; String contents2 = "foo\ncontents\n"; RevCommit c1 = repo.update("master", repo.commit().add("foo", contents1)); RevCommit c2 = repo.update("master", repo.commit().parent(c1).add("foo", contents2)); FakeHttpServletRequest req = FakeHttpServletRequest.newRequest(); req.setPathInfo("/test/+diff/" + c2.name() + "^!/foo"); req.setQueryString("format=TEXT"); FakeHttpServletResponse res = new FakeHttpServletResponse(); servlet.service(req, res);// w w w . ja v a2 s. c om Patch p = parsePatch(res.getActualBody()); FileHeader f = getOnlyElement(p.getFiles()); assertEquals(ChangeType.MODIFY, f.getChangeType()); assertEquals("foo", f.getPath(Side.OLD)); assertEquals("foo", f.getPath(Side.NEW)); RawText rt2 = new RawText(contents2.getBytes(UTF_8)); Edit e = getOnlyElement(getOnlyElement(f.getHunks()).toEditList()); assertEquals(Type.INSERT, e.getType()); assertEquals("contents\n", rt2.getString(e.getBeginB(), e.getEndB(), false)); }
From source file:de.codesourcery.gittimelapse.TextFile.java
License:Apache License
public static String toString(RawText rt) { return rt.getString(0, rt.size(), false); }
From source file:org.sjanisch.skillview.git.GitAlgorithmContentDiff.java
License:Open Source License
private static Collection<String> diff(String previousContent, String currentContent, DiffAlgorithm algorithm) { RawText previous = new RawText(previousContent.getBytes()); RawText current = new RawText(currentContent.getBytes()); EditList edits = algorithm.diff(RawTextComparator.WS_IGNORE_ALL, previous, current); Collection<String> result = new LinkedList<>(); for (int i = 0; i < edits.size(); ++i) { Edit edit = edits.get(i);//from w w w . j a v a2s. c o m switch (edit.getType()) { case INSERT: case REPLACE: String touched = current.getString(edit.getBeginB(), edit.getEndB(), false).trim(); result.add(touched); break; default: continue; } } return result; }