SharpSVN覆盖现有文件和文件夹

时间:2014-02-13 18:20:21

标签: c# svn sharpsvn

我必须在初始结账前跟踪本地机器上的目录结构:

base_dir/somefolder/someotherfolder/file.txt

结帐后我想要以下内容:

base_dir/somefolder/someotherfolder/file.txt
base_dir/somefolder/checked_out_folder/new_file.txt

所以基本上结账时将新文件添加到现有目录中。但是,我无法与SharpSvn合作。签出时,它会下载所有非本地存在的文件,不会触及本地已存在的文件或文件夹。

TortoiseSvn似乎能够做到这一点。我已经阅读了here它应该以某种方式工作,但是就像那个要求指出的人一样,将选项AllowObstructions设置为true不会做任何事情。

我的结帐代码(我使用的是SharpSVN 1.7):

using (SvnClient client = new SvnClient()) {
   client.Progress += new EventHandler<SvnProgressEventArgs>(cl_Progress);
   SvnCheckOutArgs sco = new SvnCheckOutArgs();
   sco.Depth = SvnDepth.Infinity;
   sco.AllowObstructions = true;
   client.CheckOut(from, to, out result);
}

我不知道该怎么做,关于SharpSvn的文档很薄。我希望这里的人可以帮助我。

1 个答案:

答案 0 :(得分:1)

即使使用.AllowObstructions,仍然可能会发生冲突。

E.g。使用AllowObstructions,已存在的本地文件将作为新文件的修改版本保留。但是如果在其位置添加目录,则会发生树冲突。

(我真的建议不要使用.AllowObstructions,这样可以轻松地将新文件提交到另一个文件而不会注意到你不小心这样做了)

在不止一些情况下,您可能会遇到阻碍或跳过,因此您应该真正查看通知(客户端上的.Notify事件或args对象)或更新后的状态。

即使结帐到空目录(或不存在的位置)也可能导致冲突......例如如果svn:externals定义存在问题。