I want to display the Git version on my site.
How can I display a semantic version number from Git, that non-technical users of a site can easily reference when raising issues?
Check your version of Git You can check your current version of Git by running the git --version command in a terminal (Linux, macOS) or command prompt (Windows).
GitVersion is a tool that generates a Semantic Version number based on your Git history. The version number generated from GitVersion can then be used for various different purposes, such as: Stamping a version number on artifacts (packages) produced during build.
Firstly, some git
commands to fetch version information:
git log --pretty="%H" -n1 HEAD
git log --pretty="%h" -n1 HEAD
git log --pretty="%ci" -n1 HEAD
git describe --tags --abbrev=0
git describe --tags
Secondly, use exec()
combined with the git commands of your choice from above to build the version identifier:
class ApplicationVersion { const MAJOR = 1; const MINOR = 2; const PATCH = 3; public static function get() { $commitHash = trim(exec('git log --pretty="%h" -n1 HEAD')); $commitDate = new \DateTime(trim(exec('git log -n1 --pretty=%ci HEAD'))); $commitDate->setTimezone(new \DateTimeZone('UTC')); return sprintf('v%s.%s.%s-dev.%s (%s)', self::MAJOR, self::MINOR, self::PATCH, $commitHash, $commitDate->format('Y-m-d H:i:s')); } } // Usage: echo 'MyApplication ' . ApplicationVersion::get(); // MyApplication v1.2.3-dev.b576fd7 (2016-11-02 14:11:22)
Gist: https://gist.github.com/lukeoliff/5501074
<?php class QuickGit { public static function version() { exec('git describe --always',$version_mini_hash); exec('git rev-list HEAD | wc -l',$version_number); exec('git log -1',$line); $version['short'] = "v1.".trim($version_number[0]).".".$version_mini_hash[0]; $version['full'] = "v1.".trim($version_number[0]).".$version_mini_hash[0] (".str_replace('commit ','',$line[0]).")"; return $version; } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With