public void WriteIntegrationParameters(CachedVersion cachedVersion, IEnumerable<IBuildServer> applicableBuildServers) { foreach (var buildServer in applicableBuildServers) { logger.LogInfo(string.Format("Executing GenerateSetVersionMessage for '{0}'.", buildServer.GetType().Name)); logger.LogInfo(buildServer.GenerateSetVersionMessage(cachedVersion.SemanticVersion.ToString())); logger.LogInfo(string.Format("Executing GenerateBuildLogOutput for '{0}'.", buildServer.GetType().Name)); foreach (var buildParameter in BuildOutputFormatter.GenerateBuildLogOutput(cachedVersion.SemanticVersion, buildServer)) { logger.LogInfo(buildParameter); } } }
public static SemanticVersion GetVersion(string gitDirectory) { using (var repo = RepositoryLoader.GetRepo(gitDirectory)) { var branch = repo.Head; if (branch.Tip == null) { throw new ErrorException("No Tip found. Has repo been initialized?"); } var ticks = DirectoryDateFinder.GetLastDirectoryWrite(gitDirectory); var key = string.Format("{0}:{1}:{2}", repo.Head.CanonicalName, repo.Head.Tip.Sha, ticks); CachedVersion cachedVersion; SemanticVersion versionAndBranch; if (versionCacheVersions.TryGetValue(key, out cachedVersion)) { Logger.WriteInfo("Version read from cache."); if (cachedVersion.Timestamp == ticks) { versionAndBranch = cachedVersion.SemanticVersion; } else { Logger.WriteInfo("Change detected. flushing cache."); versionAndBranch = cachedVersion.SemanticVersion = GetSemanticVersion(repo); } } else { Logger.WriteInfo("Version not in cache. Calculating version."); versionAndBranch = GetSemanticVersion(repo); versionCacheVersions[key] = new CachedVersion { SemanticVersion = versionAndBranch, Timestamp = ticks }; } return versionAndBranch; } }
public static SemanticVersion GetVersion(string gitDirectory) { using (var repo = RepositoryLoader.GetRepo(gitDirectory)) { var branch = repo.Head; if (branch.Tip == null) { throw new WarningException("No Tip found. Has repo been initialized?"); } var ticks = DirectoryDateFinder.GetLastDirectoryWrite(gitDirectory); var key = string.Format("{0}:{1}:{2}", repo.Head.CanonicalName, repo.Head.Tip.Sha, ticks); CachedVersion cachedVersion; SemanticVersion versionAndBranch; if (versionCacheVersions.TryGetValue(key, out cachedVersion)) { Logger.WriteInfo("Version read from cache."); if (cachedVersion.Timestamp == ticks) { versionAndBranch = cachedVersion.SemanticVersion; } else { Logger.WriteInfo("Change detected. flushing cache."); versionAndBranch = cachedVersion.SemanticVersion = GetSemanticVersion(repo); } } else { Logger.WriteInfo("Version not in cache. Calculating version."); versionAndBranch = GetSemanticVersion(repo); versionCacheVersions[key] = new CachedVersion { SemanticVersion = versionAndBranch, Timestamp = ticks }; } return(versionAndBranch); } }
void CreateTempAssemblyInfo(CachedVersion semanticVersion, EffectiveConfiguration configuration) { if (IntermediateOutputPath == null) { var tempFileName = string.Format("AssemblyInfo_{0}_{1}.g.cs", Path.GetFileNameWithoutExtension(ProjectFile), Path.GetRandomFileName()); AssemblyInfoTempFilePath = Path.Combine(TempFileTracker.TempPath, tempFileName); } else { AssemblyInfoTempFilePath = Path.Combine(IntermediateOutputPath, "GitVersionTaskAssemblyInfo.g.cs"); } var assemblyInfoBuilder = new AssemblyInfoBuilder { CachedVersion = semanticVersion }; var assemblyInfo = assemblyInfoBuilder.GetAssemblyInfoText(configuration); File.WriteAllText(AssemblyInfoTempFilePath, assemblyInfo); }