【问题标题】:SvnClient.GetStatus(path, args, statuses) returning 0 for versioned file?SvnClient.GetStatus(path, args, statuses) 为版本化文件返回 0?
【发布时间】: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 使其返回所有节点。
  • 这是很棒的信息,伯特。下次有机会我会尝试并提供建议。

标签: c# .net svn sharpsvn


【解决方案1】:

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

修改原始 GetStatus 调用以设置 SvnStatusArgs 对象的 RetrieveAllEntries 属性确实解决了这个问题,并导致本地(但无趣 :) )文件副本的返回状态计数为 1,其中一个 .LocalContentStatus 为“正常”,根据需要。

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

非常感谢。

【讨论】:

  • 你的意思是RetrieveAllEntries
猜你喜欢
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 2023-03-13
  • 2021-03-15
  • 2020-05-20
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多