コード例 #1
0
ファイル: GitManager.cs プロジェクト: wuzhangwuzhang/UniGit
            private void AddRecursive(int entryNameIndex, Dictionary <string, StatusTreeEntry> entries)
            {
                StatusTreeEntry entry;
                string          pathChunk = currentPathArray[entryNameIndex].Replace(".meta", "");

                //should a state change be marked at this level (inverse depth)
                //bool markState = Settings.ProjectStatusOverlayDepth < 0 || (Mathf.Abs(currentPathArray.Length - entryNameIndex)) <= Math.Max(1, Settings.ProjectStatusOverlayDepth);
                //markState = true;
                if (entries.TryGetValue(pathChunk, out entry))
                {
                    entry.State = entry.State.SetFlags(currentStatus, true);
                }
                else
                {
                    entry       = new StatusTreeEntry(entryNameIndex);
                    entry.State = entry.State.SetFlags(currentStatus);
                    entries.Add(pathChunk, entry);
                }
                //check if it's at a allowed depth for status forcing on folders
                if (currentPathArray.Length - entryNameIndex < (Settings.ProjectStatusOverlayDepth + 1))
                {
                    entry.forceStatus = true;
                }
                if (entryNameIndex < currentPathArray.Length - 1)
                {
                    AddRecursive(entryNameIndex + 1, entry.SubEntiEntries);
                }
            }
コード例 #2
0
            private void AddRecursive(int entryNameIndex, string[] path, Dictionary <string, StatusTreeEntry> entries, FileStatus fileStatus)
            {
                StatusTreeEntry entry;
                string          pathChunk = path[entryNameIndex].Replace(".meta", "");

                if (entries.TryGetValue(pathChunk, out entry))
                {
                    entry.State = entry.State.SetFlags(fileStatus, true);
                }
                else
                {
                    entry = new StatusTreeEntry(fileStatus);
                    entries.Add(pathChunk, entry);
                }
                if (entryNameIndex < path.Length - 1)
                {
                    AddRecursive(entryNameIndex + 1, path, entry.SubEntiEntries, fileStatus);
                }
            }
コード例 #3
0
            private void AddSubModuleRecursive(int entryNameIndex, Dictionary <string, StatusTreeEntry> entries)
            {
                StatusTreeEntry entry;
                string          pathChunk = currentPathArray[entryNameIndex].Replace(".meta", "");

                if (!entries.TryGetValue(pathChunk, out entry))
                {
                    entry = new StatusTreeEntry(entryNameIndex);
                    entries.Add(pathChunk, entry);
                }

                if (entryNameIndex < currentPathArray.Length - 1)
                {
                    AddSubModuleRecursive(entryNameIndex + 1, entry.SubEntiEntries);
                }
                else
                {
                    entry.isSubModule     = true;
                    entry.SubmoduleStatus = currentSubModuleStatus;
                    entry.forceStatus     = true;
                }
            }
コード例 #4
0
ファイル: GitManager.cs プロジェクト: wuzhangwuzhang/UniGit
            private void GetStatusRecursive(int entryNameIndex, string[] path, Dictionary <string, StatusTreeEntry> entries, out StatusTreeEntry entry)
            {
                if (path.Length <= 0)
                {
                    entry = null;
                    return;
                }
                StatusTreeEntry entryTmp;

                if (entries.TryGetValue(path[entryNameIndex], out entryTmp))
                {
                    if (entryNameIndex < path.Length - 1)
                    {
                        GetStatusRecursive(entryNameIndex + 1, path, entryTmp.SubEntiEntries, out entry);
                        return;
                    }
                    entry = entryTmp;
                    return;
                }

                entry = null;
            }