将svn:externals设置为当前本地目录

时间:2014-05-08 14:38:06

标签: svn tortoisesvn svn-externals

我有以下本地文件夹结构:

Top-Level Checkout
|-Project1
|    -Project Specific Files
|
|-Project2
|    -Project Specific Files

我想为我的存储库中的一些.dll文件添加一个svn:externals属性到Project1

我使用TortoiseSVN来设置属性(如果重要的话,我不认为它会这样做)。我试图在Project1文件夹中添加svn:externals定义,以便将我的.dll文件下载到该文件夹​​,形成以下结构

Top-Level Checkout
|-Project1
|    -Project Specific Files
|    -.dll1
|    -.dll2
|    -.dll3
|    -.dll4
|
|-Project2
|    -Project Specific Files

但是externals属性拒绝让我指定我想将它们下载到我当前设置外部属性的文件夹中。

例如,如果我的属性如下所示:

^/Some/Repository/Url "SomeFolder"

它会在SomeFolder下创建Project1并将.dll放在那里。

如果我这样做

^/Some/Repository/Url ""

它抱怨它无效。这样:

^/Some/Repository/Url "\"

允许我保存它,但是当我尝试更新并获取我的外部时,它会打破

  

无法创建目录' Top Level Checkout\Project1\':文件名,   目录名称或卷标语法不正确。

如何告诉它将.dll下载到我设置外部的本地文件夹,而不是每次都想创建子文件夹?

最后,我还没有尝试在Top-level Checkout上设置外部属性,部分原因是因为我认为它仍然会告诉我它无法创建目录,但主要是因为这不可行这个项目的解决方案。

任何人都知道怎么做?

2 个答案:

答案 0 :(得分:2)

如果这些DLL文件驻留在同一个存储库中,则可以指定每个文件的全名,而不是放置它们的目录。这被称为"文件外部"。

所以你的规则看起来像是:

^/Some/Repository/URL/file1.dll file1.dll
^/Some/Repository/URL/file2.dll file2.dll
# ...
# etc.

答案 1 :(得分:0)

我忘了在这个问题上添加评论和内容。

我在svn:externals文档中阅读了一些深入的内容,发现它必须创建一个子文件夹。拥有IMO是一个荒谬的限制,但事实就是如此。

在这种情况下,我最终将外部文件放在顶级文件夹中。据我所知,它没有破坏任何东西,但我现在也没有在那个特定的项目上工作过。其他开发者没有抱怨。

此外,我还没有回答这个问题,因为还没有解决问题的方法。