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