Browse Source

Merge "Add options for setting context lines and prefixes to DiffCommand"

tags/v1.3.0.201202121842-rc4
Stefan Lay 12 years ago
parent
commit
8f742cdd10

+ 44
- 0
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/DiffCommandTest.java View File

@@ -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);

+ 48
- 0
org.eclipse.jgit/src/org/eclipse/jgit/api/DiffCommand.java View File

@@ -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;
}
}

Loading…
Cancel
Save