我编写了一个简单的 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 为“已修改”。提交文件后,返回原始行为(没有返回状态值)。