如何解决挂钩以限制一次仅推入一个分支
我尝试创建一个钩子,如果您尝试多次推送分支,则该钩子将阻止推送到远程存储库。 这是钩子:#!/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:此工作流程:))
解决方法
您是否考虑过仅使用
hg nudge
之类的别名:
http://hgtip.com/tips/advanced/2009-09-28-nudge-a-gentler-push/
这只是:
[alias]
nudge = push --rev .
这样可以确保您仅推送当前的父修订版及其祖先。鉴于您上面脚本中的假设,这些代码可能全都在同一个分支中(或要求将其推送)。您需要养成新习惯,但这很直接。
, 运行脚本时未定义分配给$CHANGESETS
的-4ѭ-将其替换为$HG_NODE
http://www.selenic.com/mercurial/hgrc.5.html#hooks
假设您将其作为pretxnchangegroup挂钩运行。 (使用hg 1.8.1进行了测试,但是我可以肯定地说,最近没有改变)。
, 原来我在做些愚蠢的事情。变更集58是变更集59的父级。
谢谢你们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。