我正在使用:
<?php
ob_start();
$vtag = shell_exec('git describe --tags');
if( is_null($vtag) ) { $vtag =""; }
ob_end_clean();
?>
要获取我的GIT控制项目的版本,我正在使用未注释的标签,当我从Windows 8.1中的GIT CMD运行它时,我可以获得显示正确信息的命令。
PHP手册(user contributed section)建议使用Ob_start
/ end_clean()
来确保从std控制台获取输出。但它不产生任何输出(或错误输出)。知道问题在这里吗?
答案 0 :(得分:0)
我建议使用一些现有的库来执行此任务 - 没有必要再次重新发明轮子。例如cpliakas/git-wrapper
:
$gitWrapper = new GitWrapper();
echo $gitWrapper->git('describe --tags', '/path/to/repository');
$repository = $gitWrapper->workingCopy('/path/to/repository');
echo $repository->tag();
答案 1 :(得分:-1)
找到this article帮助我解决问题:
只是为了帮助其他人解决同样的问题;这是我用过的:
$vtag = (string) shell_exec('C:\\PROGRA~1\\Git\\bin\\git describe --tags');
问题是exec()需要bin目录中可执行文件的路径,更重要的是因为WAMP环境中的用户是Apache(www)目录,其路径中没有GIT。还记得(我最初忘了)在Windows上逃避反斜杠。
希望这有助于其他所有人。 干杯!