【发布时间】:2023-03-31 08:30:01
【问题描述】:
我编写了一个简单的 C# 应用程序,使用 SharpSVN 在尝试添加之前查询文件的状态。为此目的,我在各个地方看到的示例涉及调用 SvnClient 的 GetStatus 方法,将完整路径和 out 参数传递给 SvnStatusEventArgs 的集合。
我的理解是,对于一个文件,GetStatus 应该返回一个计数正好为 1 的 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);
statuses.Count 的值为零,而我期望 1 的 statuses[0].LocalContentStatus 值为 Normal。这种期望不正确吗?对于在源代码管理中引用文件 not 的路径的调用,该调用使用 NotVersioned 的 status[0].LocalContentStatus 值。
该路径被验证为工作副本,并且文件 Program.cs 实际上已在 Subversion 中登记。我正在运行 SharpSVN 版本 1.7005.2163.13448 和 VS2010。
非常感谢您解决了我明显的困惑。
编辑更多信息:在修改但未提交 Program.cs 之后,相同的代码 sn-p 现在返回单个状态值,其 LocalContentStatus 为“已修改”。提交文件后,返回原始行为(没有返回状态值)。
【问题讨论】:
-
.Status() 和 .GetStatus() 只返回“有趣”的状态节点。您可以通过在 args 对象上设置 .RetrieveAllEntries 使其返回所有节点。
-
这是很棒的信息,伯特。下次有机会我会尝试并提供建议。