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; global $GAME_ROOT;
$rev_hash = "";
$branch = "";
$revision_number = 0;
if(!is_dir("$GAME_ROOT/.git")) if(!is_dir("$GAME_ROOT/.git"))
throw new Exception("Not a Git repository"); throw new Exception("Not a Git repository");
if($info & GIT_INFO_REV_HASH)
{
$out = array(); $out = array();
exec("git rev-parse HEAD", $out); exec("git rev-parse HEAD", $out);
$rev_hash = trim($out[0]); $rev_hash = trim($out[0]);
if(!$rev_hash) if(!$rev_hash)
throw new Exception("Error getting git revision hash"); throw new Exception("Error getting git revision hash");
}
if($info & GIT_INFO_BRANCH)
{
$out = array(); $out = array();
exec("git rev-parse --abbrev-ref HEAD", $out); exec("git rev-parse --abbrev-ref HEAD", $out);
$branch = trim($out[0]); $branch = trim($out[0]);
if(!$branch) if(!$branch)
throw new Exception("Error getting git branch"); throw new Exception("Error getting git branch");
}
if($info & GIT_INFO_REV_NUMBER)
{
$out = array(); $out = array();
exec("git rev-list HEAD --count", $out); exec("git rev-list HEAD --count", $out);
$revision_number = (int)$out[0]; $revision_number = (int)$out[0];
if(!$revision_number) if(!$revision_number)
throw new Exception("Error getting git revision number"); throw new Exception("Error getting git revision number");
}
return array($rev_hash, $branch, $revision_number); return array($rev_hash, $branch, $revision_number);
} }
function git_get_rev_hash() : string 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; return $rev_hash;
} }
function git_get_branch() : string function git_get_branch() : string
{ {
list($_, $branch, $__) = git_get_info(); list($_, $branch, $__) = git_get_info(GIT_INFO_BRANCH);
return $branch; return $branch;
} }
function git_get_rev_number() : string 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; return $rev_number;
} }