code: func (r Release) Cmp(o Release) int {
  	if r.Year < o.Year {
  		return -1
  	} else if r.Year > o.Year {
  		return 1
  	}
  
  	if r.Month < o.Month {
  		return -1
  	} else if r.Month > o.Month {
  		return 1
  	}
  
  	if r.Iteration < o.Iteration {
  		return -1
  	} else if r.Iteration > o.Iteration {
  		return 1
  	}
  
  	if r.Extra == "" {
  		if o.Extra != "" {
  			return -1
  		}
  	}
  
  	if o.Extra == "" {
  		if r.Extra != "" {
  			return 1
  		}
  	}
  
  	if r.Extra != "" && o.Extra != "" {
  		if r.Extra != o.Extra {
  			return -1
  		}
  	}
  
  	return 0
  }
docs: // Cmp compares two releases. It returns -1 if r is an older release
  // than o, 0 if they are the same release, and 1 if r is a later
  // release. If the releases are the same except for extra (which is
  // typically a git hash and some other tag), there isn't a way to
  // determine which release comes first, so the return value will be
  // -1.