SharpSvn:为什么从空深度校验中更新子文件夹被跳过?

时间:2013-02-19 21:26:10

标签: sharpsvn

我在使用SharpSvn(来自C#)从回购中挑出一些文件夹时遇到了一些麻烦。我这样做了:

client.CheckOut( uri, dir, new SvnCheckOutArgs() { Depth = SvnDepth.Empty } );
foreach( var folder in folders )
{
   client.Update( folder );
}

但我对Update的第二次电话不起作用。它报告该操作是 SvnNotifyAction.Skip ,并且没有任何内容写入工作副本。

uri 基本上类似于:svn://myserver/myrepo/mysdk dir 类似于C:\Test\mysdk。 (为了这个问题的目的,我已经更改了确切的名称,但在结构上它是相同的。)

然后第一个文件夹是C:\Test\mysdk\include(这可行)

然后第二个文件夹是C:\Test\mysdk\bin\v100\x86(这个没有更新)

为什么第一个文件可以工作但是当我获得第二个文件夹(嵌套子文件夹)时它不会更新?它报告它被跳过?但我不知道如何找出原因。

1 个答案:

答案 0 :(得分:3)

事实证明,更新嵌套子目录不起作用,因为父目录尚不存在,因此跳过了嵌套子目录更新。为了解决这个问题,我需要在Update中添加一个参数来表明它应该创建父目录。

(等效的svn命令行选项为--parents)。

client.Update( folder, new SvnUpdateArgs() { UpdateParents = true } );

我通过尝试从svn命令行手动执行此操作来发现这一点(并遇到了同样的问题。)svn help co提供了这个微小的线索: - parent:make intermediate directories I我假设UpdateParents和 - parent是等价的。到目前为止一切都很好。