2

按照此处找到的代码: 如何检查文件是否在 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 上运行上述代码而不是我的代码片段中的给定路径时,输出显示 1 个总文件。

4

1 回答 1

2

所以事实证明 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);
于 2013-10-02T18:58:17.753 回答