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); }); }