挂钩以限制一次仅推入一个分支
我尝试创建一个钩子,如果您尝试多次推送分支,则该钩子将阻止推送到远程存储库。
这是钩子:
#!/bin/bash
HG_EXE=\"/opt/csw/bin/hg\"
CHANGESETS=`${HG_EXE} log -r $1:tip --template \'{node} \'`
i=0
for changeset in ${CHANGESETS}
do
BRANCH=`${HG_EXE} log -r ${changeset} --template \'{branches}\'`
if [ \"${BRANCH}\" == \"\" ]
then
BRANCH=\"default\"
fi
BRANCHES[$i]=${BRANCH}
i=$i+1
done
items=${#BRANCHES[*]}
if [ $items -gt 1 ]
then
i=0
while [ \"${BRANCHES[${i}+1]}\" != \"\" ]
do
if [ \"${BRANCHES[${i}]}\" != \"${BRANCHES[${i}+1]}\" ]
then
echo \"ERROR: You are trying to push more than one branch, use \\\"hg push -b [branch_name]\\\"\"
exit 1
fi
i=$i+1
done
fi
问题:
如果我已承诺在两个分支机构:
changeset: 58:8d2bebe08dd9
user: keshurj <Jay.Keshur@monitisegroup.com>
date: Thu May 26 16:36:49 2011 +0100
summary: commit on default
changeset: 59:43be74e39a44
branch: branch1
tag: tip
user: keshurj <Jay.Keshur@monitisegroup.com>
date: Thu May 26 16:40:25 2011 +0100
summary: commit on branch1
并尝试使用hg push –b branch1进行推送,该钩子仍将$ {HG_NODE}视为8d2bebe08dd9,这是默认设置。
是否有任何方法可以确保通过远程挂钩一次只推送到一个分支?
公开接受所有建议(re:此工作流程:))
没有找到相关结果
已邀请:
3 个回复
纤洞需匪
之类的别名: http://hgtip.com/tips/advanced/2009-09-28-nudge-a-gentler-push/ 这只是:
这样可以确保您仅推送当前的父修订版及其祖先。鉴于您上面脚本中的假设,这些代码可能全都在同一个分支中(或要求将其推送)。您需要养成新习惯,但这很直接。
街茬
的-4ѭ-将其替换为
http://www.selenic.com/mercurial/hgrc.5.html#hooks 假设您将其作为pretxnchangegroup挂钩运行。 (使用hg 1.8.1进行了测试,但是我可以肯定地说,最近没有改变)。
才脊烽馈低