git - PHP exec output 被用省略号截断,无法获得完整的返回值?
黄舟
黄舟 2017-04-11 10:31:49
0
2
298

获取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中获取到完整的文件路径?

非常感谢您的帮助

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

reply all(2)
大家讲道理

改成:

$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

小葫芦

确实是长度的问题,不知道为什么在命令行下不设置宽度也能全部显示

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!