我想在我的网站上显示的Git版本(i want to display the git version

2019-09-01 17:42发布

我想我的网站上显示的Git版本号。

我发现,这是一个承诺的哈希,这是不适合非技术用户参考。

我创建了这个类来显示当前的git地方到这个脚本的版本“数字”。

Answer 1:

首先,一些git命令来获取版本信息:

  • 提交哈希长
    • 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

其次,简单地使用exec()从上方您选择的GIT中的命令来构建版本标识符相组合:

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)


Answer 2:

要点: 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;
  }

}


Answer 3:

如果你想做到这一点不exec()并使用了git标签:

你可以得到当前磁头从提交哈希.git/HEAD.git/refs/heads/master 。 然后,我们循环找到匹配。 第一扭转数组速度,因为你是在一个更高的近期标签更容易。

因此,如果当前的PHP文件坐落在一个public_htmlwww文件夹从下一层.git文件夹...

<?php

$HEAD_hash = file_get_contents('../.git/refs/heads/master'); // or branch x

$files = glob('../.git/refs/tags/*');
foreach(array_reverse($files) as $file) {
    $contents = file_get_contents($file);

    if($HEAD_hash === $contents)
    {
        print 'Current tag is ' . basename($file);
        exit;
    }
}

print 'No matching tag';


Answer 4:

简单的方法:

  • 短哈希$rev = exec('git rev-parse --short HEAD');
  • 全哈希$rev = exec('git rev-parse HEAD');


Answer 5:

我之所以这样做是因为:

substr(file_get_contents(GIT_DIR.'/refs/heads/master'),0,7)

资源友好型和相同的,因为我有下显示日食



文章来源: i want to display the git version on my site