5

我编写了一个简单的 C# 应用程序,使用 SharpSVN 在尝试添加之前查询文件的状态。为此目的,我在各个地方看到的示例涉及调用 SvnClient 的 GetStatus 方法,将完整路径和输出参数传递给 SvnStatusEventArgs 集合。

我的理解是,对于一个文件,GetStatus 应该返回一个 SvnStatusEventArgs 集合,该集合的计数正好为 1,状态为 NotVersioned、Missing、Normal 等。

在我的应用程序中,我对源代码控制下的文件的 GetStatus 调用返回 Collection count of zero

        SvnClient foo = new SvnClient();
        Collection<SvnStatusEventArgs> statuses;
        foo.GetStatus("C:\\Temp\\svnu\\Program.cs", new SvnStatusArgs {Depth = SvnDepth.Empty}, out statuses);

statuses.Count 的值为零,而我期望 1 的 statuses[0].LocalContentStatus 值为 Normal。这种期望不正确吗?对于引用不在源代码管理中的文件的路径的调用,该调用使用 NotVersioned 的 status[0].LocalContentStatus 值。

该路径被验证为工作副本,并且文件 Program.cs 实际上已在 Subversion 中登记。我正在运行 SharpSVN 版本 1.7005.2163.13448 和 VS2010。

非常感谢您解决了我明显的困惑。

编辑更多信息:在修改但未提交 Program.cs 后,此相同的代码片段现在返回单个状态值,LocalContentStatus 为“已修改”。提交文件后,返回原始行为(没有返回状态值)。

4

1 回答 1

6

对根据 Bert Huijben 的反馈延迟发布答案表示歉意。为了大家的利益,我在这里发布答案仅供参考。

实际上,修改原始 GetStatus 调用以设置RetrieveAllEntriesSvnStatusArgs 对象的属性确实解决了这个问题,并导致文件的本地(但无趣 :) )副本的返回状态计数为 1,.LocalContentStatus 为“正常” ,“ 如预期的。

foo.GetStatus("C:\\Temp\\svnu\\Program.cs", new SvnStatusArgs {Depth = SvnDepth.Empty,
                                                               RetrieveAllEntries = true}, out statuses);

非常感谢。

于 2012-07-18T17:58:09.393 回答