diff options
author | Stefan Lay <stefan.lay@sap.com> | 2012-01-09 07:06:59 -0500 |
---|---|---|
committer | Code Review <codereview-daemon@eclipse.org> | 2012-01-09 07:06:59 -0500 |
commit | 8f742cdd1005d0ddef3a826c277ba0b2983a4c2d (patch) | |
tree | 27317a51283ac86a8ff9cd95a949bb562dcfeb4d | |
parent | 885a38983243d22fb756516ee108ec9ca909a9af (diff) | |
parent | 69a5683b827c1b97113a13974509321be3d67e49 (diff) | |
download | jgit-8f742cdd1005d0ddef3a826c277ba0b2983a4c2d.tar.gz jgit-8f742cdd1005d0ddef3a826c277ba0b2983a4c2d.zip |
Merge "Add options for setting context lines and prefixes to DiffCommand"
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/api/DiffCommandTest.java | 44 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/api/DiffCommand.java | 48 |
2 files changed, 92 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/DiffCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/DiffCommandTest.java index 0729ecbc34..16a3d608f0 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/DiffCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/DiffCommandTest.java @@ -178,6 +178,50 @@ public class DiffCommandTest extends RepositoryTestCase { assertEquals(expected.toString(), actual); } + @Test + public void testDiffWithPrefixes() throws Exception { + write(new File(db.getWorkTree(), "test.txt"), "test"); + Git git = new Git(db); + git.add().addFilepattern(".").call(); + git.commit().setMessage("Initial commit").call(); + write(new File(db.getWorkTree(), "test.txt"), "test change"); + + OutputStream out = new ByteArrayOutputStream(); + git.diff().setOutputStream(out).setSourcePrefix("old/") + .setDestinationPrefix("new/") + .call(); + + String actual = out.toString(); + String expected = "diff --git old/test.txt new/test.txt\n" + + "index 30d74d2..4dba797 100644\n" + "--- old/test.txt\n" + + "+++ new/test.txt\n" + "@@ -1 +1 @@\n" + "-test\n" + + "\\ No newline at end of file\n" + "+test change\n" + + "\\ No newline at end of file\n"; + assertEquals(expected.toString(), actual); + } + + @Test + public void testDiffWithNegativeLineCount() throws Exception { + write(new File(db.getWorkTree(), "test.txt"), + "0\n1\n2\n3\n4\n5\n6\n7\n8\n9"); + Git git = new Git(db); + git.add().addFilepattern(".").call(); + git.commit().setMessage("Initial commit").call(); + write(new File(db.getWorkTree(), "test.txt"), + "0\n1\n2\n3\n4a\n5\n6\n7\n8\n9"); + + OutputStream out = new ByteArrayOutputStream(); + git.diff().setOutputStream(out).setContextLines(1) + .call(); + + String actual = out.toString(); + String expected = "diff --git a/test.txt b/test.txt\n" + + "index f55b5c9..c5ec8fd 100644\n" + "--- a/test.txt\n" + + "+++ b/test.txt\n" + "@@ -4,3 +4,3 @@\n" + " 3\n" + "-4\n" + + "+4a\n" + " 5\n"; + assertEquals(expected.toString(), actual); + } + private AbstractTreeIterator getTreeIterator(String name) throws IOException { final ObjectId id = db.resolve(name); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/DiffCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/DiffCommand.java index 5fff5b5f55..8143bc7b63 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/DiffCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/DiffCommand.java @@ -82,6 +82,12 @@ public class DiffCommand extends GitCommand<List<DiffEntry>> { private OutputStream out; + private int contextLines = -1; + + private String sourcePrefix; + + private String destinationPrefix; + /** * @param repo */ @@ -125,6 +131,12 @@ public class DiffCommand extends GitCommand<List<DiffEntry>> { } diffFmt.setPathFilter(pathFilter); + if (contextLines >= 0) + diffFmt.setContext(contextLines); + if (destinationPrefix != null) + diffFmt.setNewPrefix(destinationPrefix); + if (sourcePrefix != null) + diffFmt.setOldPrefix(sourcePrefix); List<DiffEntry> result = diffFmt.scan(oldTree, newTree); if (showNameAndStatusOnly) { @@ -199,4 +211,40 @@ public class DiffCommand extends GitCommand<List<DiffEntry>> { this.out = out; return this; } + + /** + * Set number of context lines instead of the usual three. + * + * @param contextLines + * the number of context lines + * @return this instance + */ + public DiffCommand setContextLines(int contextLines) { + this.contextLines = contextLines; + return this; + } + + /** + * Set the given source prefix instead of "a/". + * + * @param sourcePrefix + * the prefix + * @return this instance + */ + public DiffCommand setSourcePrefix(String sourcePrefix) { + this.sourcePrefix = sourcePrefix; + return this; + } + + /** + * Set the given destination prefix instead of "b/". + * + * @param destinationPrefix + * the prefix + * @return this instance + */ + public DiffCommand setDestinationPrefix(String destinationPrefix) { + this.destinationPrefix = destinationPrefix; + return this; + } }
\ No newline at end of file |