2013-02-19 16 views
1

我在使用SharpSvn(来自C#)从一个回购库中挑出一些文件夹时遇到了一些麻烦。我这样做:SharpSvn:为什么从Empty Depth Checkout更新子文件夹被忽略?

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(这个不更新)

为什么第一个工作,但当我得到第二个文件夹(嵌套的子文件夹)它不会更新?它报告它被跳过?但我不知道如何弄清楚原因。

回答

3

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

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

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

我试图做手工从svn命令行发现了这个(和遇到同样的问题。)svn help co提供这个小小的线索:--parents:使中间目录我假设UpdateParents和 - 父母是等同的。到现在为止还挺好。