【问题标题】:How to check if file is under source control in SharpSvn?如何检查文件是否在 SharpSvn 中的源代码控制下?
【发布时间】:2010-10-26 12:06:23
【问题描述】:

您好,我使用 C# 和 SharpSvn 库。我想在使用 SvnClient.Add 添加文件之前检查文件是否受源代码控制。当我在已经在 SVN 下的文件上执行此操作时,我得到错误:“已经在版本控制之下”。

【问题讨论】:

    标签: c# svn sharpsvn


    【解决方案1】:

    这很好地展示了如何使用状态来做到这一点

    using(SvnClient client = new SvnClient())
    {
        SvnStatusArgs sa = new SvnStatusArgs();
        sa.Depth = SvnDepth.Empty; // Adjust this to check direct files, or (recursive) directories etc
    
        Collection<SvnStatusEventArgs> statuses;
        client.GetStatus("c:\\somefile.txt", sa, out statuses); 
    
        Assert.That(statuses.Count, Is.EqualTo(1));
        Assert.That(SvnStatus.NotVersioned, Is.EqualTo(statuses[0].LocalContentStatus));
    }
    

    【讨论】:

    • 如果您只需要知道文件是否在源代码控制下而不是文件是否被修改,使用 .GetInfo() 检查会便宜一些(io-wise)。
    • .Status() 将在文件可能已被修改的情况下进行文件比较,因此最坏的情况是,如果仅修改了 2 GByte 文件的最后一个字节,它可能几乎读取 2*2 GByte 以确定这。使用.Info(),您确信这永远不会发生。
    【解决方案2】:

    如果您只想知道文件是否受源代码控制,您可以使用.Info() / .GetInfo()。该方法通常更快,因为它不必检查文件自检出后是否已更改。

    【讨论】:

    • .Status() 将在文件可能已被修改的情况下进行文件比较,因此最坏的情况是,如果仅修改了 2 GByte 文件的最后一个字节,它可能几乎读取 2*2 GByte 以确定这。使用.Info(),您确信这永远不会发生。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    相关资源
    最近更新 更多