对于版本化文件,SvnClient.GetStatus(path,args,statuses)返回0?

Dav*_*d W 5 .net c# svn sharpsvn

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

我的理解是,对于一个文件,GetStatus应该返回一个SvnStatusEventArgs集合,其集合只有一个,其状态包括NotVersioned,Missing,Normal等.

在我的应用程序中,我将GetStatus调用到源代码管理下的文件时返回Collection计数为零.

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

statuses.Count的值为零,当我期望1具有状态[0] .LocalContentStatus值为Normal时.这种期望是不正确的?对于引用不在源代码管理中的文件的路径的调用,该调用使用状态[0] .LocalContentStatus值NotVersioned.

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

非常感谢您清除我明显的困惑.

编辑更多信息:修改但不提交Program.cs后,这个相同的代码片段现在返回一个LocalContentStatus为"Modified"的状态值.提交文件后,返回原始行为(无返回状态值).

Dav*_*d W 6

根据Bert Huijben的反馈意见,延迟获得答案.我在这里发布答案只是为了每个人的利益.

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

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

非常感谢.