Zunächst einige git
Befehle Versionsinformationen abzurufen:
- begehen Hash lange
git log --pretty="%H" -n1 HEAD
- commit Hash kurzen
git log --pretty="%h" -n1 HEAD
- commit Datum
git log --pretty="%ci" -n1 HEAD
- tag
git describe --tags --abbrev=0
- Tag lang mit Hash-
Zweitens einfach exec()
mit den git Befehle Ihrer Wahl von oben kombiniert verwenden zu bauen die Versionskennung:
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:m:s'));
}
}
// Usage: echo 'MyApplication ' . ApplicationVersion::get();
// MyApplication v1.2.3-dev.474a1d0 (2016-11-02 14:11:22)
So mögen Sie jetzt mit der Welt teilen? Dann sollten Sie das aufteilen: Formulieren Sie Ihre Frage und lassen Sie dann die Auflösung als Antwort. Siehe http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ – hakre
['git describe'] (https://www.kernel.org /pub/software/scm/git/docs/git-describe.html) ist bei Verwendung mit [tagging] (http://git-scm.com/book/en/Git-Basics-Tagging) viel sinnvoller. – Joe
Anstatt Rev-Liste HEAD piped zu Kopf, verwenden Sie einfach 'git rev-parse HEAD' –