public void TestLibGit2Extensions_CheckoutAllRemoteBranches() { var otherRepositoryRootFolder = new DirectoryInfo(@"C:\dev1\GitReposTest\Repo3"); using (var otherRepository = new Repository(otherRepositoryRootFolder.FullName)) { otherRepository.CheckoutAllRemoteBranches(); } }
protected virtual void HandleFixedVersioning(Dependency dependency, CloneOptions cloneOptions) { if (!string.IsNullOrEmpty(dependency.Branch) && !string.IsNullOrEmpty(dependency.Commit)) throw new InvalidOperationException($"Dependency {dependency}: fixed versioning: definition is incoherent: Branch = '{dependency.Branch}' != '' and Commit = '{dependency.Commit}' != '' => you can't have both set!"); if (!Directory.Exists(dependency.OutputFolder)) { Log($"Dependency {dependency}: fixed versioning: cloning fixed branch '{dependency.Branch}' of '{dependency.Remote}' into '{dependency.OutputFolder}'..."); cloneOptions.BranchName = dependency.Branch; Repository.Clone(dependency.Remote, dependency.OutputFolder, cloneOptions); } else if (Pull) { Log($"Dependency {dependency}: fixed versioning: repository '{dependency.Remote}' already cloned in '{dependency.OutputFolder}'"); try { IndentLevel++; using (var otherRepository = new Repository(dependency.OutputFolder)) { otherRepository.CheckoutAllRemoteBranches(); if (!string.IsNullOrEmpty(dependency.Commit)) HandleFixedVersioning_Commit(dependency, otherRepository); else HandleFixedVersioning_Branch(dependency, otherRepository); } } finally { IndentLevel--; } } }
protected virtual void HandleAutoVersioning(Repository myRepository, string myShortName, Dependency dependency, CloneOptions cloneOptions) { if (!string.IsNullOrEmpty(dependency.Commit)) throw new InvalidOperationException($"Dependency {dependency}: autoversioning: definition is incoherent: Branch = '{dependency.Branch}' and a Commit = '{dependency.Commit}' => you can't have both set!"); if (Directory.Exists(dependency.OutputFolder)) { Log($"Dependency {dependency}: autoversioning: output folder already exists: removing..."); new DirectoryInfo(dependency.OutputFolder).ForceDelete(); } Log($"Dependency {dependency}: autoversioning: cloning default branch of '{dependency.Remote}' into '{dependency.OutputFolder}'"); Repository.Clone(dependency.Remote, dependency.OutputFolder, cloneOptions); try { IndentLevel++; using (var otherRepository = new Repository(dependency.OutputFolder)) { otherRepository.CheckoutAllRemoteBranches(); VersionResolver.CheckoutBranchInDependencyRepository(otherRepository, myRepository, myShortName, this); } } finally { IndentLevel--; } }