【发布时间】:2013-11-02 12:36:13
【问题描述】:
我想不通。为什么这些行为不同:
(shell-command "git log")
(shell-command "git shortlog")
第一个按预期工作:返回 0 并将内容打印到 shell 输出缓冲区。 第二个返回 0 但什么也不打印。这是为什么呢?
还有
-
git log和git shortlog在ansi-term中完美运行 -
git log和git shortlog都会发出警告,但在shell中仍然有效
【问题讨论】:
-
我认为答案应该是 Git 试图成为自己的文本编辑器,而不是仅仅依靠其他程序来处理日志输出,而是在控制台中随机垃圾“提升”用户体验。幸运的是,到目前为止有一个治愈方法:使用
--no-pager来避免这种废话。 -
已经试过了 - 不起作用。这很特别。
-
哦,是的,你是对的,它只适用于
shell,但不适用于shell-command。很奇怪。 -
奇怪的是,这:(shell-command "git --no-pager log --pretty=short") 对我有用,而 shortlog 必须只是写同一件事的简写版本。 . 但它并没有做它应该做的事情,不管怎样,摘要和提交哈希都在那里。
-
我找到了阅读
git help shortlog的原因。显然它想从标准输入中读取一些东西......无论如何,解决方法是(shell-command "git shortlog HEAD")。