|
|
@ -60,117 +60,123 @@ public class ReflogResolveTest extends RepositoryTestCase { |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void resolveMasterCommits() throws Exception { |
|
|
|
public void resolveMasterCommits() throws Exception { |
|
|
|
Git git = new Git(db); |
|
|
|
try (Git git = new Git(db)) { |
|
|
|
writeTrashFile("file.txt", "content"); |
|
|
|
writeTrashFile("file.txt", "content"); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
RevCommit c1 = git.commit().setMessage("create file").call(); |
|
|
|
RevCommit c1 = git.commit().setMessage("create file").call(); |
|
|
|
writeTrashFile("file.txt", "content2"); |
|
|
|
writeTrashFile("file.txt", "content2"); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
RevCommit c2 = git.commit().setMessage("edit file").call(); |
|
|
|
RevCommit c2 = git.commit().setMessage("edit file").call(); |
|
|
|
|
|
|
|
|
|
|
|
assertEquals(c2, db.resolve("master@{0}")); |
|
|
|
assertEquals(c2, db.resolve("master@{0}")); |
|
|
|
assertEquals(c1, db.resolve("master@{1}")); |
|
|
|
assertEquals(c1, db.resolve("master@{1}")); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void resolveUnnamedCurrentBranchCommits() throws Exception { |
|
|
|
public void resolveUnnamedCurrentBranchCommits() throws Exception { |
|
|
|
Git git = new Git(db); |
|
|
|
try (Git git = new Git(db)) { |
|
|
|
writeTrashFile("file.txt", "content"); |
|
|
|
writeTrashFile("file.txt", "content"); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
RevCommit c1 = git.commit().setMessage("create file").call(); |
|
|
|
RevCommit c1 = git.commit().setMessage("create file").call(); |
|
|
|
writeTrashFile("file.txt", "content2"); |
|
|
|
writeTrashFile("file.txt", "content2"); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
RevCommit c2 = git.commit().setMessage("edit file").call(); |
|
|
|
RevCommit c2 = git.commit().setMessage("edit file").call(); |
|
|
|
|
|
|
|
|
|
|
|
assertEquals(c2, db.resolve("master@{0}")); |
|
|
|
assertEquals(c2, db.resolve("master@{0}")); |
|
|
|
assertEquals(c1, db.resolve("master@{1}")); |
|
|
|
assertEquals(c1, db.resolve("master@{1}")); |
|
|
|
|
|
|
|
|
|
|
|
git.checkout().setCreateBranch(true).setName("newbranch") |
|
|
|
git.checkout().setCreateBranch(true).setName("newbranch") |
|
|
|
.setStartPoint(c1).call(); |
|
|
|
.setStartPoint(c1).call(); |
|
|
|
|
|
|
|
|
|
|
|
// same as current branch, e.g. master
|
|
|
|
// same as current branch, e.g. master
|
|
|
|
assertEquals(c1, db.resolve("@{0}")); |
|
|
|
assertEquals(c1, db.resolve("@{0}")); |
|
|
|
try { |
|
|
|
try { |
|
|
|
|
|
|
|
assertEquals(c1, db.resolve("@{1}")); |
|
|
|
|
|
|
|
fail(); // Looking at wrong ref, e.g HEAD
|
|
|
|
|
|
|
|
} catch (RevisionSyntaxException e) { |
|
|
|
|
|
|
|
assertNotNull(e); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// detached head, read HEAD reflog
|
|
|
|
|
|
|
|
git.checkout().setName(c2.getName()).call(); |
|
|
|
|
|
|
|
assertEquals(c2, db.resolve("@{0}")); |
|
|
|
assertEquals(c1, db.resolve("@{1}")); |
|
|
|
assertEquals(c1, db.resolve("@{1}")); |
|
|
|
fail(); // Looking at wrong ref, e.g HEAD
|
|
|
|
assertEquals(c2, db.resolve("@{2}")); |
|
|
|
} catch (RevisionSyntaxException e) { |
|
|
|
|
|
|
|
assertNotNull(e); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// detached head, read HEAD reflog
|
|
|
|
|
|
|
|
git.checkout().setName(c2.getName()).call(); |
|
|
|
|
|
|
|
assertEquals(c2, db.resolve("@{0}")); |
|
|
|
|
|
|
|
assertEquals(c1, db.resolve("@{1}")); |
|
|
|
|
|
|
|
assertEquals(c2, db.resolve("@{2}")); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void resolveReflogParent() throws Exception { |
|
|
|
public void resolveReflogParent() throws Exception { |
|
|
|
Git git = new Git(db); |
|
|
|
try (Git git = new Git(db)) { |
|
|
|
writeTrashFile("file.txt", "content"); |
|
|
|
writeTrashFile("file.txt", "content"); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
RevCommit c1 = git.commit().setMessage("create file").call(); |
|
|
|
RevCommit c1 = git.commit().setMessage("create file").call(); |
|
|
|
writeTrashFile("file.txt", "content2"); |
|
|
|
writeTrashFile("file.txt", "content2"); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
git.commit().setMessage("edit file").call(); |
|
|
|
git.commit().setMessage("edit file").call(); |
|
|
|
|
|
|
|
|
|
|
|
assertEquals(c1, db.resolve("master@{0}~1")); |
|
|
|
assertEquals(c1, db.resolve("master@{0}~1")); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void resolveNonExistingBranch() throws Exception { |
|
|
|
public void resolveNonExistingBranch() throws Exception { |
|
|
|
Git git = new Git(db); |
|
|
|
try (Git git = new Git(db)) { |
|
|
|
writeTrashFile("file.txt", "content"); |
|
|
|
writeTrashFile("file.txt", "content"); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
git.commit().setMessage("create file").call(); |
|
|
|
git.commit().setMessage("create file").call(); |
|
|
|
assertNull(db.resolve("notabranch@{7}")); |
|
|
|
assertNull(db.resolve("notabranch@{7}")); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void resolvePreviousBranch() throws Exception { |
|
|
|
public void resolvePreviousBranch() throws Exception { |
|
|
|
Git git = new Git(db); |
|
|
|
try (Git git = new Git(db)) { |
|
|
|
writeTrashFile("file.txt", "content"); |
|
|
|
writeTrashFile("file.txt", "content"); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
RevCommit c1 = git.commit().setMessage("create file").call(); |
|
|
|
RevCommit c1 = git.commit().setMessage("create file").call(); |
|
|
|
writeTrashFile("file.txt", "content2"); |
|
|
|
writeTrashFile("file.txt", "content2"); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
RevCommit c2 = git.commit().setMessage("edit file").call(); |
|
|
|
RevCommit c2 = git.commit().setMessage("edit file").call(); |
|
|
|
|
|
|
|
|
|
|
|
git.checkout().setCreateBranch(true).setName("newbranch") |
|
|
|
git.checkout().setCreateBranch(true).setName("newbranch") |
|
|
|
.setStartPoint(c1).call(); |
|
|
|
.setStartPoint(c1).call(); |
|
|
|
|
|
|
|
|
|
|
|
git.checkout().setName(c1.getName()).call(); |
|
|
|
git.checkout().setName(c1.getName()).call(); |
|
|
|
|
|
|
|
|
|
|
|
git.checkout().setName("master").call(); |
|
|
|
git.checkout().setName("master").call(); |
|
|
|
|
|
|
|
|
|
|
|
assertEquals(c1.getName(), db.simplify("@{-1}")); |
|
|
|
assertEquals(c1.getName(), db.simplify("@{-1}")); |
|
|
|
assertEquals("newbranch", db.simplify("@{-2}")); |
|
|
|
assertEquals("newbranch", db.simplify("@{-2}")); |
|
|
|
assertEquals("master", db.simplify("@{-3}")); |
|
|
|
assertEquals("master", db.simplify("@{-3}")); |
|
|
|
|
|
|
|
|
|
|
|
// chained expression
|
|
|
|
// chained expression
|
|
|
|
try { |
|
|
|
try { |
|
|
|
// Cannot refer to reflog of detached head
|
|
|
|
// Cannot refer to reflog of detached head
|
|
|
|
db.resolve("@{-1}@{0}"); |
|
|
|
db.resolve("@{-1}@{0}"); |
|
|
|
fail(); |
|
|
|
fail(); |
|
|
|
} catch (RevisionSyntaxException e) { |
|
|
|
} catch (RevisionSyntaxException e) { |
|
|
|
// good
|
|
|
|
// good
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
assertEquals(c1.getName(), db.resolve("@{-2}@{0}").getName()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertEquals(c2.getName(), db.resolve("@{-3}@{0}").getName()); |
|
|
|
} |
|
|
|
} |
|
|
|
assertEquals(c1.getName(), db.resolve("@{-2}@{0}").getName()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertEquals(c2.getName(), db.resolve("@{-3}@{0}").getName()); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void resolveDate() throws Exception { |
|
|
|
public void resolveDate() throws Exception { |
|
|
|
Git git = new Git(db); |
|
|
|
try (Git git = new Git(db)) { |
|
|
|
writeTrashFile("file.txt", "content"); |
|
|
|
writeTrashFile("file.txt", "content"); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
git.add().addFilepattern("file.txt").call(); |
|
|
|
git.commit().setMessage("create file").call(); |
|
|
|
git.commit().setMessage("create file").call(); |
|
|
|
try { |
|
|
|
try { |
|
|
|
db.resolve("master@{yesterday}"); |
|
|
|
db.resolve("master@{yesterday}"); |
|
|
|
fail("Exception not thrown"); |
|
|
|
fail("Exception not thrown"); |
|
|
|
} catch (RevisionSyntaxException e) { |
|
|
|
} catch (RevisionSyntaxException e) { |
|
|
|
assertNotNull(e); |
|
|
|
assertNotNull(e); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |