微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

挂钩以限制一次仅推入一个分支

如何解决挂钩以限制一次仅推入一个分支

我尝试创建一个钩子,如果您尝试多次推送分支,则该钩子将阻止推送到远程存储库。 这是钩子:
#!/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 举报,一经查实,本站将立刻删除。