xargs git:跳过用户输入

xargs git:跳过用户输入

我有一个xargs递归调用 git 命令的函数。

当我现在调用时,gitr log我必须按 Enter 直到结束或按 q 才能xargs运行下一个调用。

我可以告诉xargs跳过用户输入或less立即输出所有内容吗?

答案1

如果您希望它在不运行的情况下转储所有内容,您可以git使用该选项进行调用。以下是来自--no-pagerless手册页:

--无寻呼机

不要将 git 输出通过管道传输到分页器中。

答案2

尝试重定向标准输入或标准输出或两者。

例如:

gitr log < /dev/null | cat

答案3

提示您的不是 xargs,而是 less。 less 不是由 xargs 调用的,而是由 git 调用的。

git 的每次调用一次对一个存储库进行操作,因此如果您想对多个存储库进行操作,则需要告诉 git 不要调用寻呼机。不过,您可能想手动调用寻呼机。

下面是一些未经测试的概念验证代码,这些代码会导致 git 不调用分页器,而是在交互调用时在所有 git 调用的输出上调用分页器。您的代码进入run_git辅助功能。

gitr () {
  if [ -t 1 ]; then
    run_git \
      -ccolor.branch=always "$@" -ccolor.grep=always -ccolor.showbranch=always -ccolor.status=always \
      | ${GIT_PAGER:-less -r}
  else
    run_git "$@"
  fi
}

相关内容