【问题标题】:SharpSVN not iterating over all subdirectories and filesSharpSVN 没有遍历所有子目录和文件
【发布时间】:2013-10-09 06:09:26
【问题描述】:

按照此处找到的代码: How to check if file is under source control in SharpSvn?

我正在尝试制作一个小型实用程序,它将遍历指定文件夹并打印出所有文件的状态。

    private void btnCheckSVN_Click(object sender, EventArgs e)
    {
        ParseSVNResults(CheckSVN());
    }

    private Collection<SvnStatusEventArgs> CheckSVN()
    {
        string path = @"C:\AMG\trunk\AMC";
        if (!Directory.Exists(path))
            return null;

        DevExpress.Utils.WaitDialogForm wait = new DevExpress.Utils.WaitDialogForm();
        wait.Caption = "Please wait, loading SVN file statuses. This may take a moment.";
        wait.Caption += Environment.NewLine + path;
        wait.Show();

        SvnClient client = new SvnClient();
        SvnStatusArgs sa = new SvnStatusArgs();
        sa.Depth = SvnDepth.Infinity;
        Collection<SvnStatusEventArgs> statuses;

        client.GetStatus(path, sa, out statuses);

        wait.Close();
        return statuses;
    }

    private void ParseSVNResults(Collection<SvnStatusEventArgs> results)
    {
        if (results == null)
            return;

        int modified = 0;
        int unversioned = 0;
        foreach (SvnStatusEventArgs item in results)
        {
            memoEditSVNFiles.Text += item.LocalContentStatus.ToString() + " -- " + item.Path + Environment.NewLine;

            if (item.LocalContentStatus.ToString() == "Modified")
                modified++;
            else if (item.LocalContentStatus.ToString() == "NotVersioned")
                unversioned++;
        }

        memoEditSVNFiles.Text += Environment.NewLine + "Modified: " + modified + Environment.NewLine;
        memoEditSVNFiles.Text += "Not Versioned: " + unversioned + Environment.NewLine;
        memoEditSVNFiles.Text += "Total: " + results.Count;
    }

当代码执行时,我总共得到 147 个文件和文件夹。实际文件夹有几千个文件。是否有可能我正在查看 太多 文件,而 SharpSVN 会在一段时间后退出?

编辑;我只是尝试创建大约 100 个文本文件并将 30 个放入 3 个文件夹,然后“嵌套”它们。所以我有;

C:\AMG\trunk\test 有大约 30 个文件 C:\AMG\trunk\test\Folder1 有大约 30 个文件 C:\AMG\trunk\test\Folder1\Sub 有另外 30 个

如果不将其提交到存储库,当我在 C:\AMG\trunk\test 上运行上述代码而不是我的代码 sn-p 中的给定路径时,输出显示 1 个总文件。

【问题讨论】:

    标签: c# .net winforms .net-3.5 sharpsvn


    【解决方案1】:

    所以事实证明 SvnStatusArgs 类有一个默认为 false 的“RetrieveAllEntries”布尔标志。

    顾名思义,设置为 true 会返回每个文件,无论是修改/未版本化的还是最新的。

    在我原来的帖子中的 CheckSVN() 方法中增加了 1 行:

            SvnClient client = new SvnClient();
            SvnStatusArgs sa = new SvnStatusArgs();
            sa.Depth = SvnDepth.Infinity;
            sa.RetrieveAllEntries = true; //the new line
            Collection<SvnStatusEventArgs> statuses;
    
            client.GetStatus(path, sa, out statuses);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-01
      • 2015-03-05
      • 1970-01-01
      • 2019-01-10
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多