git - PHP exec output 被用省略号截断,无法获得完整的返回值?
本文介绍了git - PHP exec output 被用省略号截断,无法获得完整的返回值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
获取git log的文件更改列表
执行命令
/usr/bin/git log --stat --pretty=format:%an*_*%cd*_*%H*_*%s
以下是输出
rrr*_*Wed Mar 29 15:03:44 2016 +0800*_*51c32954639dffbdba18050527ca56b0ec243453*_*bug#1395
mine-web-manage/src/main/webapp/WEB-INF/views/organ/courseForm.jsp | 6 +++++-
mine-web-server/src/main/java/com/mine/web/server/controller/organ/RestPublicOrganTeacherController.java | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 58 insertions(+), 1 deletion(-)
但是用php的exec执行时,返回值被切断了
php代码
$cmd = "/usr/bin/git log --stat --pretty=format:%an*_*%cd*_*%H*_*%s";
exec($cmd, $list, $return);
var_dump($list);
输出结果
string(90) "rrr*_*Wed Mar 29 15:03:44 2016 +0800*_*51c32954639dffbdba18050527ca56b0ec243453*_*bug#1395"
[18] =>
string(60) " .../main/webapp/WEB-INF/views/organ/courseForm.jsp | 6 ++-"
[19] =>
string(79) " .../organ/RestPublicOrganTeacherController.java | 53 ++++++++++++++++++++++"
[20] =>
string(49) " 2 files changed, 58 insertions(+), 1 deletion(-)"
还尝试以下几种方式,在命令后加上输出到文件等等,获取的结果都是被截断的,格式跟上面一样,无法获取到完整的文件路径
1, $cmd . " 2>&1"
2, $cmd . " > /tmp/cmd.txt"
3, passthru($cmd, $list, $return);
如果才能在exec中获取到完整的文件路径?
非常感谢您的帮助
解决方案
改成:
$cmd = "/usr/bin/git log --stat-width=100 --stat-name-width=80 --pretty=format:%an*_*%cd*_*%H*_*%s";
这个长度设置在我这边是没问题的,不过还得看你那边完整路径名长度而定,stat-width
表示正行长度,stat-name-width
表示文件名长度,光调整文件名长度是不够的。
show full file path in git log
这篇关于git - PHP exec output 被用省略号截断,无法获得完整的返回值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文