代码之家  ›  专栏  ›  技术社区  ›  sab669

SharpSVN不迭代所有子目录和文件

  •  2
  • sab669  · 技术社区  · 12 年前

    遵循此处找到的代码: 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上运行上述代码,而不是在代码片段中的给定路径上运行时,输出显示总共1个文件。

    1 回复  |  直到 8 年前
        1
  •  2
  •   sab669    12 年前

    因此,SvnStatusArgs类有一个默认为false的“RetrieveAllEntries”布尔标志。

    顾名思义,将此设置为true将返回每个文件,无论该文件是已修改/未转换的还是最新的。

    在我最初的帖子中,CheckSVN()方法中多了一行:

            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);
    
    推荐文章