我通常会显示来自 GIT 的信息,例如当前分支名称,并且 repo 在提示符下处于“脏”状态。问题是一些较大的回购需要好几秒钟来计算“脏”状态。
有没有办法异步发出脏检查,而不是抑制 shell 的响应?PS我正在使用fish 2.0
外壳。
我通常会显示来自 GIT 的信息,例如当前分支名称,并且 repo 在提示符下处于“脏”状态。问题是一些较大的回购需要好几秒钟来计算“脏”状态。
有没有办法异步发出脏检查,而不是抑制 shell 的响应?PS我正在使用fish 2.0
外壳。
如果您使用git diff-index --quiet HEAD --
,它将在遇到的第一个差异处停止处理,而不是处理整个源代码树,这样可以帮助您缩短执行时间。
此外,您可以为当前的脏状态使用临时缓冲区,例如 /tmp 中的文件。然后,您的提示命令将获取该文件的内容并在提示中使用它,之后它将启动对 repo 的后台更新(例如git diff-index --quiet HEAD -- && echo clean >/tmp/myreponame.status || echo dirty >/tmp/myreponame.status &
)。
您应该注意的一件事是,每次提示都会启动后台更新,这意味着您最终可能会同时运行多个提示。为避免这种情况,您需要一个脚本来检查它是否已在运行并退出或终止旧实例。