1

在之前的工作中,我发现通过让每个开发人员在他/她自己的分支上工作,更容易管理和保持稳定的预发布分支(或主分支,取决于设置)。我们只有一个生产实例,因此无需支持同一应用程序的多个版本。

这个“预发布”分支之所以这样命名,是因为我们可以从另一个分支(主分支)进行登台和生产发布。分支的设置使得只有来自预发布分支的代码可以合并到发布分支中。这些合并是我们的代码审查检查点。CI 构建也是从这个预发布分支构建的,每个开发人员都可以在完成该工作主体的开发时从“预发布”合并到他们自己的分支以缓解复杂的合并问题。

如果开发人员需要将一个给定的功能配对并一起工作,那么除了他们自己的分支权限之外,没有什么可以阻止他们与其他人一起工作。这对于管理分布式团队非常有效,其中每个团队中的个人都在处理单独/多个功能。

在频繁(每周 1-2 次)30 分钟状态更新会议的帮助下,作为一个团队,我们将决定哪些内容将进入 QA,哪些内容不用于特定的 QA 版本。

该系统有效,但在搜索此主题时,我发现开发人员分支有很多不满。似乎对 git 的本地存储库功能有很多热情。然而,似乎它们只是解决相同问题的不同方式。不考虑本地存储库解决的跨网络问题,例如签入延迟等。

4

3 回答 3

3

主要有以下三个区别:

  1. 本地存储库意味着:它在您的系统中是本地的,如果您发现自己被困在一个没有互联网连接的荒岛上,您仍然可以提交您的更改。Git 的一大优点是您不必连接到存储库即可利用版本控制系统。开发人员有时会在无法访问主存储库的情况下进行远程工作,当您拥有像SubversionPerforce或其他类型的集中式存储库版本控制系统这样的系统时,这通常会很混乱。使用GitBitKeeper,您可以轻松地离线工作。

  2. 开发人员分支的情况下,您通常会从集成分支分支到您的开发人员分支并合并回集成分支。在 Git 中,您无需合并,而是发送补丁,您不仅可以将更改发送到主存储库,还可以发送给其他开发人员,而无需先将补丁发送到主存储库这允许开发人员在不接触主存储库的情况下一起工作。

  3. 开发人员/集成分支设置中,开发人员分支位于存储库中,这意味着其他人可以看到它。在 Git 中,开发人员的更改在开发人员交付更改之前是不可用的。

于 2011-04-29T04:23:43.890 回答
2

像 Git 或 Mercurial 这样的 DVCS 引入了与分支正交的发布工作流程(推/拉) 。

这意味着:

  • 即使所有开发人员都在同一个分支上工作,他们也可以在自己的仓库中“私下”这样做:只要他们不发布他们的工作(即推送到上游仓库),那个公共分支实际上就是他们自己的。他们可以定期拉取(获取+合并),以免与其他人在同一主题上的工作有太多分歧,但他们会在准备好时推送。

  • 开发人员甚至可能永远不会推送他/她的工作,但是集成商可以从上游“集成”存储库中获取集成商需要的尽可能多的开发人员存储库中的分支(具有相同名称):每个分支都将存储在集成仓库在其自己的命名空间 ( dev1/branch, dev2/branch, dev3/branch, ...)
    中,集成商可以从那里查看每个开发人员的分支正在引入的提交,并决定是否合并集成仓库中的这些更改。
    注意:这在 Mercurial 中略有不同,因为命名分支在全局命名空间中具有名称(请参阅Jakub Narębski对“ Git and Mercurial - Compare and Contrast ”的回答,查看“个人意见:我个人认为”部分)

因此,一个 git“本地 repo”会转换开发人员分支中的任何分支(这不会阻止开发人员在来自公共 repo 的分支之上创建他/她自己的私有分支)。
这些分支可用于主动发布(由开发人员推送)或被动发布(从上游仓库拉取或获取,无需所述开发人员的直接干预)


David W回答(赞成)更清楚的是:

  • 从新分支中的分支工作(可以链接到开发人员,即使我更喜欢链接到任务或一组任务的分支,以便隔离开发工作:请参阅“何时应该分支”)
  • 从您自己的 repo 中的 repo 克隆的分支工作:您可以在同一个分支上工作,除非它是来自上游 repo 的所述分支的克隆(副本)。
    如果集成商无法访问开发人员存储库,那么可以,正如 David 所说,“在 Git 中,开发人员的更改在开发人员交付更改之前是不可用的。”。
    如果开发者的 repo 是可访问的(即使是通过一个简单的“本地协议”比如网络共享),那么开发者的更改可以从下游 repo 拉到一个集成上游 repo)

另请参阅“描述使用版本控制(VCS 或 DVCS)的工作流程”,了解另一种对比使用分支的集中式 VCS 方式与使用存储库的分散式 VCS 方式的方法。

于 2011-04-29T04:15:00.660 回答
0

如果它对你有用,那就太好了。我认为您会发现它与 DVCS 一起使用会更好,因为它们可以支持您现在所做的一切,甚至更多。

与开发人员分支相比,本地存储库的一个优势是您可以在本地拥有任意数量的分支。你可以启动一个快速分支来测试你感兴趣的东西。你可以启动一个分支来测试迁移到你喜欢的那个库的最新版本。所有这些都不需要用可能永远不会出现的东西“污染”集中式服务器。

于 2011-04-29T04:24:48.467 回答