public void testCheckout() { // Prepare tree, remote it and checkout var index = new GitIndex(db); FileInfo aslashb = writeTrashFile("a/b", "data:a/b"); FileInfo acolonb = writeTrashFile("a@b", "data:a:b"); FileInfo adotb = writeTrashFile("a.b", "data:a.b"); index.add(trash, aslashb); index.add(trash, acolonb); index.add(trash, adotb); index.write(); index.writeTree(); Delete(aslashb); Delete(acolonb); Delete(adotb); Delete(Directory.GetParent(aslashb.FullName)); var index2 = new GitIndex(db); Assert.AreEqual(0, index2.Members.Count); index2.ReadTree(db.MapTree(ObjectId.FromString("0036d433dc4f10ec47b61abc3ec5033c78d34f84"))); index2.checkout(trash); Assert.AreEqual("data:a/b", Content(aslashb)); Assert.AreEqual("data:a:b", Content(acolonb)); Assert.AreEqual("data:a.b", Content(adotb)); if (CanRunGitStatus) { Assert.AreEqual(0, System(trash, "git status")); } }
// [henon] we do not publicly expose checking out into a custom directory, as this is an unrealistic use case and conflicts with checking out paths. // it is possible anyway by iterating over the Entries and writing the contents of each entry into a custom directory! private void Checkout(string directory) { GitIndex.RereadIfNecessary(); GitIndex.checkout(new FileInfo(directory)); }
public void testCheckout() { // Prepare tree, remote it and checkout var index = new GitIndex(db); FileInfo aslashb = writeTrashFile("a/b", "data:a/b"); FileInfo acolonb = writeTrashFile("a:b", "data:a:b"); FileInfo adotb = writeTrashFile("a.b", "data:a.b"); index.add(trash, aslashb); index.add(trash, acolonb); index.add(trash, adotb); index.write(); index.writeTree(); Delete(aslashb); Delete(acolonb); Delete(adotb); Delete(Directory.GetParent(aslashb.FullName)); var index2 = new GitIndex(db); Assert.AreEqual(0, index2.Members.Length); index2.ReadTree(db.MapTree(ObjectId.FromString("c696abc3ab8e091c665f49d00eb8919690b3aec3"))); index2.checkout(trash); Assert.AreEqual("data:a/b", Content(aslashb)); Assert.AreEqual("data:a:b", Content(acolonb)); Assert.AreEqual("data:a.b", Content(adotb)); if (CanRunGitStatus) { Assert.AreEqual(0, System(trash, "git status")); } }