1

我通常会显示来自 GIT 的信息,例如当前分支名称,并且 repo 在提示符下处于“脏”状态。问题是一些较大的回购需要好几秒钟来计算“脏”状态。

有没有办法异步发出脏检查,而不是抑制 shell 的响应?PS我正在使用fish 2.0外壳。

4

1 回答 1

3

如果您使用git diff-index --quiet HEAD --,它将在遇到的第一个差异处停止处理,而不是处理整个源代码树,这样可以帮助您缩短执行时间。

此外,您可以为当前的脏状态使用临时缓冲区,例如 /tmp 中的文件。然后,您的提示命令将获取该文件的内容并在提示中使用它,之后它将启动对 repo 的后台更新(例如git diff-index --quiet HEAD -- && echo clean >/tmp/myreponame.status || echo dirty >/tmp/myreponame.status &)。

您应该注意的一件事是,每次提示都会启动后台更新,这意味着您最终可能会同时运行多个提示。为避免这种情况,您需要一个脚本来检查它是否已在运行并退出或终止旧实例。

于 2013-09-30T18:12:14.350 回答