ユーザーとして、私は通常hg st
、リポジトリのステータスをチェックし、ファイルが変更されていないクリーンな状態であることを確認するために使用します。
ここでは、これをプログラムで実行したいと思います。私もhg st
そのために使用できることは知っていますが、出力はコンピュータープログラムによる消費には理想的とは言えません。Mercurialリポジトリがクリーンな状態にあるかどうかを確認するためのより良い方法はありますか?
コマンドを発行すると、リポジトリでファイルが変更されたときにhg identify --id
IDの末尾に文字が付きます。+
(注:このフラグは、追跡されていないファイルを報告しません。)
キャラクターに対してこのコマンドの出力をgrepすると、+
終了ステータスを使用して、変更があるかどうかを判断できます。
$ 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
使用する必要がありますhg summary
:
$ hg init
$ echo blablabla > test.txt
$ hg summary
parent: -1:000000000000 tip (empty repository)
branch: default
commit: 1 unknown (clean)
update: (current)
ほとんどの主要なプログラミング言語には、アクセスできるHGAPIがあります。
この回答は、このトピックを検索している他の人に役立つ可能性があります。
上記の@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