Git:无需Push权限跨分支进行团队合作

5
我目前在一个Scrum团队工作,该团队正在使用与另一个Scrum团队共享的git仓库。为了方便起见,我们将我的Scrum团队称为Autobot,而另一个团队称为Decepticon。
Decepticon团队拥有完全的推送和拉取权限,并负责框架。
Autobot团队能够拉取,但无法推送。通常情况下,如果团队成员独立工作,则没有问题。然而,在某些情况下,向另一个团队成员的分支进行拉取和推送会很有用。截至目前,Decepticon尚未授予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个回答

3

2014年更新(3年后)

Adrien Be评论中提到的

Stash实现了分支级别的权限设置。

请参见“使用分支权限”。

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月)

通常的解决方案是创建第二个仓库,其中:

  • 团队 Autobot 可以推送
  • 团队 Decepticon 可以定期获取并查看是否有需要合并的内容

但这需要一个第二个仓库。

另一种解决方案是,在类似Gitolite的授权框架下,给 Autobot 分支推送访问权限
这只需要一个仓库,但需要一个能够验证用户推送到该仓库的服务器(ssh或apache),因为本地协议没有身份验证)。

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


被迫接受你的智慧,在寻找更好方法的半年之后 :)。 - Glen Nelson
@GlenNelson:你最终采用了哪种方法? - VonC
我们最终只是请求更多关于如何使用Git的权限,并且获得了胜利。因此,现在我们可以更轻松地创建和删除远程分支,从而避免了问题的出现 :)。 - Glen Nelson
想知道为什么GIT没有内置这个功能... 叹气 - Adriano
Stash 实现了分支级别的权限控制 https://confluence.atlassian.com/display/STASH/Using+branch+permissions - Adriano
@AdrienBe没错! 我已经在答案中包含了你的评论,以增加它的可见性。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接