git - PHP exec output 被用省略号截断,无法获得完整的返回值?

查看:80
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆