解析 git 命令的更有效方法?

Posted

技术标签:

【中文标题】解析 git 命令的更有效方法?【英文标题】:More efficient way to parse git commands? 【发布时间】:2020-11-26 00:10:56 【问题描述】:

简而言之:希望提示出现得更快,尽管它并不迟钝。

为我的 bash 终端制作自定义提示;以下列表在我的 /etc/bash.bashrc 中

我已经使用了“gitstatus”存储库,它可以加速某些 git 命令。我认为减速来自命令本身的数量。我想知道我是否通常可以使用 LESS git 命令来做同样的事情。

这是我所做的一切的清单:

    获取分支(如果头分离,则跳过需要它的命令) 检查上游 git rev-list --left-right --count "$branch"..."$upstream" 检查是领先还是落后 检查隐藏

编辑:忽略 #5。我先调用了#8命令,得到了这个信息,在#8命令之前把#5追加到PS1

    检查脏分支(单独完成;我知道#8 提供了这个信息,但是这个命令之前被调用过,我喜欢那里的符号)

    检查远程

    检查未跟踪的文件(与下面的项目符号分开,因为它们位于提示的早期,因为我将它们视为更高优先级的“问题”)

    通过解析git status -s一次性检查修改、添加、删除或取消合并的文件

这些是每行使用一个 git 命令运行的。如果需要,也会提供图片。

Windows 终端的 Bash。

【问题讨论】:

不清楚您要做什么。您是直接在命令行上键入这些命令还是运行脚本?你能提供那个脚本的代码吗?除非你的进程通过为每个命令打开单独的终端或类似的东西而导致问题,否则很难比 git 本身加速任何事情。 抱歉,添加了一个规范,并找到了我自己问题的答案(现在将添加) 【参考方案1】:

我自己非常具体的问题的答案:

就我而言,我试图在函数foo 中解析git status -s,并调用函数bar 来检测是否存在未跟踪的文件。问题是,bar 的输出在foo 之前附加到 PS1。看起来不错,但我试图尽量减少每次在我的 bashrc 中调用的 git 命令的数量。因此,与其在foo 中解析git status -s,然后分别查找bar 中是否存在未跟踪的文件,我可以调用foo,创建一个untracked_files_exist 变量,并在@987654331 给出的情况下使其为真@。然后我可以调用 bar ,使用我想要的untracked_files_exist,并在调用两者之后以任意顺序将函数的输出分别附加到PS1

如果这没有意义: 如果您想要快速提示,请调用可解析的 git 函数,该函数会显示尽可能多的信息。如果您希望提示以与 git 命令输出不同的顺序包含此类信息,请不要附加到解析函数的 PS1 INSIDE 中。之后执行此操作,以便您可以控制提示的顺序。

【讨论】:

以上是关于解析 git 命令的更有效方法?的主要内容,如果未能解决你的问题,请参考以下文章

解析 XML 的更简单方法

Git之深入解析如何借助Git的配置方法和钩子机制来自定义Git需求

Git 常用操作命令(解析 + 案例)

git 常见命令解析

git的核心命令使用和底层原理解析

git 常用命令及解析 由浅入深