svn外部。。。是还是不是?

svn外部。。。是还是不是?,svn,version-control,externals,Svn,Version Control,Externals,我在这里读到了一些谴责使用svn:externals的答案。我确实看到了他们是如何被滥用的,这确实使我们更加依赖于颠覆,但我真的不认为我们的团队会很快离开它 不管怎样,这是我的困境。我们的解决方案引用了多个项目,这些项目位于存储库的各自部分。这些项目中有许多是在多个解决方案之间共享的,我们也不想排除共享我们的项目。我们还将几个固定版本的依赖项签入了存储库(单元测试框架、库等) 我想配置几个只使用外部的“工作区”(就Subversion而言,它们只是空目录,或者可能包含单个解决方案文件),以便为我

我在这里读到了一些谴责使用svn:externals的答案。我确实看到了他们是如何被滥用的,这确实使我们更加依赖于颠覆,但我真的不认为我们的团队会很快离开它

不管怎样,这是我的困境。我们的解决方案引用了多个项目,这些项目位于存储库的各自部分。这些项目中有许多是在多个解决方案之间共享的,我们也不想排除共享我们的项目。我们还将几个固定版本的依赖项签入了存储库(单元测试框架、库等)

我想配置几个只使用外部的“工作区”(就Subversion而言,它们只是空目录,或者可能包含单个解决方案文件),以便为我们的开发人员配置解决方案。单独签出大多数项目不足以构建它们,但是签出它的工作区就足以构建它,因为它的所有依赖项都会随之而来。还有其他人实现过类似的解决方案吗?svn:externals是一个很好的解决方案吗?如果我们沿着这条路走下去,你对我有什么忠告

基本上,结构如下所示(为了简洁起见,省略了主干/分支/标记):

似乎是典型的反外部阵营。这张海报确实有道理

我认为更好的标准是:

  • 对可以更改的内部项目使用外部参照;及
  • 用于您无法控制的外部存储库
因此,svn外部的问题似乎源于人们将其用作供应商分支的替代品。我见过一些人在第三方Rails插件的环境中抱怨它们


因此,在您的情况下,假设这些项目都是“内部”的,那么我认为svn外部是一种完全有效的方法。

我完全同意前面的答案。 根据我的经验,使用外部是基础设施模块和“内部”库的最佳解决方案,只要您将外部设置为库的特定标记,而不是其主干

我不明白您为什么要使用完全基于外部的工作区,而不是直接将外部添加到项目本身。我的方法是,在SVN上创建的任何项目在签出时都必须是“可构建的”

在我的方法中,您的存储库应该如下所示:

/dependencies
     /xUnit
           /tags
                /1.5
                /1.6
           /trunk
     /NHibernate
           /tags
                /2.1.0
                /2.0.1
           /trunk
/projects
     /project1
           /tags
                /1.0
                    /sources
                    /xUnit(externals to /dependencies/xUnit/tags/1.5)
                    /NHibernate(externals to /dependencies/NHibernate/tags/2.0.1)
           /trunk
                /sources
                /xUnit(externals to /dependencies/xUnit/tags/1.6)
                /NHibernate(externals to /dependencies/NHibernate/tags/2.0.1)
     /project2
           /tags
                /1.0
                    /sources
                    /xUnit(externals to /dependencies/xUnit/tags/1.6)
                    /NHibernate(externals to /dependencies/NHibernate/tags/2.0.1)
           /trunk
                /sources
                /xUnit(externals to /dependencies/xUnit/tags/1.6)
                /NHibernate(externals to /dependencies/NHibernate/tags/2.1.0)

如果您的
svn:externals
只引用第三方库,为什么不直接使用Maven/Ivy存储库呢?这些是针对Java世界的,我不知道它们的.Net依赖项,但我很确定它们是存在的


我只使用
svn:externals
来共享Ant antlib文件,直到它们允许从jar存档加载它们。

注意,该博客文章的链接已经移动。现在在这里:
/dependencies
     /xUnit
           /tags
                /1.5
                /1.6
           /trunk
     /NHibernate
           /tags
                /2.1.0
                /2.0.1
           /trunk
/projects
     /project1
           /tags
                /1.0
                    /sources
                    /xUnit(externals to /dependencies/xUnit/tags/1.5)
                    /NHibernate(externals to /dependencies/NHibernate/tags/2.0.1)
           /trunk
                /sources
                /xUnit(externals to /dependencies/xUnit/tags/1.6)
                /NHibernate(externals to /dependencies/NHibernate/tags/2.0.1)
     /project2
           /tags
                /1.0
                    /sources
                    /xUnit(externals to /dependencies/xUnit/tags/1.6)
                    /NHibernate(externals to /dependencies/NHibernate/tags/2.0.1)
           /trunk
                /sources
                /xUnit(externals to /dependencies/xUnit/tags/1.6)
                /NHibernate(externals to /dependencies/NHibernate/tags/2.1.0)