这是我第一次尝试设置git服务器,并尝试通过gitolite进行管理。文档非常详细,真正帮助我为主分支设置了第一条规则。 下面是我的conf文件的一部分,它描述了我的主分支上的访问。
repo @my_repos
RW+ master = @maintainer
R master = @engineers
- master = @engineers
RW+ = @engineers
我现在要做的是让用户按需创建自己的分支,以推动他们的变化。我希望这些分支遵循某些访问规则(例如,创建者可以RW +和其余的R)。我最初的想法是遵循个人分支的概念。
在个人分支页面(http://gitolite.com/gitolite/special.html#pers)中,作者声明“个人分支存在于他们自己的名称空间中”。这让我认为我应该启用命名空间支持,如下所述:http://gitolite.com/gitolite/namespaces。但是,整个命名空间文档指的是在命名空间下创建存储库,而不是分支。
所以我的问题是我应该启用名称空间,还是“以某种方式”创建个人分支,而这些分支是我尚未学习或在文档中某处遗漏的?
答案 0 :(得分:1)
如果您只是希望用户能够推送到包含其姓名的分支机构,那么personal branches功能(即在refex中包含/USER/
)就足够了:
repo @my_repos
RW+ master = @maintainer # only maintainer can write to master
RW+ personal/USER/ = @engineers # engineers can write to their own branches like personal/name/mybranch
R = @engineers # all engineers can read all refs (branches/tags/etc.), including others' "personal" branches
注意:您可以将personal
更改为适合您的想法的任何(非空)前缀,但您必须逐字/USER/
包括(正好是那六个字符)。
例如,名为alice
的工程师用户可以推送/强制推送/删除personal/alice/
下的所有分支(例如personal/alice/ticket-1234
,personal/alice/wip/frob-support
等),以及所有其他工程师都可以阅读这些内容。
文档提到了“命名空间”,因为(例如)personal/alice/
前缀形成了一个空间,其中alice
可以操作分支名称。 / p>
namespace support是关于将一个存储库(带有来自refs/namespaces/
refs的一些额外数据)作为一组相关存储库提供服务。例如,此类支持将允许您有效地存储和提供主git@host:frobozz
存储库以及一组相关的git@host:alice/frobozz
,git@host:bob/frobozz
和git@host:carol/frobozz
存储库。
正如gitolite文档中所述,您必须使用特殊版本的 gitolite 才能获得此功能:它仅在主 gitolite 的特殊分支下可用存储库(这个分支在编写时也有点过时,因此它缺少master中存在的其他功能和修复 - 合并可能有助于解决这个问题,但仍然是:目前还不是最新的。)< / p>