Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomasz Zarna2012-01-09 11:13:12 +0000
committerTomasz Zarna2012-01-09 11:13:30 +0000
commit69a5683b827c1b97113a13974509321be3d67e49 (patch)
tree6e7d53b6285716a161c449bd28259ff912164e86
parent0f15d656f26d48516eee661bacfd7e9750b35ab3 (diff)
downloadjgit-69a5683b827c1b97113a13974509321be3d67e49.tar.gz
jgit-69a5683b827c1b97113a13974509321be3d67e49.tar.xz
jgit-69a5683b827c1b97113a13974509321be3d67e49.zip
Add options for setting context lines and prefixes to DiffCommand
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/api/DiffCommandTest.java44
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/DiffCommand.java48
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

Back to the top