我必须处理以下场景:假设我们有一个项目,我们为此目的使用 git。外部用户应该可以处理不受内部更改直接影响的部分代码(插件,...)。因此,由于 git 无法删除读取权限,您如何看待这个过程:
- 创建两个仓库repo_int、repo_ext。Repo_ext 只有一个名为“shared”的分支。
- 让外部开发者推送到那个分支
- 使用本地克隆拉取并推送到第二个内部开发者分支
这可以按如下方式完成:
创建裸仓库
$ mkdir ~/remotes/repo_int.git
$ cd ~/remotes/repo_int.git && git init --bare
$ mkdir ~/remotes/repo_ext.git
$ cd ~/remotes/repo_ext.git && git init --bare
创建新的语言环境存储库
$ cd /path/to/my/project && git init
创建共享分支并签出
$ git checkout -b shared
添加遥控器 repo_ext 和 repo_int
$ git remote add -t shared repo_ext ~/remotes/repo_ext.git
$ git remote add repo_int ~/remotes/repo_int.git
进行初步推动
$ git remote push repo_ext shared && git remote push repo_int *
将 HEAD 从 repo_ext 设置为分支共享
$ git symbolic-ref HEAD refs/heads/shared
获得对 repo_ext 的外部访问:
$ git clone ~/remotes/repo_ext.git
做一些改变并推送东西
$ git push origin shared
在内部存储库中执行分支检出并使用更改,例如合并或樱桃挑选
$ git clone ~/remotes/remote_int
$ git checkout -b shared repo_ext/shared
...
你会说什么,这是一种值得推荐的安全方式来处理这个问题吗?我听说过“gerrit”,这是一个代码审查工具,具有深远的用户权限管理。是否可以使用此工具处理问题?
非常感谢!