コード例 #1
0
        public RepositoryState GetLocalState()
        {
            var remoteFiles = Directory.FileExists(treeFilePath)
                ? ParseTreeFile().Select(f => f.Path)
                : new string[0];
            var addedFiles    = new List <string>();
            var modifiedFiles = new List <string>();
            var allLocalFiles = new List <string>();

            DoForAllLocalFiles(file =>
            {
                allLocalFiles.Add(file);

                if (!remoteFiles.Contains(file))
                {
                    addedFiles.Add(file);
                }
                else if (Directory.IsModified(file))
                {
                    modifiedFiles.Add(file);
                }
            });

            var deletedFiles = remoteFiles.Except(allLocalFiles);

            return(new RepositoryState()
            {
                AddedFiles = addedFiles.ToArray(),
                ModifiedFiles = modifiedFiles.ToArray(),
                DeletedFiles = deletedFiles.ToArray()
            });
        }