私人Github存储库上的合作者是否应该分叉存储库?


15

目前,我正在一个项目上,我们将源代码保存在Github上的私有存储库中,我们每个人都作为合作者。

我们尚不清楚如何将我们的每项工作分开。

我认为我们需要做的是:

  1. 我们每个人都需要分叉存储库
  2. 当我们准备推送代码时,我们会向项目负责人的仓库提交拉取请求,而后者可以同时以此为契机进行代码审查

对于私有存储库,这是应该用于分叉的,还是我使情况变得过于复杂?


1
是。就像您在此处建议的那样进行操作,只创建一个团队并将该团队的存储库称为“主”存储库。每个人都进行PR,包括项目负责人。
RubberDuck

Answers:


7

将仓库克隆到开发人员的本地计算机已经是一种分叉。如果每个开发人员在GitHub上分叉该存储库,则仅用于发布其当前的工作状态。

当存在中央主存储库且许多贡献者不直接访问该存储库时,这可能是合适的。这对于开源项目非常有用,每个人都可以贡献并发出拉取请求,然后由一组核心维护者对其进行审核和合并。使用多个存储库可强制执行基于拉取请求的工作流。

在一个受信任的小型团队中,这不是必需的。为了防止不同的人互相干扰,可以遵循诸如Git Flow之类的策略:每个小的功能都在单独的功能分支上实现。功能完成后,它将合并到master分支中。大多数团队会将其与拉动请求或按惯例进行代码审查相结合,但是如果有适当的话,他们会被信任以跳过该请求。尽管使用单独的存储库会导致开发人员将其当前状态发布到其分叉但团队可见的存储库中,但在单个通用存储库中,他们会将更改推送到一个单独的功能分支中。在大多数工作流程中,强烈建议不要在主/主干上进行所有开发。

最终的区别仅在于访问管理,而与实现的工作流无关。您可以使用任一设置来执行基于拉式请求的工作流。从原始的Git角度来看,分支和分支之间没有太大区别-两种方法本质上都共享项目的历史,并且允许添加提交而不会影响其他分支/分支。考虑到这一点,最好在一个受信任的封闭组中共享一个仓库。


1
只是为了快速回应@amon所说的话,我在一个组织中工作,每个开发人员都需要从主仓库中分叉,我们所有人都认为这只是不必要且笨拙的额外步骤。我从来不明白为什么需要它,但是我们的运营团队不会讨论它。过程是:提交->推送->拉取请求->等待->等待更多->尝试引起运维团队对IRC的关注->走到运维人员并要求他们查看拉取请求->等待->代码集成->重复。
DaveyDaveDave 2015年

1
我真的不鼓励这种工作流程。我遇到了非常糟糕的合并冲突,两个开发人员都直接将其推送到规范的仓库中。更不用说,还是最好让别人查看您的代码。如果每个人都有一个分叉,则提交拉取请求要容易得多,而且有一个规范的项目存储库。是啊。我知道,那不是“分布式的”。随你。根据我的经验,fork&PR模式效果更好。
RubberDuck

@RubberDuck很好,我怀疑我的情况很罕见,因为负责请求请求的人员无法查看该代码,这毫无意义。我建议使用其他专用的代码审查工具,例如gerrit可能会更有效,但我确实同意您的观点,即分叉可以(应该)同样有效。
DaveyDaveDave 2015年

问题是谁来确定何时可以将功能引入主版本?我还发现使用分支机构很麻烦。一个回购中有100多个分支,而大多数分支是未合并的或未完成的,为什么即使它们还没有准备好被合并,它们也应该完全存在吗?访问管理是工作流程的100%,这个答案只有一半。
Rudolf Olah

5

这会行得通,或者您可以使用分支方法,其中每个贡献者都有自己的分支,当团队同意时,可以与master合并。


谢谢,将与其他答案一起回答,因为它有更多详细信息,但是是的,我同意:)
JMK 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.