我正在尝试编写一些脚本,用于在mercurial中执行一些简单的内务处理任务,我经常需要做的一件事就是检查工作集是否为“空”(取决于上下文,这可能意味着未跟踪的文件或修改过的跟踪文件。)
dplyr::case_when()
命令以退出状态0退出,除非出现内部错误,在这种情况下退出时退出状态为255。
如果我的一些脚本,我正在做一些愚蠢的事情,比如捕获hg status
命令的输出并检查它是否为空。
在其他情况下,我正在检查hg status
的退出状态,以检查是否存在脏跟踪文件。
这两个看起来都有点脆弱。是否有用于“查询”存储库的专用子命令,以查看工作集中是否存在“未跟踪文件”或“脏跟踪文件”或“已删除文件”或其他各种有趣内容?
答案 0 :(得分:1)
hg status
是 命令,用于检查工作目录相对于签出修订的修改 - 因此您做的是正确的。
您可以完全使用hg status
。如果跟踪的文件没有更改,则使用--mard
(或--modified --added --removed --deleted
)标志将为空。使用-u
或--unknown
将显示既未被忽略也未被跟踪的文件 - 空输出应始终指示对已跟踪文件或任何未被忽略的文件没有更改(但可能存在与之匹配的新文件)忽略模式)。
这些命令的输出格式(至少在英文原文中,因此LC_ALL=C hg status
)被mercurial视为API,因此您应该能够依赖它。
根据您的实际使用情况,您可能需要查看mercurial command server - 但对于偶尔运行的脚本,它可能会超出顶部。
答案 1 :(得分:-1)
test -z "$(hg status -mard --template x)" && echo clean || echo dirty
似乎可以工作