1

这是要求:

  1. C# 类需要在一组 5 名开发人员之间共享。
  2. 如果一个开发者开始编辑一个类,它应该被其他人自动锁定
  3. 其他人可以编辑该类,仅当当前开发人员发布该类时

我知道 Git 是一个分布式版本控制系统,可以创建完整的本地存储库。必须使用合并功能来创建合并文件。

我也尝试过 Svn,但即便如此,它也使用了 Merge 工具。

我有一个小团队,我不想使用合并工具。实现这一目标的最佳方法是什么?

4

2 回答 2

4

SVN 确实通过其锁定功能支持这种工作流程。

阅读SVN Book v 1.7 中关于锁定的部分- 它包含大量细节。

据我所知git 不支持锁定工作流

显然 Team Foundation Server 也支持锁定工作流,但我不熟悉它。

我要补充一点,我不认为这是一种很好的工作方式,除非你绝对必须这样做(例如二进制文件或难以合并的文件,如模型 xml)。定期的团队沟通和防御性编程应该意味着绝大多数代码合并将由您的版本控制系统自动处理。

合并只是协作开发的一部分。没有人真的使用合并工具,但是 IMO 不得不偶尔(有时是混乱的)合并是一个更好的前景,而必须等到其他人完成文件才能进行更改 - 更改很可能不会与他人发生冲突无论如何都会改变。尤其是在一个小团队中。

您也不应该(如上面的评论中所述)需要专门用于合并的资源。合并最好由两个人完成。

  1. 有冲突的开发者,以及
  2. 提交最后一次更改(导致冲突)的开发人员。

如果这两个不能很快解决,或者您确实需要一个仅用于合并的资源(我已经看到即使在大约 10 名开发人员的小型团队中也会发生这种情况),那么您就会遇到问题......例如;

  1. 代码是单体的/高度耦合的,需要重构
  2. 开发人员没有提交原子更改。
  3. 使用 svn 和复杂的分支策略(可怕)
  4. 开发人员没有互相交谈(每天只需 10 分钟的站立会有所帮助)

祝你好运!

于 2013-06-15T14:53:21.980 回答
1

Apache Subversion 1.8具有重大改进,使合并和解决冲突更容易。新的自动合并绝对值得测试!

正如@mounds 已经提到的,您可以在 Apache Subversion 中使用悲观锁定类型的工作流。查看SVNBook | 锁定通讯部分。在这种情况下,带有 VisualSVN 的 Visual Studio 会在您开始修改文件之前提示您锁定文件。

请注意,这种方法应该与那些无法合并的文件一起使用。所以~,拥抱合并!

鼓励用户和管理员将 svn:needs-lock 属性附加到任何无法根据上下文合并的文件。这是鼓励良好的锁定习惯和防止浪费精力的主要技术。

于 2013-06-17T10:22:53.213 回答