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--;
            }
        }
        public void TestVersionResolver_CheckoutBranchInDepencendyRepository()
        {
            var myRepositoryRootFolder    = new DirectoryInfo(@"C:\dev1\GitReposTest\Repo1"); //GetRootRepositoryFolderOf(Directory.GetCurrentDirectory());
            var otherRepositoryRootFolder = new DirectoryInfo(@"C:\dev1\GitReposTest\Repo2");

            using (var myRepository = new Repository(myRepositoryRootFolder.FullName))
                using (var otherRepository = new Repository(otherRepositoryRootFolder.FullName))
                {
                    VersionResolver.CheckoutBranchInDependencyRepository(otherRepository, myRepository, "", new TraceLogger());
                }
        }