public void SimpleStoreTest() { CreateFile("a.txt", "some content"); CreateFile("b.txt", "other content"); Blob blobA = CreateBlob("a.txt"); Blob blobB = CreateBlob("b.txt"); HashKey keyBlobA = ObjectDatabase.Store(blobA); HashKey keyBlobB = ObjectDatabase.Store(blobB); TreeBuilder treeBuilder = TreeBuilder.CreateRootTreeBuilder(); treeBuilder.AddBlobToTreeHierarchy(blobA); treeBuilder.AddBlobToTreeHierarchy(blobB); HashKey keyTreeBuilder = ObjectDatabase.Store(treeBuilder); Tree retrievedTree = ObjectDatabase.RetrieveTree(keyTreeBuilder); Assert.Equal(treeBuilder.GetChecksum(), retrievedTree.GetChecksum()); }
public void SkipDirTest() { CreateFile("a.txt", "some content"); Directory.CreateDirectory("dir/subdir"); CreateFile("dir/subdir/b.txt", "other content"); Blob blobA = CreateBlob("a.txt"); Blob blobB = CreateBlob("dir/subdir/b.txt"); TreeBuilder treeBuilder = TreeBuilder.CreateRootTreeBuilder(); treeBuilder.AddBlobToTreeHierarchy(blobA); treeBuilder.AddBlobToTreeHierarchy(blobB); List <Blob> allBlobs = new List <Blob>(); List <TreeBuilder> allTrees = new List <TreeBuilder>(); treeBuilder.GetAllBlobsAndSubTrees(allBlobs, allTrees); Assert.Equal(allBlobs.Count, 2); Assert.Equal(allTrees.Count, 3); }
/// Beware of deleted files - do not load blobs for them private void AddAllStagedFilesToTree(TreeBuilder treeBuilder, List <string> stagedFiles) { foreach (string stagedFile in stagedFiles) { RelativePath stagedFilePath = new RelativePath(stagedFile); if (Index.ResolveFileStatus(stagedFilePath) == FileStatus.Deleted) { Index.RemoveFile(stagedFilePath); continue; } Blob blob = GetStagedFileBlob(stagedFile); treeBuilder.AddBlobToTreeHierarchy(blob); Index.CommitFile(stagedFilePath); } }
private void AddRestOfTrackedFilesToTree(TreeBuilder treeBuilder, List <string> stagedFiles) { ISet <string> restOfTrackedFiles = new HashSet <string>(Index.GetAllTrackedFiles()); restOfTrackedFiles.ExceptWith(stagedFiles); foreach (string file in restOfTrackedFiles) { string repoKeyStr = Index.GetRepoFileContentKey(new RelativePath(file)); Debug.Assert(repoKeyStr != null, "never commited files should not exist now"); HashKey repoKey = HashKey.ParseFromString(repoKeyStr); Blob blob = ObjectDatabase.RetrieveBlob(repoKey); treeBuilder.AddBlobToTreeHierarchy(blob); } }
private HashKey CreateAndStoreSimpleCommit(Blob[] blobs) { HashKey[] blobKeys = new HashKey[blobs.Length]; // blobs are normaly stored in AddCommand for (int i = 0; i < blobKeys.Length; i++) { blobKeys[i] = ObjectDatabase.Store(blobs[i]); } // this is done in CommitCommand TreeBuilder treeBuilder = TreeBuilder.CreateRootTreeBuilder(); foreach (Blob blob in blobs) { treeBuilder.AddBlobToTreeHierarchy(blob); } Commit commit = new Commit(null, treeBuilder.GetChecksum(), "Some commit message"); return(ObjectDatabase.StoreCommitWithTreeHierarchy(commit, treeBuilder)); }