static string CreateDynamicRepository(string targetPath, AuthenticationInfo authentication, string repositoryUrl, string targetBranch, bool noFetch) { if (string.IsNullOrWhiteSpace(targetBranch)) { throw new Exception("Dynamic Git repositories must have a target branch (/b)"); } using (Logger.IndentLog($"Creating dynamic repository at '{targetPath}'")) { var gitDirectory = Path.Combine(targetPath, ".git"); if (Directory.Exists(targetPath)) { Logger.WriteInfo("Git repository already exists"); using (Logger.IndentLog($"Normalizing git directory for branch '{targetBranch}'")) { GitRepositoryHelper.NormalizeGitDirectory(gitDirectory, authentication, noFetch, targetBranch, true); } return(gitDirectory); } CloneRepository(repositoryUrl, gitDirectory, authentication); using (Logger.IndentLog($"Normalizing git directory for branch '{targetBranch}'")) { // Normalize (download branches) before using the branch GitRepositoryHelper.NormalizeGitDirectory(gitDirectory, authentication, noFetch, targetBranch, true); } return(gitDirectory); } }
public static void DumpGraph(string workingDirectory, Action <string> writer = null, int?maxCommits = null) { var output = new StringBuilder(); try { ProcessHelper.Run( o => output.AppendLine(o), e => output.AppendLineFormat("ERROR: {0}", e), null, "git", GitRepositoryHelper.CreateGitLogArgs(maxCommits), workingDirectory); } catch (FileNotFoundException exception) { if (exception.FileName != "git") { throw; } output.AppendLine("Could not execute 'git log' due to the following error:"); output.AppendLine(exception.ToString()); } if (writer != null) { writer(output.ToString()); } else { Console.Write(output.ToString()); } }
public void Prepare(bool normalizeGitDirectory, string currentBranch, bool shouldCleanUpRemotes = false) { var authentication = new AuthenticationInfo { Username = arguments.Authentication?.Username, Password = arguments.Authentication?.Password }; if (string.IsNullOrWhiteSpace(TargetUrl)) { if (!normalizeGitDirectory) { return; } using (log.IndentLog($"Normalizing git directory for branch '{currentBranch}'")) { if (shouldCleanUpRemotes) { CleanupDuplicateOrigin(); } GitRepositoryHelper.NormalizeGitDirectory(log, environment, GetDotGitDirectory(), authentication, noFetch, currentBranch, IsDynamicGitRepository()); } return; } var tempRepositoryPath = CalculateTemporaryRepositoryPath(TargetUrl, dynamicRepositoryLocation); dynamicGitRepositoryPath = CreateDynamicRepository(tempRepositoryPath, authentication, TargetUrl, currentBranch); }
private void NormalizeGitDirectory(AuthenticationInfo auth, string targetBranch, string gitDirectory, bool isDynamicRepository) { using (log.IndentLog($"Normalizing git directory for branch '{targetBranch}'")) { // Normalize (download branches) before using the branch GitRepositoryHelper.NormalizeGitDirectory(log, environment, gitDirectory, auth, options.Value.NoFetch, targetBranch, isDynamicRepository); } }
public void Initialise(bool normaliseGitDirectory, string currentBranch) { if (string.IsNullOrWhiteSpace(targetUrl)) { if (normaliseGitDirectory) { GitRepositoryHelper.NormalizeGitDirectory(GetDotGitDirectory(), authentication, noFetch, currentBranch); } return; } var tempRepositoryPath = CalculateTemporaryRepositoryPath(targetUrl, dynamicRepositoryLocation); DynamicGitRepositoryPath = CreateDynamicRepository(tempRepositoryPath, authentication, targetUrl, currentBranch, noFetch); }
public void Initialise(bool normaliseGitDirectory, string currentBranch, bool shouldCleanUpRemotes = false) { if (string.IsNullOrWhiteSpace(targetUrl)) { if (normaliseGitDirectory) { using (Logger.IndentLog($"Normalizing git directory for branch '{currentBranch}'")) { if (shouldCleanUpRemotes) { CleanupDuplicateOrigin(); } GitRepositoryHelper.NormalizeGitDirectory(GetDotGitDirectory(), authentication, noFetch, currentBranch, IsDynamicGitRepository); } } return; } var tempRepositoryPath = CalculateTemporaryRepositoryPath(targetUrl, dynamicRepositoryLocation); DynamicGitRepositoryPath = CreateDynamicRepository(tempRepositoryPath, authentication, targetUrl, currentBranch, noFetch); }