private void RecursiveScan(string relDir,
                                   ProcessSvnFileCallback processFileCallback,
                                   ProcessSvnFileCallback processDirCallback)
        {
            string absDir = Path.Combine(_path, relDir);
            string svnDir = Path.Combine(absDir, SvnDirName);

            if (!Directory.Exists(svnDir))
            {
                return;
            }
            WCEntries wce = WCEntries.FromFile(Path.Combine(svnDir, _svnEntriesFile));

            foreach (Entry e in wce.Entries)
            {
                if (e.Kind == EntryKind.file)
                {
                    string propsFile = Path.Combine(absDir, string.Format(
                                                        _svnPropsFileTemplate, e.Name));
                    IDictionary props = new Hashtable();
                    if (File.Exists(propsFile))
                    {
                        FillFromHashToDisk(propsFile, props);
                    }
                    processFileCallback(Path.Combine(relDir, e.Name), props);
                }
                else if ((e.Kind == EntryKind.dir) && (e.Name != ""))
                {
                    string relDirName = Path.Combine(relDir, e.Name);
                    if (processDirCallback != null)
                    {
                        IDictionary dirProps = new Hashtable();
                        string      dps      = Path.Combine(absDir, _svnDirPropsFile);
                        if (File.Exists(dps))
                        {
                            FillFromHashToDisk(dps, dirProps);
                        }
                        processDirCallback(relDirName, dirProps);
                    }
                    RecursiveScan(relDirName, processFileCallback, processDirCallback);
                }
            }
        }
 public void Scan(ProcessSvnFileCallback processFileCallback,
                  ProcessSvnFileCallback processDirCallback)
 {
     RecursiveScan("", processFileCallback, processDirCallback);
 }
 public void Scan(ProcessSvnFileCallback processFileCallback)
 {
     Scan(processFileCallback, null);
 }