Svn 我应该有一个或多个存储库吗?

Svn 我应该有一个或多个存储库吗?,svn,version-control,Svn,Version Control,我发现自己在问这样一个问题:我应该为这个客户机上的所有项目建立一个存储库吗?或者我应该为每一个单独创建一个存储库 你通常决定哪一个 请列出导致您做出决定的两种方法的优缺点 编辑:请将以下内容之一标记为重复: 我对“一切”都使用一个存储库,因为它使得在项目之间移动东西更加容易——至少在SVN中是这样。我有一个大型存储库,原因与Ken的回答相同: 我在一家.NET开发商店工作,我们有两个Visual SourceSafe存储库。一个用于传统的.NET 1.1应用程序,另一个用于较新的.NET 2.

我发现自己在问这样一个问题:我应该为这个客户机上的所有项目建立一个存储库吗?或者我应该为每一个单独创建一个存储库

你通常决定哪一个

请列出导致您做出决定的两种方法的优缺点

编辑:请将以下内容之一标记为重复:


我对“一切”都使用一个存储库,因为它使得在项目之间移动东西更加容易——至少在SVN中是这样。

我有一个大型存储库,原因与Ken的回答相同:


我在一家.NET开发商店工作,我们有两个Visual SourceSafe存储库。一个用于传统的.NET 1.1应用程序,另一个用于较新的.NET 2.0/3.0/3.5应用程序。

我能想到的原因只有一个,那就是不将所有内容放在一个存储库中。也就是说,如果您没有权限配置存储库所在的服务器,您需要将存储库的某些部分限制为不同的人员


我们有一个集中管理的服务器,可以根据需要创建存储库,但不能更改配置。我们有一个只供内部使用的主代码存储库,但创建其他代码存储库以与组织外的人员协作。

我为每个项目都有一个存储库,因为它保持了版本号的独立性。我遵循了OrtoiseSVN帮助第4.1.5节“存储库布局”中的思路:

如果项目不是紧密相关的,并且每个项目都是单独签出的,那么按项目编制索引是有意义的


在这种情况下,我将SVN用于我自己的本地备份,因此这对我来说是有意义的。

每种类型的项目和访问它的人员都有一个存储库。例如,我们所有的.NET项目都在一个存储库中,我们所有的遗留应用程序都在一个存储库中。这样,我们的.NET开发人员就不会意外地疏通我们的遗留开发人员(反之亦然)。

我曾经对所有项目使用一个存储库,直到它变得如此庞大,以至于对项目的承诺真的变慢了——这就是Subversion。如果您的项目将保存大量数据,特别是二进制数据,那么我建议使用单独的存储库。如果您主要只是存储代码,那么单个存储库的维护就更简单。

我使用多个存储库——尽管我承认,在组织代码时,我有一点OCD,我喜欢非常有组织和独特的东西

我在我们公司管理SCM回购,目前我们有三个:一个用于主要项目,一个用于包/库,一个用于第三方代码。如果我再做一次,我也会为媒体文件建立一个单独的存储库(我们有很多mp3/wav文件需要进行版本控制),但遗憾的是,它们都在我们的主repo下


我认为,使用多个存储库的唯一有力理由(除了过分组织之外)是,它可以更容易地处理每个repo的访问权限,而根据您的SCM环境,对于单个repo下的多个路径来说,这可能不那么容易。

我几乎所有事情都使用git。因此,我每个项目都有一个存储库(无论是it/etc、编码项目还是用户配置文件)。

如果您对所有内容都使用一个存储库,那么设置自动构建或进行持续集成将变得更加困难。即使你现在不打算这么做,现在就设置也不是一个坏主意,这也给了你额外的好处,让你的内容更容易管理

一个好的经验法则是为每个不同的解决方案\项目组创建一个存储库


如果您有一个不共享任何内容的解决方案,请为每个解决方案创建一个存储库。另一个例子是,如果您有一个.NET 1.1版本的应用程序,并且您希望创建一个2.0版本的应用程序分支代码,并为新代码创建一个单独的存储库,那么也可以使用.NET 3.0和.NET 3.5来实现这一点。

事实上,stack的搜索没有看到我使用的术语。我们不能合并这些问题,是吗?我会保持开放,因为更多的回应比更少更好。指向其他问题的指针应该足够了。我搜索了“我应该有一个或多个存储库吗?”(您的问题),上面编辑中的链接是列表中的#2。我不认为有任何合并,另一个Q没有链接到这个。不重复更好。同意。不受骗更好。删除..哦,我想我不能删除。投票赞成关闭。请记住,您不需要签出整个存储库。您可以通过将任何子树指定为传递给svn公司的url的一部分来选择它。我看不出使用单个存储库进行自动构建有多么困难。您始终可以签出子树。使用钩子继续集成,您可以签出子树,但随后必须跟踪子树。然后,维护哪些子树以检查哪些等就成了一个问题。如果您从一开始就做一点组织,那么维护就会容易得多