コード例 #1
0
        internal void Add(GitStatusEntry entry, IComparer <StatusListEntry> sorter)
        {
            StatusListEntry statusEntry;

            if (UniGitPathHelper.IsMetaPath(entry.LocalPath))
            {
                string mainAssetPath = GitManager.AssetPathFromMeta(entry.LocalPath);
                if (!gitSettings.ShowEmptyFolders && gitManager.IsEmptyFolder(mainAssetPath))
                {
                    return;
                }

                int index = entries.FindIndex(e => e.LocalPath == mainAssetPath);
                if (index >= 0)
                {
                    StatusListEntry ent = entries[index];
                    ent.MetaChange |= MetaChangeEnum.Meta;
                    ent.State      |= entry.Status;
                    entries[index]  = ent;
                    return;
                }

                statusEntry = new StatusListEntry(mainAssetPath, entry.Status, MetaChangeEnum.Meta, CalculateFlags(entry));
            }
            else
            {
                int index = entries.FindIndex(e => e.LocalPath == entry.LocalPath);
                if (index >= 0)
                {
                    StatusListEntry ent = entries[index];
                    ent.State     |= entry.Status;
                    entries[index] = ent;
                    return;
                }

                statusEntry = new StatusListEntry(entry.LocalPath, entry.Status, MetaChangeEnum.Object, CalculateFlags(entry));
            }

            if (sorter != null)
            {
                AddSorted(statusEntry, sorter);
            }
            else
            {
                entries.Add(statusEntry);
            }
        }