public bool IsLessThan(GitVersion other) { return(this.CompareVersionNumbers(other) < 0); }
public static bool TryParseInstallerName(string input, string installerExtension, out GitVersion version) { // Installer name is of the form // Git-2.14.1.scalar.1.1.gb16030b-64-bit.exe version = null; if (!input.StartsWith("Git-", StringComparison.InvariantCultureIgnoreCase)) { return(false); } if (!input.EndsWith("-64-bit" + installerExtension, StringComparison.InvariantCultureIgnoreCase)) { return(false); } return(TryParseVersion(input.Substring(4, input.Length - 15), out version)); }
public static bool TryParseVersion(string input, out GitVersion version) { version = null; int major, minor, build, revision = 0, minorRevision = 0; int? rc = null; string platform = null; if (string.IsNullOrWhiteSpace(input)) { return(false); } string[] parsedComponents = input.Split('.'); int numComponents = parsedComponents.Length; // We minimally accept the official Git version number format which // consists of three components: "major.minor.build" or "major.minor.build-rc<N>". // // The other supported formats are the Git for Windows and Microsoft Git // formats which look like: "major.minor.build.platform.revision.minorRevision" // or "major.minor.build-rc<N>.platform.revision.minorRevision". // 0 1 2 3 4 5 // len 1 2 3 4 5 6 // if (numComponents < 3) { return(false); } // Major version if (!TryParseComponent(parsedComponents[0], out major)) { return(false); } // Minor version if (!TryParseComponent(parsedComponents[1], out minor)) { return(false); } // Check if this is a release candidate version and if so split // it from the build number. string[] buildParts = parsedComponents[2].Split("-rc", StringSplitOptions.RemoveEmptyEntries); if (buildParts.Length > 1 && TryParseComponent(buildParts[1], out int rcInt)) { rc = rcInt; } // Build number if (!TryParseComponent(buildParts[0], out build)) { return(false); } // Take the platform component verbatim if (numComponents >= 4) { platform = parsedComponents[3]; } // Platform revision if (numComponents < 5 || !TryParseComponent(parsedComponents[4], out revision)) { revision = 0; } // Minor platform revision if (numComponents < 6 || !TryParseComponent(parsedComponents[5], out minorRevision)) { minorRevision = 0; } version = new GitVersion(major, minor, build, platform, revision, minorRevision, rc); return(true); }