예제 #1
0
        public string SelectConfigFilePath(GitPreparer gitPreparer, IFileSystem fileSystem)
        {
            var workingDirectory     = gitPreparer.WorkingDirectory;
            var projectRootDirectory = gitPreparer.GetProjectRootDirectory();

            if (HasConfigFileAt(workingDirectory, fileSystem))
            {
                return(GetConfigFilePath(workingDirectory, fileSystem));
            }

            return(GetConfigFilePath(projectRootDirectory, fileSystem));
        }
        public static Config Provide(GitPreparer gitPreparer, IFileSystem fileSystem, ConfigFileLocator configFileLocator, bool applyDefaults = true, Config overrideConfig = null, string configFilePath = null)
        {
            var workingDirectory     = gitPreparer.WorkingDirectory;
            var projectRootDirectory = gitPreparer.GetProjectRootDirectory();

            if (configFileLocator.HasConfigFileAt(workingDirectory, fileSystem))
            {
                return(Provide(workingDirectory, fileSystem, configFileLocator, applyDefaults, overrideConfig));
            }

            return(Provide(projectRootDirectory, fileSystem, configFileLocator, applyDefaults, overrideConfig));
        }
예제 #3
0
        public void GetProjectRootDirectory_NoWorktree()
        {
            var versionAndBranchFinder = new ExecuteCore(fileSystem, environment);

            RepositoryScope(versionAndBranchFinder, (fixture, vv) =>
            {
                var targetUrl    = "https://github.com/GitTools/GitVersion.git";
                var gitPreparer  = new GitPreparer(targetUrl, null, new Authentication(), false, fixture.RepositoryPath);
                var expectedPath = fixture.RepositoryPath.TrimEnd('/', '\\');
                gitPreparer.GetProjectRootDirectory().TrimEnd('/', '\\').ShouldBe(expectedPath);
            });
        }
예제 #4
0
        public void Verify(GitPreparer gitPreparer, IFileSystem fileSystem)
        {
            if (!string.IsNullOrWhiteSpace(gitPreparer.TargetUrl))
            {
                // Assuming this is a dynamic repository. At this stage it's unsure whether we have
                // any .git info so we need to skip verification
                return;
            }

            var workingDirectory     = gitPreparer.WorkingDirectory;
            var projectRootDirectory = gitPreparer.GetProjectRootDirectory();

            Verify(workingDirectory, projectRootDirectory, fileSystem);
        }
예제 #5
0
    public void WorksCorrectlyWithLocalRepository()
    {
        using (var fixture = new EmptyRepositoryFixture(new Config()))
        {
            var targetPath = Path.Combine(fixture.RepositoryPath, "tools\\gitversion\\");
            Directory.CreateDirectory(targetPath);
            var gitPreparer     = new GitPreparer(null, null, null, false, targetPath);
            var dotGitDirectory = gitPreparer.GetDotGitDirectory();
            var projectRoot     = gitPreparer.GetProjectRootDirectory();

            dotGitDirectory.ShouldBe(Path.Combine(fixture.RepositoryPath, ".git"));
            projectRoot.ShouldBe(fixture.RepositoryPath);
        }
    }
예제 #6
0
        public void GetProjectRootDirectoryNoWorktree()
        {
            RepositoryScope((fixture, vv) =>
            {
                var targetUrl = "https://github.com/GitTools/GitVersion.git";

                var arguments = new Arguments
                {
                    TargetUrl  = targetUrl,
                    TargetPath = fixture.RepositoryPath
                };

                var gitPreparer  = new GitPreparer(log, environment, Options.Create(arguments));
                var expectedPath = fixture.RepositoryPath.TrimEnd('/', '\\');
                gitPreparer.GetProjectRootDirectory().TrimEnd('/', '\\').ShouldBe(expectedPath);
            });
        }
예제 #7
0
        public void GetProjectRootDirectory_WorkingDirectoryWithWorktree()
        {
            var versionAndBranchFinder = new ExecuteCore(fileSystem, environment);

            RepositoryScope(versionAndBranchFinder, (fixture, vv) =>
            {
                var worktreePath = Path.Combine(Directory.GetParent(fixture.RepositoryPath).FullName, Guid.NewGuid().ToString());
                try
                {
                    // create a branch and a new worktree for it
                    var repo = new Repository(fixture.RepositoryPath);
                    repo.Worktrees.Add("worktree", worktreePath, false);

                    var targetUrl   = "https://github.com/GitTools/GitVersion.git";
                    var gitPreparer = new GitPreparer(targetUrl, null, new Authentication(), false, worktreePath);
                    gitPreparer.GetProjectRootDirectory().TrimEnd('/', '\\').ShouldBe(worktreePath);
                }
                finally
                {
                    DirectoryHelper.DeleteDirectory(worktreePath);
                }
            });
        }