Skip to content
Browse files

Merge "Add options for setting context lines and prefixes to DiffComm…

…and"
  • Loading branch information...
2 parents 885a389 + 69a5683 commit 8f742cdd1005d0ddef3a826c277ba0b2983a4c2d @stefanlay stefanlay committed with Code Review
View
44 org.eclipse.jgit.test/tst/org/eclipse/jgit/api/DiffCommandTest.java
@@ -178,6 +178,50 @@ public void testDiffTwoCommits() throws Exception {
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);
View
48 org.eclipse.jgit/src/org/eclipse/jgit/api/DiffCommand.java
@@ -82,6 +82,12 @@
private OutputStream out;
+ private int contextLines = -1;
+
+ private String sourcePrefix;
+
+ private String destinationPrefix;
+
/**
* @param repo
*/
@@ -125,6 +131,12 @@ protected DiffCommand(Repository repo) {
}
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 DiffCommand setOutputStream(OutputStream out) {
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;
+ }
}

0 comments on commit 8f742cd

Please sign in to comment.
Something went wrong with that request. Please try again.