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); } }