svn - 如何使用 SVN 管理源代码?分支,合并

标签 svn branch merge

我们是由位于不同地点的 4 名开发人员/ friend 组成的团队。我们都开始在 ProjectX 上工作,并使用 Subversion 创建了分支 A、B、C 和 D。

我们只有基本的版本控制源代码知识。有一天,我们中的一个人试图将分支 A 与 B、C 合并,而 D 和 B 试图与 A、C 和 D 合并。(他们甚至不知道如何合并它:D,只需右键单击 > 合并 >合并一系列修订)我们遇到了一些冲突,解决了它们。再次尝试合并,再次右键单击.....) 再次发生冲突。

现在所有的代码都搞砸了。我们有 4 个不同的代码副本(D 缺少 B 的功能但有 C 等)。所以我在 SO 上浏览了很多线程,阅读了 SVN 书,尤其是 this article (how to branch properly)对理解如何合并分支和主干有很大帮助。我想我对 future 有了更好的理解。但我如何摆脱现状?

我的问题是:

  • 我们四个人在做同一个项目,但通常在不同的地方工作,我们应该只有一个分支吗??然后创建 4 个工作副本,然后仅提交和更新。一旦我们准备好将主干合并到分支,分支到主干?根据 above article 中的建议
  • 您能否建议任何工作流程,以便我们可以将 4 个分支连接到主干,然后我可以进行导出以再次从头开始版本控制。
  • 另外我认为如果再次使用 4 个分支,我们每个人是否应该每天/定期更新我们的分支并从主干获取更改(合并)并将本地更改合并回主干? (而不是尝试合并分支到分支:-D)

  • 请建议我们应该使用什么工作流程?这样它维护代码的痛苦最小。谢谢。

    最佳答案

    我不会为每个开发人员创建一个分支。我推荐一个 continuous integration你们四个人都从一个“主干”中 checkout 并经常合并更改的过程 - 每天多次。理想情况下,您应该有一个标准化的构建工具(例如 Maven、Ant 等)和一个构建调度程序(例如 Hudson、Cruise、TeamCity 等)。将这两个工具放在您的 SCM 工具 (Subversion) 之上,您可以有一个过程不断构建您检入主干的所有更改,并在出现问题时向所有开发人员发送电子邮件。这可以保护您免受不良更改或合并破坏构建,同时允许您保持轻量级分支结构(即一个分支 - 主干)。

    分支使您更难将您的代码更改与您的团队成员的代码更改集成在一起。分支真的应该用于分支——创建专门管理的软件“分支”。例如,如果您要发布软件的 1.0 版,最好在主干之外创建一个 1.0 分支(在开发之后但在发布之前),这样您就可以在不影响正在进行的情况下维护此版本主干上的开发(也许是 2.0 版)。

    我建议抢 Pragmatic Version Control with Subversion .这是对 SCM 的非常可靠的概述,其中包含 Subversion 的细节。

    关于svn - 如何使用 SVN 管理源代码?分支,合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1493129/

    相关文章:

    netbeans - 是否有等效于 Eclipse 工作区的 NetBeans

    git - 在 Git 中一次 merge 2 个以上的分支/头?

    java - 如何在 SVN 中自动 checkin 由 maven build 生成的文件?

    git - Git 分支存储在哪里?

    git - 如何知道我在GIT的不同分支中拥有的文件?

    python - 如何在Python中将数组与其数组元素合并?

    svn - Mercurial 或 git 比 svn 对于分支/merge 有什么好处?

    java - 获取新的/更改的 java 方法的列表

    svn 预提交 Hook 以禁止 svn :mergeinfo on non-root directories

    svn - 如何查找/搜索/grep SVN 存储库历史记录?