Fix error occurring during checkout
Fix NullPointerException occurring when calling CheckoutCommand with forced == true option when the branch isn't changed and there is deleted uncommitted file. Change-Id: I99bf1fc25e6889f07092320d7bc2772ec5d341b5 Signed-off-by: Nail Samatov <sanail@yandex.ru>
This commit is contained in:
parent
e69e642ea4
commit
f30e48914e
|
@ -124,6 +124,28 @@ public void testCheckoutForced() throws Exception {
|
|||
.setForced(true).call().getObjectId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCheckoutForced_deleteFileAndRestore() throws Exception {
|
||||
File testFile = new File(db.getWorkTree(), "Test.txt");
|
||||
assertTrue(testFile.exists());
|
||||
|
||||
assertEquals("test", git.getRepository().getBranch());
|
||||
FileUtils.delete(testFile);
|
||||
assertFalse(testFile.exists());
|
||||
// Switch from "test" to "master".
|
||||
assertEquals(initialCommit.getId(), git.checkout().setName("master")
|
||||
.setForced(true).call().getObjectId());
|
||||
assertTrue(testFile.exists());
|
||||
|
||||
assertEquals("master", git.getRepository().getBranch());
|
||||
FileUtils.delete(testFile);
|
||||
assertFalse(testFile.exists());
|
||||
// Stay in current branch.
|
||||
assertEquals(initialCommit.getId(), git.checkout().setName("master")
|
||||
.setForced(true).call().getObjectId());
|
||||
assertTrue(testFile.exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateBranchOnCheckout() throws Exception {
|
||||
git.checkout().setCreateBranch(true).setName("test2").call();
|
||||
|
|
|
@ -1217,7 +1217,7 @@ private void keep(String path, DirCacheEntry e, WorkingTreeIterator f)
|
|||
if (e != null && !FileMode.TREE.equals(e.getFileMode()))
|
||||
builder.add(e);
|
||||
if (force) {
|
||||
if (f.isModified(e, true, walk.getObjectReader())) {
|
||||
if (f == null || f.isModified(e, true, walk.getObjectReader())) {
|
||||
kept.add(path);
|
||||
checkoutEntry(repo, e, walk.getObjectReader(), false,
|
||||
new CheckoutMetadata(walk.getEolStreamType(CHECKOUT_OP),
|
||||
|
|
Loading…
Reference in New Issue