vref 拒绝推送新的分支

Posted

技术标签:

【中文标题】vref 拒绝推送新的分支【英文标题】:vref rejects new branches to be pushed 【发布时间】:2017-12-06 13:14:04 【问题描述】:

我想配置一个存储库以供每个开发人员访问,但一个特定文件只能由某些用户修改。

RWCD                             = @developer
RW+ refs/tags                    = @developer
RW+ VREF/NAME/version.properties = @versionPropertyModifier
-   VREF/NAME/version.properties = @all

这一切正常,但有一个问题: 当任何不是@versionPropertyModifier 组成员的开发人员想要推送新分支时,推送会被拒绝并带有指向version.properties vref 的链接。

我的规则集有什么问题?

【问题讨论】:

【参考方案1】:

example for Vref/NAME 并不完全相同:

repo foo
        RW+                             =   @senior_devs
        RW                              =   @junior_devs

        -   VREF/NAME/Makefile          =   @junior_devs

当高级开发人员推送时,根本不会调用 VREF。但是当初级开发者推送时,会调用 VREF,并返回一个更改为虚拟 refs 的文件列表,如下所示:

VREF/NAME/file-1
VREF/NAME/dir-2/file-3
...etc...

这些 ref 中的每一个都与访问规则相匹配。如果其中之一恰好是 Makefile,则返回的 ref (VREF/NAME/Makefile) 将匹配拒绝规则并终止推送。

所以在你的情况下:

RWCD                              = @developer
RW+  refs/tags                    = @developer
-    VREF/NAME/version.properties = @versionPropertyModifier

【讨论】:

感谢您的回答,但配置正好相反。现在“@versionPropertyModifier”组中的用户无法修改文件 version.properties。但应该是:应该只允许“@versionPropertyModifier”组中的用户修改 version.properties 文件,@all 应该能够创建分支并推送它们。 @MeMeMax 正如我在此处 (***.com/a/29840269/6309) 或那里 (gitolite.com/gitolite/cookbook/#access) 所提到的,您是否尝试使用 gitolite acces 来调试您的规则? 尝试调试但没有找到解决方案。我认为 VREF/NAME_NC 是我正在寻找的,但我还不确定。我需要先升级我们的 gitolite 版本进行测试。 @MeMeMax 升级 gitolite 听起来是个好主意。我假设您使用的是可用的最新版本。

以上是关于vref 拒绝推送新的分支的主要内容,如果未能解决你的问题,请参考以下文章

功能分支变基后 Git 推送被拒绝

如何查看新的 git 分支将推送哪些 git 提交?

拒绝来电推送后无法处理取消VOIP推送

本地 GIT 分支和远程 GITHUB 分支是不是需要相同才能推送代码? [复制]

在推送之前丢弃 Mercurial 中的本地分支

git 创建分支并推送到远程