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:
parent
b4edf9ec14
commit
8f9697b4c1
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue