SvnClient.GetStatus(path, args, statuses) 返回版本文件的值为0?

5
我使用SharpSVN编写了一个简单的C#应用程序,以在尝试添加文件之前查询其状态。我在各个地方看到了很多针对此目的的示例,它们涉及调用SvnClient的GetStatus方法,传入完整路径和一个SvnStatusEventArgs集合的输出参数。
我的理解是,对于一个文件,GetStatus应该返回一个SvnStatusEventArgs集合,其中计数为一,状态包括NotVersioned、Missing、Normal等。
在我的应用程序中,我调用GetStatus来查询源代码控制下的文件,但返回的集合计数为零。
        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。这个期望是否不正确?对于引用未在源代码控制中的文件的路径调用,使用status [0] .LocalContentStatus值为NotVersioned的状态可以正常工作。
已验证该路径为工作副本,并且确实在Subversion中注册了Program.cs文件。我正在运行SharpSVN版本1.7005.2163.13448和VS2010。
非常感谢您提前澄清我的明显困惑。
编辑:更多信息:修改但未提交Program.cs后,此相同的代码片段现在返回一个具有“Modified” LocalContentStatus的状态值。提交文件后,原始行为(未返回状态值)返回。

2
.Status() 和 .GetStatus() 只返回“有趣”的状态节点。您可以通过在 args 对象上设置 .RetrieveAllEntries 来使其返回所有节点。 - Bert Huijben
太好了,Bert。我会尝试并在下一个机会提供建议。 - David W
1个回答

6

很抱歉因为Bert Huijben的反馈导致答案发布延迟,现在我将答案发布在这里,以供大家参考。

将原始的GetStatus调用修改为设置SvnStatusArgs对象的RetrieveAllEntries属性,实际上解决了这个问题,并且使得本地(但无趣的 :) )文件拥有一个返回状态计数为1,.LocalContentStatus为“Normal”,正如所期望的那样。

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

非常感谢。

许多感谢。


你是说 RetrieveAllEntries - Little Endian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接