import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.MergeResult.MergeStatus;
+import org.eclipse.jgit.api.ResetCommand.ResetType;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.NoFilepatternException;
import org.eclipse.jgit.dircache.DirCache;
"h()", "untracked", "untracked"));
}
+ /**
+ * Reset hard from unclean condition.
+ * <p>
+ * WorkDir: Empty <br/>
+ * Index: f/g <br/>
+ * Merge: x
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testResetHardFromIndexEntryWithoutFileToTreeWithoutFile()
+ throws Exception {
+ Git git = new Git(db);
+ writeTrashFile("x", "x");
+ git.add().addFilepattern("x").call();
+ RevCommit id1 = git.commit().setMessage("c1").call();
+
+ writeTrashFile("f/g", "f/g");
+ git.rm().addFilepattern("x").call();
+ git.add().addFilepattern("f/g").call();
+ git.commit().setMessage("c2").call();
+ deleteTrashFile("f/g");
+ deleteTrashFile("f");
+
+ // The actual test
+ git.reset().setMode(ResetType.HARD).setRef(id1.getName()).call();
+ assertIndex(mkmap("x", "x"));
+ }
+
private DirCacheCheckout resetHard(RevCommit commit)
throws NoWorkTreeException,
CorruptObjectException, IOException {
}
}
} else {
- // There is no file/folder for that path in the working tree.
- // The only entry we have is the index entry. If that entry is a
- // conflict simply remove it. Otherwise keep that entry in the
- // index
- if (i.getDirCacheEntry().getStage() == 0)
- keep(i.getDirCacheEntry());
+ // There is no file/folder for that path in the working tree,
+ // nor in the merge head.
+ // The only entry we have is the index entry. Like the case
+ // where there is a file with the same name, remove it,
}
}
}