关于受限分支的派生分支的 Gitolite 权限问题

Issue on Gitolite permissions on a derived branch from a restricted one

我有两个分支 devui,我正在尝试将 ui 合并到临时分支 dev-ui 上的开发中。我从 dev 创建了一个新分支,并将 ui 合并到其中。所以我的分支模式是:

dev ----- dev-ui
ui  --/

我正在使用 Gitolite,并且我已锁定 masterdev 分支以防止未经授权的写入。这是我的配置相关文件:

@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?还是其他原因?

Gitolite 使用 refex:

A refex is a word I made up to mean "a regex that matches a ref".

A refex is implicitly anchored at the start, but not at the end. In regular expression lingo, a ^ is assumed at the start (but no $ at the end is assumed).
So a refex of master will match all these refs:

refs/heads/master
refs/heads/master1
refs/heads/master2
refs/heads/master/full

在你的情况下,你的 gitolite 规则中需要 dev$