我有两个分支dev
和ui
,我试图将ui合并到临时分支dev-ui
上的dev中。我已经从dev创建了一个新分支,并将ui合并到其中。所以我的分支架构是:
dev ----- dev-ui
ui --/
我使用的是Gitolite,我已经锁定了master
和dev
个未经授权的分支。这是我的配置相关文件:
@myRepoDevs = dev1 dev2
repo myRepo
RW+ = admin
R dev master = @myRepoDevs
- dev master = @myRepoDevs
RW = @myRepoDevs
当两个开发人员中的一个试图将dev-ui
推送到origin
时,他会从git控制台收到此错误:
remote: FATAL: W refs/heads/dev-ui myRepo dev1 DENIED by refs/heads/dev
remote: error: hook declined to update refs/heads/dev-ui
To myServer:myRepo
! [remote rejected] dev-ui -> dev-ui (hook declined)
error: failed to push some refs to 'myServer:myRepo'
为什么他不能推动dev-ui
?
是因为它直接来自dev
,还是因为它的名字上有前缀dev
?还是另一个原因?
答案 0 :(得分:1)
Gitolite使用refex:
refex是一个词,我的意思是“匹配ref的正则表达式”。
refex隐含在开始时,但不是在结尾。在正则表达式术语中,假设在开始时
^
(但假设在结尾处没有$
)。
因此master
的反馈将匹配所有这些参考:
refs/heads/master
refs/heads/master1
refs/heads/master2
refs/heads/master/full
在你的情况下,你的gitolite规则需要dev$
。