1

我正在尝试获取位于网络共享上的 SVN 存储库工作副本的存储库 URL:\\host\D\directory\

正在执行以下代码:

SvnClient svnClient = new SharpSvn.SvnClient();
SvnInfoEventArgs svnInfo;
svnClient.GetInfo(SvnTarget.FromString("\\\\host\\D\\directory\\"), out svnInfo);
Uri repositoryUrl = svnInfo.Uri;

我在GetInfo()方法上遇到了这个错误:

'\host\D' does not exist
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: SharpSvn.SvnException: '\host\D' does not exist

堆栈跟踪:

[SvnException: '\host\D' does not exist]

[SvnInvalidNodeKindException: '\host\D' is not a working copy]
   SharpSvn.SvnClientArgs.HandleResult(SvnClientContext client, SvnException error) +232
   SharpSvn.SvnClientArgs.HandleResult(SvnClientContext client, svn_error_t* error) +80
   SharpSvn.SvnClient.Info(SvnTarget target, SvnInfoArgs args, EventHandler`1 infoHandler) +443
   SharpSvn.SvnClient.GetInfo(SvnTarget target, SvnInfoEventArgs& info) +117

你知道什么时候会出错,或者你知道一些更好的方法来使用 SharpSvn 吗?

4

3 回答 3

0

这是一个特定于 SVN 的异常 (SvnInvalidNodeKindException),而不是 Tortoise 异常。但是如果你安装 Tortoise,或者使用 .NET 的 SharpSVN 库与 SVN 集成,你可能会得到这个。

问题是您提交的路径太长。有两种奇怪的行为。如果您的本地工作副本的 Windows 长度太长,SVN 将检查无效文件(不确定总是),但您不会得到异常。您将看到的另一种行为是,如果您尝试通过提交来替换文件,SVN 将抛出此异常 (SvnInvalidNodeKindException) 并且会说['\\folder\\folder\\' is not a working copy并且不会提交任何内容。

解决方案:

缩短路径到更短的东西。我不知道最大值是多少,但我想它与基于 Windows API 的文件路径上的最大长度相同。微软从未解决过这个问题,今天仍然是一个问题。我很久以前在Windows中发布过这个问题,但找不到该帖子。

于 2014-12-03T00:06:20.140 回答
0

Subversion 1.6 在其一些代码路径中自动将 \path\subpath\ 规范化为 \path\subpath。这使得无法在 UNC 路径和/或驱动器根目录中使用工作副本。

在 Subversion 1.7 中,这些问题得到了解决,现在这两种情况都得到了完全支持。(但出于性能原因,我们仍然建议在本地硬盘上使用工作副本)

于 2012-09-09T16:34:18.200 回答
0

此“不是工作副本”异常的原因可能是您的 svn 客户端的设置使用 _svn 而不是 .svn 目录。

检查您是否在 svn 客户端设置下使用了正确的扩展。

于 2011-06-29T21:43:32.633 回答