9

作为用户,我通常hg st用来检查 repo 的状态,并验证它是否处于干净状态,没有修改过的文件。

在这里,我想以编程方式执行此操作。我知道我也可以使用hg st它,但是输出对于计算机程序的消耗来说并不理想。有没有更好的方法来检查 mercurial repo 是否处于干净状态?

4

4 回答 4

7

If you issue the hg identify --id command, it will suffix the ID with a + character when the repository has modified files. (Note: this flag does not report untracked files.)

If you grep the output of this command for the + character, you can use the exit status to determine whether there are modifications or no:

$ hg init
$ hg identify --id | grep --quiet + ; echo $?
1
$ touch a
$ hg identify --id | grep --quiet + ; echo $?
1
$ hg add a
$ hg identify --id | grep --quiet + ; echo $?
0
于 2012-06-13T10:04:14.577 回答
2

你应该使用hg summary

$ hg init
$ echo blablabla > test.txt
$ hg summary
parent: -1:000000000000 tip (empty repository)
branch: default
commit: 1 unknown (clean)
update: (current)
于 2012-06-17T19:04:02.863 回答
0

大多数主要的编程语言都有您可以访问的 HG API。

于 2012-06-17T22:11:20.640 回答
0

此答案可能对搜索此主题的其他人有用:

我同意上面的@Steve\ Kayes 评论,这hg status是一个很好的程序化消费命令。

这是一个如何在 bash 脚本中使用它的示例:

#!/bin/bash

set -e

cd /path/to/hg-repo

repo_status=`hg status | wc -l`
if [ $repo_status -ne 0 ]; then
    echo "Repo is not clean"
else
    echo "Repo is clean"
fi
于 2019-02-07T10:55:11.737 回答