我在使用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
(这个没有更新)
为什么第一个文件可以工作但是当我获得第二个文件夹(嵌套子文件夹)时它不会更新?它报告它被跳过?但我不知道如何找出原因。
答案 0 :(得分:3)
事实证明,更新嵌套子目录不起作用,因为父目录尚不存在,因此跳过了嵌套子目录更新。为了解决这个问题,我需要在Update中添加一个参数来表明它应该创建父目录。
(等效的svn命令行选项为--parents
)。
client.Update( folder, new SvnUpdateArgs() { UpdateParents = true } );
我通过尝试从svn命令行手动执行此操作来发现这一点(并遇到了同样的问题。)svn help co
提供了这个微小的线索: - parent:make intermediate directories I我假设UpdateParents和 - parent是等价的。到目前为止一切都很好。