diff options
author | Abhishek Bhatnagar <abhatnag@redhat.com> | 2011-05-27 16:30:27 -0400 |
---|---|---|
committer | Chris Aniszczyk <caniszczyk@gmail.com> | 2011-05-31 09:15:07 -0500 |
commit | b04be9334494640a693ef5e515af1be4a6983eb5 (patch) | |
tree | a504837aa0a4f7cdb199ed9d189ea1be75bef400 | |
parent | a00b951323b0d23482a25b2bb813a56fad7f935b (diff) | |
download | jgit-b04be9334494640a693ef5e515af1be4a6983eb5.tar.gz jgit-b04be9334494640a693ef5e515af1be4a6983eb5.zip |
CleanCommand: add the ability to do a dry run
Change-Id: I7b81a7e34a771951e2e7b789b080b2bfb8656e5c
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CleanCommandTest.java | 19 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/api/CleanCommand.java | 16 |
2 files changed, 34 insertions, 1 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CleanCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CleanCommandTest.java index 760acbb57f..a660a5292b 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CleanCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CleanCommandTest.java @@ -113,4 +113,23 @@ public class CleanCommandTest extends RepositoryTestCase { assertTrue(!cleanedFiles.contains("File2.txt")); } + @Test + public void testCleanWithDryRun() throws NoWorkTreeException, IOException { + // create status + StatusCommand command = git.status(); + Status status = command.call(); + Set<String> files = status.getUntracked(); + assertTrue(files.size() > 0); + + // run clean + Set<String> cleanedFiles = git.clean().setDryRun(true).call(); + + status = git.status().call(); + files = status.getUntracked(); + + assertTrue(files.size() == 2); + assertTrue(cleanedFiles.contains("File2.txt")); + assertTrue(cleanedFiles.contains("File3.txt")); + } + } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CleanCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CleanCommand.java index d0d40c4679..e31f119cb2 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CleanCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CleanCommand.java @@ -64,6 +64,8 @@ public class CleanCommand extends GitCommand<Set<String>> { private Set<String> paths = Collections.emptySet(); + private boolean dryRun; + /** * @param repo */ @@ -86,7 +88,8 @@ public class CleanCommand extends GitCommand<Set<String>> { Status status = command.call(); for (String file : status.getUntracked()) { if (paths.isEmpty() || paths.contains(file)) { - FileUtils.delete(new File(repo.getWorkTree(), file)); + if (!dryRun) + FileUtils.delete(new File(repo.getWorkTree(), file)); files.add(file); } } @@ -108,4 +111,15 @@ public class CleanCommand extends GitCommand<Set<String>> { return this; } + /** + * If dryRun is set, the paths in question will not actually be deleted. + * + * @param dryRun + * whether to do a dry run or not + * @return {@code this} + */ + public CleanCommand setDryRun(boolean dryRun) { + this.dryRun = dryRun; + return this; + } } |