VersionInfo? GetFromGit()

in build/VersionInfoAttribute.cs [45:66]


        VersionInfo? GetFromGit()
        {
            if (!GitTasks.GitIsDetached())
            {
                var commitCount = GitTasks.Git("rev-list HEAD --count", logOutput: false).Select(x => x.Text).Single();
                var branch = GitTasks.GitCurrentBranch()?.Replace("refs/heads/", "").Replace("/", "-");
                var revision = GitTasks.Git("rev-parse HEAD", logOutput: false).Select(x => x.Text).Single();
            
                if (!string.IsNullOrEmpty(commitCount) && !string.IsNullOrEmpty(branch) && !string.IsNullOrEmpty(revision))
                {
                    return new VersionInfo(
                        $"{VersionMajor}.{VersionMinor}.{commitCount}.0",
                        $"{VersionMajor}.{VersionMinor}.{commitCount}.0",
                        $"{VersionMajor}.{VersionMinor}.{commitCount}.0+Branch.{branch}.Sha.{revision}",
                        IsMainBranch(branch) 
                            ? $"{VersionMajor}.{VersionMinor}.{commitCount}"
                            : $"{VersionMajor}.{VersionMinor}.{commitCount}-{branch}");
                }
            }

            return null;
        }