源控制系统由用户而不是版本分支

时间:2012-03-28 12:42:22

标签: version-control

再一次,我对有关发布此问题的最佳堆栈交换网站感到有点难过。但我认为开发人员最适合回答有关源代码控制的问题,所以就是这样。

我正在考虑一个众包,用户评级的游戏开发项目,我想知道什么,如果有的话,源代码控制和合并系统可能最好能够托管我感兴趣的各种源代码控制。用户 - 评级,我的意思是会有像StackOverflow这样的评级/投票系统。有关项目构想的一些详细信息,您可以在http://gamedev.enigmadream.com/index.php?topic=1589.0阅读我的相关帖子。我认为我需要的是:

  1. 能够按用户分支并最大化合并功能。我知道源代码控制系统主要关注版本分支,我们可能会想到每个用户都维护自己的版本。但我想我们需要一些非常强大的合并功能来最大化一个用户将更改从另一个用户合并到他们自己的分支中的能力。所以我认为我希望能够进行“跨分支”合并,而不必首先合并到公共根分支。 (我最熟悉Team Foundation Server(TFS),它不支持这个。)
  2. 大规模分支和合并。如果有数百或数千人想要将他们自己的更改合并到项目中,那么可能会有很多分支,并且系统需要能够在没有崩溃的情况下处理它们。单个用户可能希望创建多个分支,这些分支来自多个其他用户的分支,这些分支也是在自己的名称下,理想情况下,能够在某种程度上合并它们。
  3. 分支机构的权限控制。我看到SourceForge支持Subversion和Mercurial,但目前不支持路径/分支的权限控制(据我所知),尽管这似乎是一个正在考虑的功能。应限制用户将其代码推送到其他分支。我怀疑用户的正常操作是将其他分支的编辑拉到他们自己的分支中,并检查他们自己的分支中的其他更改。
  4. 投票系统。我知道我不应该期望源控制系统本身支持投票,但任何有助于实现这一目标的东西都会有所帮助。例如,投票系统可能涉及或依赖于标记来自各个分支的最佳编辑的能力,并基于标签或一组标签将它们拉入单个文件中。任何有助于合并来自不同分支的一组选定标签的结果(可能在该集合中应用新标签)的任何事情也可能有所帮助。
  5. 极少数文件,可能没有目录。我愿意放弃管理大量文件或目录的能力,以获得上述任何一项,因为我正在考虑的游戏文件的格式通常包含在单个文本中(XML或HTML5 - 尚未决定)文件。但这确实意味着系统应该非常善于将编辑有效地合并到相对较大的文本文件中。我知道Team Foundation Server在维护文件更改方面做得非常好。我希望其他源控制系统至少也能做到。
  6. 或者源控制不是在这里讨论的正确范例?是否有其他技术非常适合合并这样的代码,一个不涉及源代码控制和/或分支我正在考虑的方式?

1 个答案:

答案 0 :(得分:1)

  1. 任何VCS ,因为“...源代码管理系统主要关注版本分支......”错误,VCS支持分歧更改随着时间推移的代码,仅此而已,
  2. 任何DVCS ,因为它们具有合理的良好分支合并功能
  3. Mercurial ,具有分支级ACL, SVN 具有基于路径的ACL。并且因为Subversion具有物理树存储库(在某种程度上),ACL可以应用于子树的任何部分,即也可以应用于分支
  4. 任何CodeReview 工具,与VCS集成并针对特定要求进行了修改
  5. Fossil SCM 是单文件便携式EXE,repo - 一个文件; 任何DVCS 也只为现有树添加一个repo目录并处理大文件而不会头疼