예제 #1
0
        public static bool TryParseInstallerName(string input, string installerExtension, out GitVersion version)
        {
            // Installer name is of the form
            // Git-2.14.1.gvfs.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));
        }
예제 #2
0
파일: GitVersion.cs 프로젝트: yyqyu/GVFS
 public bool IsLessThan(GitVersion other)
 {
     return(this.CompareVersionNumbers(other) < 0);
 }
예제 #3
0
        public static bool TryParseVersion(string input, out GitVersion version)
        {
            version = null;

            int    major, minor, build, revision = 0, minorRevision = 0;
            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".
            //
            // The other supported formats are the Git for Windows and Microsoft Git
            // formats which look like: "major.minor.build.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);
            }

            // Build number
            if (!TryParseComponent(parsedComponents[2], 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);
            return(true);
        }