Ensure resetting on commit id
When reset command was called with tag name as parameter the resulting HEAD was set to the tag's SHA-1 which is a bug. This patch ensures that repository.resolve() call always returns commit id. Change-Id: I219b898c620a75c497c8652dbf4735fd094c4d7c Signed-off-by: Dariusz Luksza <dariusz@luksza.org> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
parent
3da4c6fc58
commit
1bec1f2fae
|
@ -42,6 +42,7 @@
|
|||
*/
|
||||
package org.eclipse.jgit.api;
|
||||
|
||||
import static org.eclipse.jgit.api.ResetCommand.ResetType.HARD;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
@ -305,6 +306,25 @@ public void testPathsResetWithRef() throws Exception {
|
|||
assertFalse(inIndex(untrackedFile.getName()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHardResetOnTag() throws Exception {
|
||||
setupRepository();
|
||||
String tagName = "initialtag";
|
||||
git.tag().setName(tagName).setObjectId(secondCommit)
|
||||
.setMessage("message").call();
|
||||
|
||||
DirCacheEntry preReset = DirCache.read(db.getIndexFile(), db.getFS())
|
||||
.getEntry(indexFile.getName());
|
||||
assertNotNull(preReset);
|
||||
|
||||
git.add().addFilepattern(untrackedFile.getName()).call();
|
||||
|
||||
git.reset().setRef(tagName).setMode(HARD).call();
|
||||
|
||||
ObjectId head = db.resolve(Constants.HEAD);
|
||||
assertTrue(head.equals(secondCommit));
|
||||
}
|
||||
|
||||
private void assertReflog(ObjectId prevHead, ObjectId head)
|
||||
throws IOException {
|
||||
// Check the reflog for HEAD
|
||||
|
|
|
@ -150,7 +150,7 @@ public Ref call() throws IOException {
|
|||
// resolve the ref to a commit
|
||||
final ObjectId commitId;
|
||||
try {
|
||||
commitId = repo.resolve(ref);
|
||||
commitId = repo.resolve(ref + "^{commit}");
|
||||
if (commitId == null) {
|
||||
// @TODO throw an InvalidRefNameException. We can't do that
|
||||
// now because this would break the API
|
||||
|
|
Loading…
Reference in New Issue