From b04be9334494640a693ef5e515af1be4a6983eb5 Mon Sep 17 00:00:00 2001 From: Abhishek Bhatnagar Date: Fri, 27 May 2011 16:30:27 -0400 Subject: [PATCH] CleanCommand: add the ability to do a dry run Change-Id: I7b81a7e34a771951e2e7b789b080b2bfb8656e5c Signed-off-by: Chris Aniszczyk --- .../eclipse/jgit/api/CleanCommandTest.java | 19 +++++++++++++++++++ .../org/eclipse/jgit/api/CleanCommand.java | 16 +++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) 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 files = status.getUntracked(); + assertTrue(files.size() > 0); + + // run clean + Set 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> { private Set paths = Collections.emptySet(); + private boolean dryRun; + /** * @param repo */ @@ -86,7 +88,8 @@ public class CleanCommand extends GitCommand> { 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> { 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; + } } -- 2.39.5