Skip to content

BigBang1112/simplest-git-source-generator

Repository files navigation

SimplestGitSourceGenerator

Nuget GitHub release (latest by date including pre-releases)

Happy to showcase the simplest solution for retrieving Git information in your .NET apps.

Requirements

  • Project must be a Git repository with at least 1 commit
  • Git must be installed

If these requirements are not fulfilled, the build will not pass!

Usage

Install the NuGet package:

dotnet add package SimplestGitSourceGenerator

Code:

using SimplestGitSourceGenerator;

Console.WriteLine(SimplestGit.CommitHash);
Console.WriteLine(SimplestGit.CommitDate);
Console.WriteLine(SimplestGit.Branch);
Console.WriteLine(SimplestGit.Tag);

If you want to include remote URL as well, you can enable it via property:

<PropertyGroup>
    <PublishRepositoryUrl>true</PublishRepositoryUrl>
</PropertyGroup>

Once that's done, you can access it via SimplestGit.RemoteUrl.

Docker build

Ensure that you remove .git folders from your .dockerignore file and that you multi-stage your build so that the .git folder is not included in the final image.

Make sure to install git before building your project (Alpine example):

RUN apk add --no-cache git

How does it work?

Before the source generator kicks in, several Git commands are called and stored as compiler properties before they are baked into the code.

  • git rev-parse HEAD (SimplestGitCommitHash)
  • git rev-parse --abbrev-ref HEAD (SimplestGitBranch)
  • git log -1 --format=%cI (SimplestGitCommitDate)
  • git describe --tags --always (SimplestGitTag)
  • git ls-remote --get-url (SimplestGitRemoteUrl) + credentials are automatically stripped from the URL

These commands must complete with the exit code 0, otherwise, the build will not pass. All of that is done thanks to the build/SimplestGitSourceGenerator.targets file.

This is a simpler alternative to SourceLink or GitInfo packages if you don't mind requiring the Git dependency.

About

Simplest solution to get Git information in your .NET apps.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages