寻求关于 SVN 小型项目开发的 CM 方法的建议

发布于 2024-08-15 08:21:02 字数 479 浏览 2 评论 0原文

我们是一家小型初创公司,从零开始。我们使用 Subversion,存储库位于基于 Web 的服务上。

我熟悉 CVS 并阅读了一些 SVN 的介绍,这没什么大不了的。我对 CM 方法论感兴趣,它将使我们能够在 CM 本身上花费最少的精力,但使我们能够顺利工作而不会发生冲突。我确信不需要重新发明轮子,我只是想证实我的想法。

我的想法是:

  • 每个开发人员在完成后启动他的私有开发分支
  • ,并将其合并到集成分支。集成分支上进行了进一步的稳定。
  • 集成完成后,它会合并到主干并标记。

我不清楚:

  • 我们是否应该开设一个新的私人分支机构 之后从后备箱取出,或者保留 从事同一个私人工作 开发分支?
  • 我发现 svn 有一个特殊的行为 当重新融入时 特别是在主干上。有吗 拥有一个的好处(或缺点) 那么特殊的整合分支呢?

多谢。

we are a small startup company, starting from scratch. We use Subversion, the repository is located on a Web-based service.

I am familiar with CVS and read some intro to SVN, that's not a big deal. I am interested in references to CM methodology that will allow us to spend the least effort on the CM per se, but will enable us to work smoothly without conflicts. I am sure that no wheel need to be reinvented, I just want to confirm the idea that I have.

What I have in mind is:

  • each developer starts his private development branch
  • when done, it is merged to the integration branch. further stabilization is done on the integration branch.
  • when the integration is done, it is merged to the trunk and tagged.

I am unclear of:

  • should we start a new private branch
    from the trunk after that, or keep
    working on the same private
    development branch?
  • I see that svn has a special behavior
    when reintegrating back on
    specifically on trunk. Are there
    benefits (or drawbacks) in having a
    special integration branch, then?

thanks a lot.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

世俗缘 2024-08-22 08:21:02

为什么您觉得有必要在私人分支机构进行开发?您不能让您的开发人员在同一存储库路径中一起工作吗?我问这个问题的原因是根据我的经验,大多数认为他们“需要”这的人通常是错误的,并且不了解源代码管理以及 Subversion 的工作原理。我并不是在指责你,但我希望你能解释一下这个要求背后的原因,因为它可能会对未来的建议产生影响。

为了尝试回答您的问题,我可以告诉您,使用私有开发人员分支会给您的管理和工具配置增加不必要的负担。开发人员应该在同一存储库路径中一起工作,除非有充分的理由,例如使用分支、错误修复版本或实验工作。造成这种情况的原因有很多,但我首先想到的几个是开发是团队的努力、每个人的变化的可见性、开发过程的简单性、工具配置的简单性和管理的简化。

典型的 Subversion 用法使主干成为所有开发人员处理下一个版本的路径。您可以创建分支来对错误修复版本、实验性功能和长时间运行的开发任务等进行独立的并行开发。我们都知道,所有场景都不典型,每个团队的需求都是独特的,但在我知道为什么需要私有开发人员分支之前,我不同意它们的必要性,并且它们会给您的团队、流程和流程增加不必要的负担。工具配置。

Why do you feel the need to do development in private branches? Can't you have your developers work together, in the same repository path? The reason I ask is in my experience, most people that think they "need" this are usually wrong and don't understand source management and how Subversion works. I'm not accusing you of this but I am hoping you can explain the reasoning behind this requirement, as it might have an impact on future suggestions.

To attempt to answer your question, I can tell you that using private developer branches will add unnecessary burden to your administration and tooling configuration. Developers should be working together in the same repository path, unless there is good reason like using a branch a bugfix release or experimental effort. There are many reasons for this but the first few that come to mind for me are that development is a team effort, visibility into everyone's changes, simplicity in development processes, simplicity in tooling configuration and simplified administration.

Typical Subversion usage has the trunk be the path where all developers work on the next release. You create branches to do isolated parallel development for things like bugfix releases, experimental features and long running development tasks for example. We all know that all scenarios aren't typical and each team's needs are unique but until I know why you need private developer branches, I'm going to disagree that they are needed and that they will add unnecessary burden to your team, processes and tooling configuration.

只等公子 2024-08-22 08:21:02

如果需要的话,我只会从一个带有维护分支的主干分支开始。这通常是一个很好的默认值。这将产生令人惊讶的很少的冲突,并将推动发展朝着“经常进行小改变”的方向发展,这是一件好事。我在 1-10 名开发人员的团队规模中经历过这种情况,而且它确实有效。这称为 " 发布分支“ 在 Subversion 文档中。

功能分支是另一种常见的操作方式。在这里,您为每个新功能创建一个新分支,并将功能合并回主干。一名开发人员可能同时拥有多个功能分支,或者多个开发人员可能同时在同一功能分支上工作。

为每个开发人员建立一个分支需要您进行大量合并,这将是痛苦的。


回答你的两个不清楚的点:在将功能分支集成回主干之后,你绝对应该从主干开始创建一个新的功能分支。 Subversion 文档建议停止使用旧分支。

在 Subversion 1.5 中,一旦从分支到主干完成了 --reintegrate 合并,该分支就不再可用于进一步的工作。它无法正确吸收新的主干更改,也无法再次正确地重新集成到主干。因此,如果您想继续处理您的功能分支,我们建议您销毁它,然后从主干重新创建它:

但是 trunk 分支没有什么特别之处,它是一个普通分支在每一种时尚中。它只是与其他分支有不同的名称。因此,重新集成到主干没有什么特别的。 Subversion 文档讨论了 --reintegrate 操作,但它指的是以下情况:

  1. 您有分支 A(在许多情况下,这将是主干
  2. 您从分支 A 创建一个新的分支 B
  3. 您修改分支 B,也可能修改分支 A
  4. 您合并或重新集成从分支 B 更改为分支 A

I would start with only a trunk branch with maintenance branches for releases if needed. That usually is a good default. This will generate surprisingly few conflicts and will drive development towards "make small change often" which is a good thing. I have experienced this with team size of 1-10 developers and it works. This is called "release branches" in Subversion doc.

Feature branches is another common way to operate. Here you create a new branch for each new feature and merge features back to trunk. One developer might have several feature branch simultaneously or several developers might work on same feature branch at the same time.

Having a branch for each developer requires that you will make a lot of merges and they will be painful.


To answer your two unclear point: You should definitely make a new feature branch starting from the trunk after you have integrated the feature branch back to trunk. Subversion docs recommend to stop using old branch.

In Subversion 1.5, once a --reintegrate merge is done from branch to trunk, the branch is no longer usable for further work. It's not able to correctly absorb new trunk changes, nor can it be properly reintegrated to trunk again. For this reason, if you want to keep working on your feature branch, we recommend destroying it and then re-creating it from the trunk:

However there is nothing special about trunk branch, it is a normal branch in every fashion. It just has a different kind of name than other branches. Thus there is no special about reintegrating to trunk. Subversion docs talk about --reintegrate operation but it refers to following case:

  1. You have branch A (in many cases this would be the trunk)
  2. You make a new branch B from branch A
  3. You modify branch B and possibly also branch A
  4. You merge or reintegrate changes from branch B to branch A.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文