单独的存储库用于单独的项目?

时间:2010-01-03 19:04:51

标签: svn

好的,基本上我的问题是关于颠覆的最佳做法。我对颠覆很新,所以真的不太了解。

所以这就是我的问题。

我现在正在处理2个项目,而且他们两个都是一个开发人员,所以我想知道是否可以将这两个项目放在同一个存储库中,或者为每个项目创建单独的存储库。我认为制作单独的是更好的主意,它看起来很干净,因为它们不花费(就高清空间而言),所以为什么要担心?

6 个答案:

答案 0 :(得分:3)

我倾向于存储库每个可释放的(一个库,一个可执行文件,或者一个密切相关的库或可执行文件集)。为什么?我可以独立地标记和分支每个,而不必担心存储库中的结构以及该存储库中每个组件所处的状态。

我只能选择检出特定的存储库(例如,对于客户端可执行文件),并且只使用其他存储库的构建工件(库)。这可能对团队中的简单管理员有用,并且可以将团队集中在特定的代码集上,而不是将它们暴露给企业使用的完整代码集(我感谢你是一个独立的开发人员,所以这可能不适用于你的情况!)

多个存储库管理起来很便宜。它实现了分离,如果(比如说)一个存储库用于构建其他组件使用的库或组件,那么它很有用。如果该库/组件有自己的存储库,那么您可以单独构建和发布它,并将其发布以供客户端使用,因为他们知道他们正在使用构建工件,而不是使用该库的子组件,它们不应该是。我不确定你是否可以通过将所有内容放在一个存储库中来轻松实施。

答案 1 :(得分:1)

我认为如果有独立的话,将两个项目分开是有利的:

  • 您可以通过查看日志来跟踪项目进度
  • 如果两个项目日志混合在一起,则很难找到您要查找的修订版本(项目的先前版本)。
  • [编辑]与subversion相关的所有工具(例如Trac等项目管理工具)可能无法单独管理这两个项目。

答案 2 :(得分:1)

我为每个项目保留了单独的存储库,并为我创建的任何我打算重用的库保存了另一个存储库。

在我的情况下,唯一真正的例外是我的所有简单ruby脚本都保存在一个存储库中。

它有助于使提交注释更有意义并保持单独的项目,好吧,分开是个好主意,因为(除其他事项外)已经说过,你永远不知道任何给定项目会发生什么。

答案 3 :(得分:0)

我曾经这么想过,但过了一段时间我开始发现项目中使用的一些代码可能对另一个(在不同的存储库上)有用,所以现在我认为最好将所有内容放在一个存储库中。

答案 4 :(得分:0)

对于一个开发多个项目的开发人员,这些项目至少在某种程度上相互关联,实际上开始使用一个大型存储库可能是有意义的,因为您可以轻松地切换和分支事物。

但是,如果一个或多个项目可能是后来分离的候选者 - 例如如果团队可能开始研究它们 - 考虑将项目与开始分开。这样,每个项目都有一个干净的版本历史记录。 (即没有与其他项目的提交混合的历史记录。您可以随时使用转储工具过滤掉东西,但我发现不必使用它更方便。)

此外,如果你的一个或多个作品有可能在某一天成为开源,那么拥有干净的版本历史记录是很好的,因为像ohloh这样的社交编码网站会仔细检查你的提交,并添加到项目的活动统计数据,以及你的个人资料的专业知识如果他们检测到你过去做出的实际提交。不是很重要,也不是真正讲述任何事实,但仍然很高兴。

布莱恩·阿格纽(Brian Agnew)在答案中提出了一些非常好的补充点,支持分离。

使用一个大型仓库时,您不应该遇到安全问题,因为如果人们开始加入存储库,您就可以path-based authentication in Subversion

但是,您必须使用与其相关的项目标记每个提交,以便稍后从提交消息中理解。

答案 5 :(得分:0)

我曾经把我的所有项目都放在One Big Repository中,但它变得有点混乱:你不知道在没有查看受影响的路径名的情况下,什么项目的提交消息。对任何项目进行提交会增加修订号,并在技术上使每个其他无关项目的工作副本过时(即使没有更新的文件也没有更改)。

如果我在SVN服务器上工作,我不介意,但这些只是我本地磁盘上的存储库。最后,我学会了如何使用svndumpfilter将它们分成单独的每个项目的存储库。

如果你想在项目之间共享代码,我认为最好的办法是学习如何设置svn:externals属性。在存储库中复制内容实际上并不比复制磁盘上的内容并多次检查它更好。如果要将文件的更改传播到使用它的所有项目,则仍需要执行大量手动操作。 svn:externals允许您引用不同的存储库,因此您可以为共享代码创建一个存储库,然后为每个项目创建另一个存储库。