由于文件不存在,Sharp SVN 更新崩溃

Sharp SVN Update crashes because of non-existent file

目前我正在尝试从 svn 的嵌入式使用切换到 sharp svn 插件。我正在使用的程序确实工作并且做了它应该做的事情但是因为我尝试用 sharp svn 来做它在更新步骤崩溃了。

代码用 svn 命令做了 运行:

svn update localRepoPath

我确实已经找到了很多代码,但是 none 其中对我有用,目前是代码:

 using (SvnClient client = new SvnClient())
                    {
                        //Reporter creates standard svn output
                        StringBuilder strBuilder = new StringBuilder();
                        SvnClientReporter reporter = new SvnClientReporter(client, strBuilder);

                        SvnUpdateArgs asdf = new SvnUpdateArgs();
                        asdf.AllowObstructions = true;
                        asdf.Depth = SvnDepth.Infinity;
                        asdf.IgnoreExternals = true;
                        asdf.UpdateParents = true;
                        asdf.Revision = SvnRevision.Head;
                        asdf.ThrowOnError = false;

                        asdf.Conflict += new EventHandler<SvnConflictEventArgs>(asdf_Conflict);
                        asdf.SvnError += new EventHandler<SvnErrorEventArgs>(asdf_Error);
                        asdf.Notify += new EventHandler<SvnNotifyEventArgs>(asdf_Notify);
                        asdf.Progress += new EventHandler<SvnProgressEventArgs>(asdf_Progress);

                        client.Update(localRepoPath, asdf);
                        _logger.Info("Updated");
                        _logger.Info(strBuilder.ToString());
                    }

它没有更新任何东西。

当我将 asdf.ThrowOnError 中的 属性 更改为 true 时:

asdf.ThrowOnError = true;

日志输出为:

Unhandled Exception: SharpSvn.SvnSystemException: Can't open 'D:\workspace\MyRepository\trunk\.svn\tmp\svn-E2A597E3': The system cannot find the path specified.

但是这个文件'svn-E2A597E3'不存在,为什么要尝试更新这个文件?尝试更新此文件后失败,更新不会尝试更新存储库的其余部分。

如果它不尝试更新此文件或不停止更新,我该如何处理?

现在可以使用了!

我想更新的目录是一个 zip 文件,之前用 SharpZipLib 解压过。不幸的是,我提取此 Zip 文件的方法不正确,并且确实忽略了空目录。这一定是导致 svn 更新崩溃的原因。工作副本中不存在异常消息中的 "tmp" 文件夹。提取方法主体现在看起来像这样:

            FastZip fastZip = new FastZip();
            string fileFilter = ".*";
            fastZip.CreateEmptyDirectories = true;

            // Will always overwrite if target filenames already exist
            fastZip.ExtractZip(localZipFileNameAndPath, extractDir, fileFilter);