【问题标题】:How to bring in multiple files into the same folder using svn:externals如何使用 svn:externals 将多个文件引入同一个文件夹
【发布时间】:2011-05-10 21:57:06
【问题描述】:

我有几个 Subversion 存储库,如下所示:

/Core
  /trunk
    /External
      /LibraryA
        - LibraryA.dll
        - LibraryA.pdb
      /LibraryB
        - LibraryB.dll
        - LibraryB.pdb

/Website
  /trunk
    /Website
      ...
      /Bin
      ...

我想使用 svn:externals 将 /Core/trunk/External/LibraryA 和 /Core/trunk/External/LibraryB 中包含的文件引入文件夹 /Website/trunk/Website/Bin 中,使用以下行:

  • /svn/Core/trunk/External/LibraryA@HEAD Bin
  • /svn/Core/trunk/External/LibraryB@HEAD Bin

当我将以上行添加到 /Website/trunk/Website 文件夹的 svn:externals 属性时,从后一行引入的文件会覆盖从前一行引入的文件,所以我最终得到:

/Website
  /trunk
    /Website
      ...
      /Bin
        - LibraryB.dll
        - LibraryB.pdb
      ...

有人可以建议正确的方法吗?我想结束:

/Website
  /trunk
    /Website
      ...
      /Bin
        - LibraryA.dll
        - LibraryA.pdb
        - LibraryB.dll
        - LibraryB.pdb
      ...

如果我可以将网站转换为 ASP.NET Web 应用程序项目,我可以以不同的方式处理它。按照目前的情况,这个项目必须是一个 ASP.NET 网站项目,所以这是我正在处理的一个限制。

更新:

为了实现我想要实现的目标,我将这两个库拉入到库文件夹下各自的文件夹中,这样我最终得到了以下结构:

/Website
  /trunk
    /Website
      ...
      /Bin
          - LibraryA.dll *
          - LibraryA.pdb *
          - LibraryA.dll.refresh +
          - LibraryB.dll *
          - LibraryB.pdb *
          - LibraryB.dll.refresh +
      /Libraries
        /LibraryA
          - LibraryA.dll +
          - LibraryA.pdb +
        /LibraryB
          - LibraryB.dll +
          - LibraryB.pdb +
      ...

然后,我将这两个库作为参考添加到网站,它会根据需要提取所有库。当添加库作为对 ASP.NET 网站项目的引用时,系统会创建 .refresh 文件(如上所示)。只有那些 .refresh 文件应该从 /Bin 文件夹签入。所有其他文件和文件夹都应该通过 svn:ignore 添加到 Subversion 忽略列表中。

明确一点:上面列表中标有星号的文件应该添加到 svn:ignore,而标有 + 的文件应该添加到 Subversion。

【问题讨论】:

    标签: asp.net svn


    【解决方案1】:

    我怀疑这是否可能仅使用外部组件。外部基本上只是说“在我更新存储库的其余部分时自动在此处检查并更新它”。如果你能做到这一点,你需要能够在同一个目录中存储关于两个存储库的信息,而 SVN 不允许这样做。

    可以考虑做的是为这些文件创建NTFS symlinks,然后在其他地方签出(这可以使用外部完成)。您可以在 Windows Vista 及更高版本上使用 mklink。在 2000/XP/2003 上,您可以改用 CreateHardLink 创建硬链接 - 可能有一个工具可以做到这一点,但我不知道有什么具体的。

    当然,如果您愿意,您也可以在 Vista 及更高版本上使用硬链接 - mklink 也允许这样做。但是请注意,硬链接只能指向同一卷上的文件,而符号链接不需要。

    【讨论】:

    • 感谢您指出为什么 svn:externals 不起作用。虽然符号链接可以在我的本地机器上工作,但它们不能在其他机器上工作。我认为我要做的是使管理 /Core 存储库的持续集成过程将库提交到 /Website/trunk/Website/Bin 文件夹。我本来希望 svn:externals 能够工作,但我想这不会发生。
    • 好吧,如果您只处理一组有限的机器,那么只在每台机器上创建符号链接可能是可行的。不过,这取决于您的情况。
    猜你喜欢
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多