1

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

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

但我的第二个电话Update没有奏效。它报告该操作是SvnNotifyAction.Skip并且没有任何内容写入工作副本。

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

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

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

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

4

1 回答 1

3

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

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

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

我通过尝试从 svn 命令行手动执行它发现了这一点(并且遇到了同样的问题。) svn help co提供了这个小线索: --parents :制作中间目录 我假设 UpdateParents 和 --parents 是等价的。到目前为止,一切都很好。

于 2013-02-20T14:09:25.977 回答