Пример #1
0
        public void ProcessesNamedEntry()
        {
            GitTreeEntry[] inputData = new[]
            {
                new GitTreeEntry("file", this.RandomSha(), false, true),
                new GitTreeEntry("Dir", this.RandomSha(), false, true)
            };

            using (MemoryStream testData = new MemoryStream())
            {
                // Create test data
                WriteTestTreeEntries(inputData, testData);

                testData.Position = 0;

                using (MemoryStream mockStdInStream = new MemoryStream())
                    using (StreamWriter mockStdIn = new StreamWriter(mockStdInStream))
                    {
                        GitCatFileBatchProcess dut    = new GitCatFileBatchProcess(new StreamReader(testData, GitOutputEncoding), mockStdIn);
                        GitTreeEntry[]         output = dut.GetTreeEntries(TestTreeSha).ToArray();

                        output.Length.ShouldEqual(inputData.Length);
                        for (int i = 0; i < output.Length; ++i)
                        {
                            output[i].Sha.ShouldEqual(inputData[i].Sha);
                            output[i].Name.ShouldEqual(inputData[i].Name);
                            output[i].IsBlob.ShouldEqual(inputData[i].IsBlob);
                            output[i].IsTree.ShouldEqual(inputData[i].IsTree);
                        }
                    }
            }
        }
Пример #2
0
        private CloneVerb.Result HydrateRootGitAttributes_CanTimeout(GitObjects gitObjects, string branch)
        {
            using (GitCatFileBatchProcess catFile = new GitCatFileBatchProcess(this.tracer, this.enlistment))
            {
                string       treeSha       = catFile.GetTreeSha_CanTimeout(branch);
                GitTreeEntry gitAttributes = catFile.GetTreeEntries_CanTimeout(treeSha).FirstOrDefault(entry => entry.Name.Equals(GVFSConstants.SpecialGitFiles.GitAttributes));

                if (gitAttributes == null)
                {
                    return(new CloneVerb.Result("This branch does not contain a " + GVFSConstants.SpecialGitFiles.GitAttributes + " file in the root folder.  This file is required by GVFS clone"));
                }

                if (!gitObjects.TryDownloadAndSaveBlobs(new[] { gitAttributes.Sha }))
                {
                    return(new CloneVerb.Result("Could not download " + GVFSConstants.SpecialGitFiles.GitAttributes + " file"));
                }
            }

            return(new CloneVerb.Result(true));
        }