Git:没有推送权限的跨分支机构的团队合作

时间:2011-07-11 06:31:54

标签: git synchronization branch

我目前正在为一个使用共享git存储库和另一个Scrum团队的Scrum团队工作。为方便起见,我们将调用我的Scrum团队 Autobot 和其他霸天虎

团队霸天虎拥有对存储库的完全推送和拉取权限,并且负责该框架。

团队 Autobot 能够拉动,但不能推动。通常,如果团队成员独立工作,则没有问题。但是,出现这样的情况,即拉动并推送给另一个团队成员分支是有用的。到目前为止,还没有通过霸天虎(简单修复)授予 Autobot 推送权限,因此需要解决此问题。

用例示例:考虑 Optimus (继续变换器隐喻)是否已完成以下操作:

#!/bin/bash
optimus@workstation0:~/git/work_project/> git branch sdev /sprint/dev --track
optimus@workstation0:~/git/work_project/> git checkout sdev
optimus@workstation0:~/git/work_project/> touch important_file.py
optimus@workstation0:~/git/work_project/> git add important_file.py
optimus@workstation0:~/git/work_project/> git commit -m "Important file added."

现在, Rodimus 通过编辑important_file.py来帮助 Optimus 。他创建了自己的分支并直接从 Optimus的分支中拉出来,并尝试推送:

#!/bin/bash
rodimus@workstation1:~/git/work_project/> git branch sdev /sprint/dev --track
rodimus@workstation1:~/git/work_project/> git pull ~optimus/git/work_project sdev
rodimus@workstation1:~/git/work_project/> echo "'''TODO: Add content''' > important_file.py
rodimus@workstation1:~/git/work_project/> git commit -m "Added TODO".
rodimus@workstation1:~/git/work_project/> git push ~optimus/git/work_project sdev

发生错误。什么是适当的程序?拥有第二个存储库是不可取的,但如果需要则可以。

1 个答案:

答案 0 :(得分:3)

2014年更新(3年后)

正如Adrien Be

中的the comments所述
  

Stash实现了分支级别权限

请参阅“Using Branch Permission

https://confluence.atlassian.com/download/attachments/313460915/STASH20_branch_perm_adv.png?version=4&modificationDate=1376470584184&api=v2&effects=border-simple,blur-border


原始答案(2011年7月)

通常的解决方案是第二个回购地点:

  • Team Autobot可以推送到
  • Team Decepticon可以正常获取并查看是否有任何要合并的内容

但这需要第二次回购。

另一种解决方案是使用Gitolite之类的授权框架来提供push access to an Autobot branch 它只需要一个repo,但是服务器(ssh或apache)能够对推送到repo的用户进行身份验证(因为local protocol没有身份验证)。

所以这两种解决方案都不是一个简单的解决方案。