コード例 #1
0
        public void Link(string fullRepositoryName)
        {
            if (this.IsInitialized)
            {
                throw new InvalidOperationException($"The repository at '{Directory.PhysicalPath}' is already initialized for repository {this.FullRepositoryName}");
            }

            this.FullRepositoryName = fullRepositoryName;

            RepositoryFileReference[] treeFiles = null;

            UI.PrintLine("Getting repository information...");

            var branchCount = Api.GetBranchCount();

            if (branchCount == 0)
            {
                LocalBranchName = "master";
                LocalCommitSha  = null;
                UpdateStateFile();
                UpdateTreeFile(new RepositoryFileReference[0]);
            }
            else
            {
                LocalBranchName = Api.GetRepositoryInfo().DefaultBranch;
                LocalCommitSha  = Api.GetBranchCommitSha(LocalBranchName);
                var treeSha = Api.GetCommitTreeSha(LocalCommitSha);
                treeFiles = Api.GetTreeFileReferences(treeSha);

                UpdateStateFile();
                UpdateTreeFile(treeFiles);
            }

            DoForAllLocalFiles(file => { Directory.SetModified(file); });
        }