svn externals ...是还是不是?

标签 svn version-control externals

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

无论如何,这是我的困境。我们有引用多个项目的解决方案,这些项目位于他们自己的存储库部分。其中许多项目在多个解决方案之间共享,我们也不希望排除我们项目的共享。我们还将几个固定版本的依赖项 checkin 我们的存储库(单元测试框架、库等)。

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

基本上结构看起来像这样(为简洁起见省略了主干/分支/标签):

/projects
   /project1
   /project2
/dependencies
   /xUnit
      /1.5
      /1.4
   /NHibernate
      /2.1.0
      /2.0.1
/workspaces
   /project1
      /project1 (external to ^/projects/project1)
      /xUnit (external to ^/dependencies/xUnit/1.5)
      /NHibernate (external to ^/dependencies/NHibernate/2.0.1)
   /project2
      /project2 (external to ^/projects/project2)
      /xUnit (external to ^/dependencies/xUnit/1.4)
      /NHibernate (external to ^/dependencies/NHibernate/2.1.0)

最佳答案

SVN Externals are Evil; Use Piston or Braid似乎是典型的反外部阵营。海报确实有一点。

我认为更好的标准是:

  • 对可以更改的内部项目使用外部引用;和
  • 使用 vendor branches对于外部存储库,您无法控制。

  • 因此,svn externals 的问题似乎来自人们使用它们作为供应商分支的替代品。我看到有几个人在第三方 Rails 插件的上下文中提示它们。

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

    关于svn externals ...是还是不是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1634698/

    相关文章:

    svn - 使用 CruiseControl.net 时将参数传递给 svn

    svn - 私有(private)在线 SVN 存储库

    svn:服务器发送了意外的返回值(405 方法不允许)以响应 DELETE 请求

    git - 如何自动对齐/同步一个 fork 的 Github origin/master 分支到 upstream/master?

    svn - Subversion 忽略 "--password"和 "--username"选项

    angular - Webpack外部组件不需要使用Electron和Angular 4定义

    c# - 如何以编程方式使用 SVN 和 .NET 进行文件版本控制?

    svn - 在 Windows 上与 Subversion 集成时使用哪些工具?

    svn - 颠覆外部问题

    c# - Svn 外部和 C# 程序集 - 不兼容?