如何使用svn:externals将多个文件导入同一文件夹

时间:2010-06-29 14:18:30

标签: asp.net svn

我有几个Subversion存储库看起来像:

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

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

我想使用以下行使用svn:externals将/ Core / trunk / 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属性时,从后一行引入的文件会覆盖从前一行引入的文件,因此我最终得到:< / p>

/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网站项目,所以这是我正在使用的约束。

更新

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

/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 Web站点项目的引用时,系统会创建.refresh文件(如上所示)。只应从/ Bin文件夹中签入那些.refresh文件。应通过svn:ignore。

将所有其他文件和文件夹添加到Subversion忽略列表中

要明确:上面标签中标有星号的文件应添加到svn:ignore,而标有+的文件应添加到Subversion。

1 个答案:

答案 0 :(得分:2)

我怀疑这可能只是使用外部。外部基本上只是说“在这里自动检查这个并在我更新存储库的其余部分时更新它”。如果可以这样做,则需要能够在同一目录中存储有关两个存储库的信息,SVN不允许这样做。

您可以在Windows Vista及更高版本上使用mklink。在2000 / XP / 2003上,您可以使用NTFS symlinks来创建硬链接 - 可能有一个工具可以做到这一点,但我不知道任何特定的链接。

当然,你也可以在Vista上使用硬链接,如果你愿意,也可以使用--mklink也可以。但请注意,硬链接只能指向同一卷上的文件,这些符号链接不需要。