GitCommands.GitCommands.GetStagedFiles C# (CSharp) Method

GetStagedFiles() public static method

public static GetStagedFiles ( ) : List
return List
        public static List<GitItemStatus> GetStagedFiles()
        {
            var status = RunCmd(Settings.GitCommand, "diff -z --cached --name-status");

            var gitItemStatusList = new List<GitItemStatus>();

            if (status.Length < 50 && status.Contains("fatal: No HEAD commit to compare"))
            {
                status = RunCmd(Settings.GitCommand, "status --untracked-files=no");

                var statusStrings = status.Split('\n');

                foreach (var statusString in statusStrings)
                {
                    if (statusString.StartsWith("#\tnew file:"))
                    {
                        ProcessStatusNewFile(statusString, gitItemStatusList);
                    }
                }
            }
            else
            {
                var statusStrings = status.Split(new char[] { '\0', '\n' }, StringSplitOptions.RemoveEmptyEntries);
                for (int n = 0; n + 1 < statusStrings.Length; n = n + 2)
                {
                    if (string.IsNullOrEmpty(statusStrings[n]))
                        continue;

                    gitItemStatusList.Add(
                        new GitItemStatus
                            {
                                Name = statusStrings[n + 1].Trim(),
                                IsNew = statusStrings[n] == "A",
                                IsChanged = statusStrings[n] == "M",
                                IsDeleted = statusStrings[n] == "D",
                                IsTracked = true
                            });
                }
            }

            return gitItemStatusList;
        }
GitCommands