Speed-up git info tasks
Publish PHP Package / docker (push) Successful in 8s Details

This commit is contained in:
Alexey Chubar 2024-07-04 13:52:07 +03:00
parent 9bfc1fea7e
commit 9500897b1e
1 changed files with 36 additions and 19 deletions

View File

@ -604,49 +604,66 @@ function rrmdir(string $dir, bool $remove_top_dir = true)
}
}
function git_get_info() : array
define("GIT_INFO_REV_HASH" , 1 << 0);
define("GIT_INFO_BRANCH" , 1 << 1);
define("GIT_INFO_REV_NUMBER", 1 << 2);
define("GIT_INFO_ALL" , ~0);
function git_get_info($info = GIT_INFO_ALL) : array
{
global $GAME_ROOT;
$rev_hash = "";
$branch = "";
$revision_number = 0;
if(!is_dir("$GAME_ROOT/.git"))
throw new Exception("Not a Git repository");
$out = array();
exec("git rev-parse HEAD", $out);
$rev_hash = trim($out[0]);
if(!$rev_hash)
throw new Exception("Error getting git revision hash");
if($info & GIT_INFO_REV_HASH)
{
$out = array();
exec("git rev-parse HEAD", $out);
$rev_hash = trim($out[0]);
if(!$rev_hash)
throw new Exception("Error getting git revision hash");
}
$out = array();
exec("git rev-parse --abbrev-ref HEAD", $out);
$branch = trim($out[0]);
if(!$branch)
throw new Exception("Error getting git branch");
if($info & GIT_INFO_BRANCH)
{
$out = array();
exec("git rev-parse --abbrev-ref HEAD", $out);
$branch = trim($out[0]);
if(!$branch)
throw new Exception("Error getting git branch");
}
$out = array();
exec("git rev-list HEAD --count", $out);
$revision_number = (int)$out[0];
if(!$revision_number)
throw new Exception("Error getting git revision number");
if($info & GIT_INFO_REV_NUMBER)
{
$out = array();
exec("git rev-list HEAD --count", $out);
$revision_number = (int)$out[0];
if(!$revision_number)
throw new Exception("Error getting git revision number");
}
return array($rev_hash, $branch, $revision_number);
}
function git_get_rev_hash() : string
{
list($rev_hash, $_, $__) = git_get_info();
list($rev_hash, $_, $__) = git_get_info(GIT_INFO_REV_HASH);
return $rev_hash;
}
function git_get_branch() : string
{
list($_, $branch, $__) = git_get_info();
list($_, $branch, $__) = git_get_info(GIT_INFO_BRANCH);
return $branch;
}
function git_get_rev_number() : string
{
list($_, $__, $rev_number) = git_get_info();
list($_, $__, $rev_number) = git_get_info(GIT_INFO_REV_NUMBER);
return $rev_number;
}