Mercurialのフォローアップとして: "hg commit" の前に "hg pull -u" を強制 する フックの使用を開始しました
[hooks]
pretxnchangegroup.forbid_2heads = /usr/local/bin/forbid_2head.sh
forbid_2head.sh は次のようになります
#!/bin/bash
BRANCH=`hg branch`
COUNT=`hg heads --template '{branch}|{rev}\n' | grep ^${BRANCH} | wc -l`
if [ "$COUNT" -ne "1" ] ; then
echo "=========================================================="
echo "Trying to push more than one head, which is not allowed"
echo "You seem to try to add changes to an old changeset!"
echo "=========================================================="
exit 1
fi
exit 0
これは、複数の名前付きブランチを許可するhttp://tutorials.davidherron.com/2008/10/forbidding-multiple-heads-in-shared.htmlにあるスクリプトの派生物です。
私が今抱えている問題は、
- それは私が望んでいたhg push -fを停止します
- また、着信チェンジセットがあり、発信コミットがある場合に備えて、hg pull を停止します。これはさすがにまずい
同じスクリプトを何らかの方法で再利用して、フックの設定を変更し、"hg push -f" を停止することはできますか? または、forbid_2head.sh で、これが実行中のプッシュ コマンドかプル コマンドかを知ることができますか?