1

我最近开始了一份新工作,到目前为止他们只有一个开发人员。将 Eclipse 和 Collabnet 与 Subversion 一起使用。因此,他在冲突等方面没有任何问题。更重要的是,因为它是对原始应用程序的完全重写,因此不会与任何其他代码发生冲突。

这也使他能够随时提交(以防他的计算机“死”在他身上)而不会出现任何问题。

SVN 目录是在没有主干的情况下构建的。一切都直接在根目录中。

我们现在有 3 名开发人员。我仍然希望让他们每天都能投入,但不干扰彼此的工作。所以,我认为正确的方法是现在创建一个主干,然后为每个开发人员创建一个单独的分支。那是对的吗?

如果是这样,进行此更改的最简单方法是什么。我看到了这个链接,但它很旧,我想知道是否有一种新的、更简单的方法。有没有一种干净的方式来移动/到/trunk?

4

2 回答 2

2

经常提交和更新。

除非正在编写/编辑不同的代码部分,否则必须发生冲突。越早遇到冲突(因此它们越小)越好。每天提交是远远不够的。

理想情况下,提交应该是原子更改。在保持稳定性和正确性的同时向代码添加内容的最小可能更改。换句话说,如果您添加 3 个不同的功能然后提交,提交可能不够小。每个功能都应该有自己的提交。(或者,如果任何功能不小,可能不止一次提交。)

理想情况下,您还应该尝试传达将发生的变化。它在实践中的运行情况差异很大,但如果您知道程序员 A 今天将在模块 X 上工作,那么除非必要,否则最好避免修改模块 X 代码。

至于移动根,据我所知,这确实是推荐的方法。做一次应该没什么大不了的。

编辑:我可能应该提到我绝不是 svn 工作流专家。我在一个使用 git 的 4 人团队工作了大约 6 个月,在一个使用 svn 的 2 人团队工作了几年。这篇文章是基于我注意到随着时间的推移帮助或伤害我们的事情。

于 2012-06-07T07:17:08.310 回答
1

您的日常工作不需要分支。让每个人都处理主源目录中的文件。将代码移动到子目录(例如“/trunk”)可能很聪明,这样您也可以在根目录中拥有其他目录(例如分支目录)。

开发时会发生冲突,但它们应该很小且易于解决。提交应该尽可能小。TortoiseSVN 有一个很好的用户界面,可以在你提交时解决冲突。

唯一必须使用分支的情况是,如果两个或多个开发人员一起开发无法提交到主干的功能,例如,如果它还没有准备好在即将发布的版本中发布并且计划在以后的版本中发布。

创建分支的好时机是发布应用程序时。为第一个版本创建一个名为 1.X 的分支。然后继续在主干中向 2.0 工作。在 1.X 分支中,您可以构建 1.0 版本,然后再构建 1.1 版本等等(不会干扰主干中的 2.0 版本)。

请注意这两种类型的分支之间的区别:发布分支是从主干分叉出来的,并且永远存在。单个错误修复可以在主干和发布分支之间合并,但发布分支永远不会合并回主干。

在功能分支中,主干更改通过合并不断导入。功能完成后,整个分支合并到主干中,之后不再使用该分支。

Release branches            __testing_1.X__..._rel_1.0___.._rel_1.1    ___2.X_branch_
                           /                                          /
___________trunk__________/_______trunk______________________________/____..
      \                                               /
       \_____really big feature for v2 only__________/ 

Feature branches

对于日常开发,您可以根据需要使用分支。一种选择是每个功能一个分支,但您可能会发现这会产生比它为小团队解决的问题更多的问题。解决 SVN 中的冲突通常比管理多个分支和执行许多合并要容易得多。在其他版本控制系统(例如 Git)中情况有所不同。

于 2012-06-07T08:03:52.267 回答