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;
            }
        }
Beispiel #3
0
        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);
        }