|
|
@@ -65,6 +65,7 @@ import org.eclipse.jgit.junit.RepositoryTestCase; |
|
|
|
import org.eclipse.jgit.lib.Constants; |
|
|
|
import org.eclipse.jgit.lib.FileMode; |
|
|
|
import org.eclipse.jgit.lib.ObjectId; |
|
|
|
import org.eclipse.jgit.lib.Ref; |
|
|
|
import org.eclipse.jgit.revwalk.RevCommit; |
|
|
|
import org.eclipse.jgit.revwalk.RevWalk; |
|
|
|
import org.eclipse.jgit.treewalk.TreeWalk; |
|
|
@@ -139,8 +140,8 @@ public class ResetCommandTest extends RepositoryTestCase { |
|
|
|
AmbiguousObjectException, IOException, GitAPIException { |
|
|
|
setupRepository(); |
|
|
|
ObjectId prevHead = db.resolve(Constants.HEAD); |
|
|
|
git.reset().setMode(ResetType.HARD).setRef(initialCommit.getName()) |
|
|
|
.call(); |
|
|
|
assertSameAsHead(git.reset().setMode(ResetType.HARD) |
|
|
|
.setRef(initialCommit.getName()).call()); |
|
|
|
// check if HEAD points to initial commit now |
|
|
|
ObjectId head = db.resolve(Constants.HEAD); |
|
|
|
assertEquals(initialCommit, head); |
|
|
@@ -176,8 +177,8 @@ public class ResetCommandTest extends RepositoryTestCase { |
|
|
|
AmbiguousObjectException, IOException, GitAPIException { |
|
|
|
setupRepository(); |
|
|
|
ObjectId prevHead = db.resolve(Constants.HEAD); |
|
|
|
git.reset().setMode(ResetType.SOFT).setRef(initialCommit.getName()) |
|
|
|
.call(); |
|
|
|
assertSameAsHead(git.reset().setMode(ResetType.SOFT) |
|
|
|
.setRef(initialCommit.getName()).call()); |
|
|
|
// check if HEAD points to initial commit now |
|
|
|
ObjectId head = db.resolve(Constants.HEAD); |
|
|
|
assertEquals(initialCommit, head); |
|
|
@@ -197,8 +198,8 @@ public class ResetCommandTest extends RepositoryTestCase { |
|
|
|
AmbiguousObjectException, IOException, GitAPIException { |
|
|
|
setupRepository(); |
|
|
|
ObjectId prevHead = db.resolve(Constants.HEAD); |
|
|
|
git.reset().setMode(ResetType.MIXED).setRef(initialCommit.getName()) |
|
|
|
.call(); |
|
|
|
assertSameAsHead(git.reset().setMode(ResetType.MIXED) |
|
|
|
.setRef(initialCommit.getName()).call()); |
|
|
|
// check if HEAD points to initial commit now |
|
|
|
ObjectId head = db.resolve(Constants.HEAD); |
|
|
|
assertEquals(initialCommit, head); |
|
|
@@ -241,7 +242,8 @@ public class ResetCommandTest extends RepositoryTestCase { |
|
|
|
assertTrue(bEntry.getLength() > 0); |
|
|
|
assertTrue(bEntry.getLastModified() > 0); |
|
|
|
|
|
|
|
git.reset().setMode(ResetType.MIXED).setRef(commit2.getName()).call(); |
|
|
|
assertSameAsHead(git.reset().setMode(ResetType.MIXED) |
|
|
|
.setRef(commit2.getName()).call()); |
|
|
|
|
|
|
|
cache = db.readDirCache(); |
|
|
|
|
|
|
@@ -280,7 +282,7 @@ public class ResetCommandTest extends RepositoryTestCase { |
|
|
|
+ "[a.txt, mode:100644, stage:3]", |
|
|
|
indexState(0)); |
|
|
|
|
|
|
|
git.reset().setMode(ResetType.MIXED).call(); |
|
|
|
assertSameAsHead(git.reset().setMode(ResetType.MIXED).call()); |
|
|
|
|
|
|
|
assertEquals("[a.txt, mode:100644]" + "[b.txt, mode:100644]", |
|
|
|
indexState(0)); |
|
|
@@ -298,8 +300,8 @@ public class ResetCommandTest extends RepositoryTestCase { |
|
|
|
|
|
|
|
// 'a.txt' has already been modified in setupRepository |
|
|
|
// 'notAddedToIndex.txt' has been added to repository |
|
|
|
git.reset().addPath(indexFile.getName()) |
|
|
|
.addPath(untrackedFile.getName()).call(); |
|
|
|
assertSameAsHead(git.reset().addPath(indexFile.getName()) |
|
|
|
.addPath(untrackedFile.getName()).call()); |
|
|
|
|
|
|
|
DirCacheEntry postReset = DirCache.read(db.getIndexFile(), db.getFS()) |
|
|
|
.getEntry(indexFile.getName()); |
|
|
@@ -329,7 +331,7 @@ public class ResetCommandTest extends RepositoryTestCase { |
|
|
|
git.add().addFilepattern(untrackedFile.getName()).call(); |
|
|
|
|
|
|
|
// 'dir/b.txt' has already been modified in setupRepository |
|
|
|
git.reset().addPath("dir").call(); |
|
|
|
assertSameAsHead(git.reset().addPath("dir").call()); |
|
|
|
|
|
|
|
DirCacheEntry postReset = DirCache.read(db.getIndexFile(), db.getFS()) |
|
|
|
.getEntry("dir/b.txt"); |
|
|
@@ -358,9 +360,9 @@ public class ResetCommandTest extends RepositoryTestCase { |
|
|
|
// 'a.txt' has already been modified in setupRepository |
|
|
|
// 'notAddedToIndex.txt' has been added to repository |
|
|
|
// reset to the inital commit |
|
|
|
git.reset().setRef(initialCommit.getName()) |
|
|
|
.addPath(indexFile.getName()) |
|
|
|
.addPath(untrackedFile.getName()).call(); |
|
|
|
assertSameAsHead(git.reset().setRef(initialCommit.getName()) |
|
|
|
.addPath(indexFile.getName()).addPath(untrackedFile.getName()) |
|
|
|
.call()); |
|
|
|
|
|
|
|
// check that HEAD hasn't moved |
|
|
|
ObjectId head = db.resolve(Constants.HEAD); |
|
|
@@ -397,7 +399,7 @@ public class ResetCommandTest extends RepositoryTestCase { |
|
|
|
+ "[b.txt, mode:100644]", |
|
|
|
indexState(0)); |
|
|
|
|
|
|
|
git.reset().addPath(file).call(); |
|
|
|
assertSameAsHead(git.reset().addPath(file).call()); |
|
|
|
|
|
|
|
assertEquals("[a.txt, mode:100644]" + "[b.txt, mode:100644]", |
|
|
|
indexState(0)); |
|
|
@@ -409,7 +411,7 @@ public class ResetCommandTest extends RepositoryTestCase { |
|
|
|
writeTrashFile("a.txt", "content"); |
|
|
|
git.add().addFilepattern("a.txt").call(); |
|
|
|
// Should assume an empty tree, like in C Git 1.8.2 |
|
|
|
git.reset().addPath("a.txt").call(); |
|
|
|
assertSameAsHead(git.reset().addPath("a.txt").call()); |
|
|
|
|
|
|
|
DirCache cache = db.readDirCache(); |
|
|
|
DirCacheEntry aEntry = cache.getEntry("a.txt"); |
|
|
@@ -421,7 +423,8 @@ public class ResetCommandTest extends RepositoryTestCase { |
|
|
|
git = new Git(db); |
|
|
|
writeTrashFile("a.txt", "content"); |
|
|
|
git.add().addFilepattern("a.txt").call(); |
|
|
|
git.reset().setRef("doesnotexist").addPath("a.txt").call(); |
|
|
|
assertSameAsHead( |
|
|
|
git.reset().setRef("doesnotexist").addPath("a.txt").call()); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
@@ -431,7 +434,7 @@ public class ResetCommandTest extends RepositoryTestCase { |
|
|
|
git.add().addFilepattern("a.txt").call(); |
|
|
|
writeTrashFile("a.txt", "modified"); |
|
|
|
// should use default mode MIXED |
|
|
|
git.reset().call(); |
|
|
|
assertSameAsHead(git.reset().call()); |
|
|
|
|
|
|
|
DirCache cache = db.readDirCache(); |
|
|
|
DirCacheEntry aEntry = cache.getEntry("a.txt"); |
|
|
@@ -452,7 +455,7 @@ public class ResetCommandTest extends RepositoryTestCase { |
|
|
|
|
|
|
|
git.add().addFilepattern(untrackedFile.getName()).call(); |
|
|
|
|
|
|
|
git.reset().setRef(tagName).setMode(HARD).call(); |
|
|
|
assertSameAsHead(git.reset().setRef(tagName).setMode(HARD).call()); |
|
|
|
|
|
|
|
ObjectId head = db.resolve(Constants.HEAD); |
|
|
|
assertEquals(secondCommit, head); |
|
|
@@ -486,7 +489,8 @@ public class ResetCommandTest extends RepositoryTestCase { |
|
|
|
result.getMergeStatus()); |
|
|
|
assertNotNull(db.readSquashCommitMsg()); |
|
|
|
|
|
|
|
g.reset().setMode(ResetType.HARD).setRef(first.getName()).call(); |
|
|
|
assertSameAsHead(g.reset().setMode(ResetType.HARD) |
|
|
|
.setRef(first.getName()).call()); |
|
|
|
|
|
|
|
assertNull(db.readSquashCommitMsg()); |
|
|
|
} |
|
|
@@ -497,7 +501,7 @@ public class ResetCommandTest extends RepositoryTestCase { |
|
|
|
File fileA = writeTrashFile("a.txt", "content"); |
|
|
|
git.add().addFilepattern("a.txt").call(); |
|
|
|
// Should assume an empty tree, like in C Git 1.8.2 |
|
|
|
git.reset().setMode(ResetType.HARD).call(); |
|
|
|
assertSameAsHead(git.reset().setMode(ResetType.HARD).call()); |
|
|
|
|
|
|
|
DirCache cache = db.readDirCache(); |
|
|
|
DirCacheEntry aEntry = cache.getEntry("a.txt"); |
|
|
@@ -558,4 +562,14 @@ public class ResetCommandTest extends RepositoryTestCase { |
|
|
|
return dc.getEntry(path) != null; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Asserts that a certain ref is similar to repos HEAD. |
|
|
|
* @param ref |
|
|
|
* @throws IOException |
|
|
|
*/ |
|
|
|
private void assertSameAsHead(Ref ref) throws IOException { |
|
|
|
Ref headRef = db.getRef(Constants.HEAD); |
|
|
|
assertEquals(headRef.getName(), ref.getName()); |
|
|
|
assertEquals(headRef.getObjectId(), ref.getObjectId()); |
|
|
|
} |
|
|
|
} |