CompareTo() public method

Relies only on OrderedVersion.
public CompareTo ( ReleaseTagVersion other ) : int
other ReleaseTagVersion Other release tag (can be null).
return int
Beispiel #1
0
 public void AddSameTree(TagCommit otherCommit)
 {
     Debug.Assert(this != otherCommit);
     Debug.Assert((_nextSameTree == null && _headSameTree == null) || (_nextSameTree != null && _headSameTree != null && _nextSameTree._headSameTree == _headSameTree));
     if (_headSameTree == null)
     {
         if (otherCommit._headSameTree == null)
         {
             _headSameTree             = this;
             otherCommit._headSameTree = this;
             _nextSameTree             = otherCommit;
             if (_thisTag.CompareTo(otherCommit._thisTag) < 0)
             {
                 _bestTagCommit = otherCommit;
             }
             else
             {
                 _bestTagCommit = this;
             }
         }
         else
         {
             otherCommit._headSameTree.AddSameTreeFromHead(this);
         }
     }
     else
     {
         _headSameTree.AddSameTreeFromHead(otherCommit);
     }
 }
Beispiel #2
0
        void RegisterOneTag(StringBuilder errors, Commit c, string tagName, Func <Commit, ReleaseTagParsingMode> analyseInvalidTagSyntax, ref bool startingVersionForCSemVerFound)
        {
            ReleaseTagParsingMode mode = analyseInvalidTagSyntax == null ? ReleaseTagParsingMode.IgnoreMalformedTag : analyseInvalidTagSyntax(c);
            ReleaseTagVersion     v    = ReleaseTagVersion.TryParse(tagName, mode == ReleaseTagParsingMode.RaiseErrorOnMalformedTag);

            if (v.IsMalformed)
            {
                // Parsing in strict mode can result in malformed tag. We can not assume that here:
                // Debug.Assert( mode == ReleaseTagParsingMode.RaiseErrorOnMalformedTag );
                if (mode == ReleaseTagParsingMode.RaiseErrorOnMalformedTag)
                {
                    errors.AppendFormat("Malformed {0} on commit '{1}'.", v.ParseErrorMessage, c.Sha).AppendLine();
                }
                return;
            }
            if (v.IsValid)
            {
                if (_startingVersionForCSemVer != null)
                {
                    int cmp = _startingVersionForCSemVer.CompareTo(v);
                    if (cmp == 0)
                    {
                        startingVersionForCSemVerFound = true;
                    }
                    else if (cmp > 0)
                    {
                        // This version is smaller than the StartingVersionForCSemVer:
                        // we ignore it.
                        return;
                    }
                }
                if (mode == ReleaseTagParsingMode.RaiseErrorOnMalformedTagAndNonStandardPreReleaseName && v.IsPreRelease && !v.IsPreReleaseNameStandard)
                {
                    errors.AppendFormat("Invalid PreRelease name in '{0}' on commit '{1}'.", v.OriginalTagText, c.Sha).AppendLine();
                    return;
                }
                TagCommit tagCommit;
                if (_collector.TryGetValue(c.Sha, out tagCommit))
                {
                    tagCommit.AddCollectedTag(v);
                }
                else
                {
                    _collector.Add(c.Sha, tagCommit = new TagCommit(c, v));
                }
            }
        }