private int compareToTag(GitVersion that) {
        if (this.containsTag() && that.containsTag())
            return this.getTag().compareTo(that.getTag());
        else if (!this.containsTag() && !that.containsTag())
            return SAME;
        else if (this.containsTag() && !that.containsTag())
            return PREVIOUS;
        else
            return LATER;
    }
private int compareToTag(GitVersion that) {
        if (this.containsTag() && that.containsTag())
            return this.getTag().compareTo(that.getTag());
        else if (!this.containsTag() && !that.containsTag())
            return SAME;
        else if (this.containsTag() && !that.containsTag())
            return PREVIOUS;
        else
            return LATER;
    }
private int compareToTag ( GitVersion that ) { if ( this . containsTag ( ) && that . containsTag ( ) ) return this . getTag ( ) . compareTo ( that . getTag ( ) ) ; else if ( ! this . containsTag ( ) && ! that . containsTag ( ) ) return SAME ; else if ( this . containsTag ( ) && ! that . containsTag ( ) ) return PREVIOUS ; else return LATER ; }
Compares tag values given that git version contains no minor release
for none of GitVersion objects
<p/>
When both contain a tag or not contain  it the comparison is easy but
if only one of them contains it the release that doesn't contains it
is the one released earlier
<p/>
e.g. v1.8.0-rc0 is previous to v1.8.0

@param that
@return SAME if both are equal, LATER if that is previous to this or PREVIOUS otherwise
Compares tag values given that git version contains no minor release for none of GitVersion objects <p / > When both contain a tag or not contain it the comparison is easy but if only one of them contains it the release that doesn t contains it is the one released earlier <p / > e . g . v1 . 8 . 0 - rc0 is previous to v1 . 8 . 0