如何在我的开发网站的页面顶部显示当前的 git 分支名称?分支、上次提交日期和哈希

2022-08-30 15:28:31

这是我的情况:

我使用MAMP(PHP)在Mac上进行本地开发。我的网站受 Git 版本控制,并将我的开发服务器指向磁盘上受版本控制的站点根目录。

File structure:
--mysitehere/
---.git/ (.git folder is here versioning everything below)
---src/ (<-- web server root)
----index.php (need the codez here for displaying current git branch)

任何人都可以使用示例代码,这些代码在.git文件夹中查找并查看当前分支是什么,并将其输出到索引.php页面上(以及RoR开发的ruby解决方案)?当我切换分支时,这将非常有用,当我刷新时,在我的浏览器中,我看到我将位于页面顶部的“master”或“your-topic-branch-name-here”。

我愿意使用在PHP中以编程方式访问git的第三方库,或者从.git中的磁盘文件中获取正确的“current-branch”变量。


答案 1

这在PHP中对我有用,包括在我的网站顶部:

/**
 * @filename: currentgitbranch.php
 * @usage: Include this file after the '<body>' tag in your project
 * @author Kevin Ridgway 
 */
    $stringfromfile = file('.git/HEAD', FILE_USE_INCLUDE_PATH);

    $firstLine = $stringfromfile[0]; //get the string from the array

    $explodedstring = explode("/", $firstLine, 3); //seperate out by the "/" in the string

    $branchname = $explodedstring[2]; //get the one that is always the branch name

    echo "<div style='clear: both; width: 100%; font-size: 14px; font-family: Helvetica; color: #30121d; background: #bcbf77; padding: 20px; text-align: center;'>Current branch: <span style='color:#fff; font-weight: bold; text-transform: uppercase;'>" . $branchname . "</span></div>"; //show it on the page

答案 2

分支、上次提交日期和哈希

<?php 
    $gitBasePath = '.git'; // e.g in laravel: base_path().'/.git';

    $gitStr = file_get_contents($gitBasePath.'/HEAD');
    $gitBranchName = rtrim(preg_replace("/(.*?\/){2}/", '', $gitStr));                                                                                            
    $gitPathBranch = $gitBasePath.'/refs/heads/'.$gitBranchName;
    $gitHash = file_get_contents($gitPathBranch);
    $gitDate = date(DATE_ATOM, filemtime($gitPathBranch));

    echo "version date: ".$gitDate."<br>branch: ".$gitBranchName."<br> commit: ".$gitHash;                                                       
?>

输出示例:

版本日期: 2018-10-31T23:52:49+01:00

分支:开发

commit: 2a52054ef38ba4b76d2c14850fa81ceb25847bab

文件的修改日期是(可接受的)上次提交日期的近似值(特别是在测试/暂存环境中,我们假设我们将部署新的提交(没有旧的))。refs/heads/your_branch


推荐