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());
|
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
|
@Test
|
||||||
public void testResetToNonexistingHEAD() throws JGitInternalException,
|
public void testResetToNonexistingHEAD() throws JGitInternalException,
|
||||||
AmbiguousObjectException, IOException, GitAPIException {
|
AmbiguousObjectException, IOException, GitAPIException {
|
||||||
|
|
|
@ -1298,14 +1298,6 @@ private void cleanUpConflicts() throws CheckoutConflictException {
|
||||||
JGitText.get().cannotDeleteFile, c));
|
JGitText.get().cannotDeleteFile, c));
|
||||||
removeEmptyParents(conflict);
|
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