|
|
@@ -92,12 +92,12 @@ public class CleanCommand extends GitCommand<Set<String>> { |
|
|
|
status.getIgnoredNotInIndex(), false); |
|
|
|
|
|
|
|
for (String file : notIgnoredFiles) |
|
|
|
if (paths.isEmpty() || paths.contains(file)) { |
|
|
|
if (paths.isEmpty() || paths.contains(file) || isFileInPaths(file) ) { |
|
|
|
files = cleanPath(file, files); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for (String dir : notIgnoredDirs) |
|
|
|
if (paths.isEmpty() || paths.contains(dir)) { |
|
|
|
if (paths.isEmpty() || paths.contains(dir) || isFileInPaths(dir) ) { |
|
|
|
files = cleanPath(dir, files); |
|
|
|
} |
|
|
|
} catch (IOException e) { |
|
|
@@ -109,7 +109,30 @@ public class CleanCommand extends GitCommand<Set<String>> { |
|
|
|
} |
|
|
|
return files; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
protected boolean isFileInPaths(final String file) { |
|
|
|
if(paths.isEmpty()){ |
|
|
|
return false; |
|
|
|
} |
|
|
|
String path=file; |
|
|
|
final Set<String> dirs = new HashSet<String>(); |
|
|
|
while(true){ |
|
|
|
int idx = path.lastIndexOf("/"); |
|
|
|
if( idx> 0 ){ |
|
|
|
path=file.substring(0,idx); |
|
|
|
if(paths.contains(path)){ |
|
|
|
paths.addAll(dirs); |
|
|
|
return true; |
|
|
|
} |
|
|
|
dirs.add(path); |
|
|
|
}else{ |
|
|
|
break; |
|
|
|
} |
|
|
|
return idx == -1 ? false : ; |
|
|
|
} |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* When dryRun is false, deletes the specified path from disk. If dryRun |
|
|
|
* is true, no paths are actually deleted. In both cases, the paths that |