Fix "reset -hard" bug that folders could not be deleted

The deleted code is not required as removed files are deleted correctly in
doCheckout() anyway.

The deleted code failed in case a non-empty directory had to be deleted.
file.delete() returned false, triggering an exception.

Bug: 479266
Change-Id: I011bb3882ff0c35b238aa3eccad7889041210277
Signed-off-by: René Scheibe <rene.scheibe@gmail.com>
This commit is contained in:
René Scheibe 2018-08-04 13:19:17 +02:00 committed by Matthias Sohn
parent b4edf9ec14
commit 8f9697b4c1
2 changed files with 20 additions and 8 deletions

View File

@ -205,6 +205,26 @@ public void testHardResetWithConflicts_CreateFolder_UnstagedChanges() throws Exc
assertTrue(new File(db.getWorkTree(), "dir-or-file/c.txt").exists());
}
@Test
public void testHardResetWithConflicts_DeleteFolder_UnstagedChanges() throws Exception {
setupRepository();
ObjectId prevHead = db.resolve(Constants.HEAD);
writeTrashFile("dir-or-file/c.txt", "content");
git.add().addFilepattern("dir-or-file/c.txt").call();
git.commit().setMessage("adding dir-or-file/c.txt").call();
writeTrashFile("dir-or-file-2/d.txt", "content");
git.add().addFilepattern("dir-or-file-2/d.txt").call();
FileUtils.delete(new File(db.getWorkTree(), "dir-or-file-2"), FileUtils.RECURSIVE);
writeTrashFile("dir-or-file-2", "content");
// bug 479266: cannot delete folder "dir-or-file"
git.reset().setMode(ResetType.HARD).setRef(prevHead.getName()).call();
assertFalse(new File(db.getWorkTree(), "dir-or-file").exists());
assertFalse(new File(db.getWorkTree(), "dir-or-file-2").exists());
}
@Test
public void testResetToNonexistingHEAD() throws JGitInternalException,
AmbiguousObjectException, IOException, GitAPIException {

View File

@ -1298,14 +1298,6 @@ private void cleanUpConflicts() throws CheckoutConflictException {
JGitText.get().cannotDeleteFile, c));
removeEmptyParents(conflict);
}
for (String r : removed) {
File file = new File(repo.getWorkTree(), r);
if (!file.delete())
throw new CheckoutConflictException(
MessageFormat.format(JGitText.get().cannotDeleteFile,
file.getAbsolutePath()));
removeEmptyParents(file);
}
}
/**