コード例 #1
0
        public void SetOriginDescription(string fullDescription)
        {
            FullOriginDescription = fullDescription;

            var match = Regex.Match(fullDescription, "Your branch is based on .* but the upstream is gone.");
            if (match.Success)
            {
                OriginDescription = "Local Only";
                OriginStatus = GitOriginStatusEnum.LocalOnly;
                return;
            }

            match = Regex.Match(fullDescription, "Your branch is up-to-date with .*");
            if (match.Success)
            {
                OriginDescription = "Up-to-date";
                OriginStatus = GitOriginStatusEnum.UpToDate;
                return;
            }

            match = Regex.Match(fullDescription,
                @"Your branch is ahead of .* by (\d+) commit");
            if (match.Success)
            {
                OriginDescription = "Push(" + match.Groups[1] + ")";
                OriginStatus = GitOriginStatusEnum.Ahead;
                return;
            }

            match = Regex.Match(fullDescription,
                @"Your branch is behind .* by (\d+) commit");
            if (match.Success)
            {
                OriginDescription = "Pull(" + match.Groups[1] + ")";
                OriginStatus = GitOriginStatusEnum.Behind;
                return;
            }

            match = Regex.Match(fullDescription,
                @"Your branch and .* have diverged,and have (\d+) and (\d+) different commits? each, respectively.");
            if (match.Success)
            {
                OriginDescription = "Push(" + match.Groups[1] + ") Pull(" + match.Groups[2] + ")";
                OriginStatus = GitOriginStatusEnum.Diverged;
                return;
            }
        }
コード例 #2
0
 public void LoadFromGitOutput(IList<string> lines, IList<string> submodulePathList)
 {
     GitStatusMessageLines = new List<string>(lines);
     GitStatus = GitStatusEnum.Unknown;
     RemoveHints(lines);
     if (lines.Count < 2) return;
     ProcessBranchString(lines[0]);
     int localStatusLineIndex = 2;
     if (string.IsNullOrEmpty(Branch)) return;
     if (lines[1].StartsWith("Your branch"))
     {
         MergeDivergedLines(lines);
         SetOriginDescription(lines[1]);
         if (lines.Count < 3) return;
     }
     else
     {
         localStatusLineIndex = 1;
         OriginStatus = GitOriginStatusEnum.LocalOnly;
         OriginDescription = "Local Only";
     }
     ProcessLocalStatusLine(lines, localStatusLineIndex);
     SetSubmodulesFileType(submodulePathList);
     if (GitStatus != GitStatusEnum.MergeConflicts)
         GitStatus = GetStatusType();
 }