version.go (2366B)
1 // Copyright 2019 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // Package version records versioning information about this module. 6 package version 7 8 import ( 9 "fmt" 10 "strings" 11 ) 12 13 // These constants determine the current version of this module. 14 // 15 // For our release process, we enforce the following rules: 16 // - Tagged releases use a tag that is identical to String. 17 // - Tagged releases never reference a commit where the String 18 // contains "devel". 19 // - The set of all commits in this repository where String 20 // does not contain "devel" must have a unique String. 21 // 22 // Steps for tagging a new release: 23 // 24 // 1. Create a new CL. 25 // 26 // 2. Update Minor, Patch, and/or PreRelease as necessary. 27 // PreRelease must not contain the string "devel". 28 // 29 // 3. Since the last released minor version, have there been any changes to 30 // generator that relies on new functionality in the runtime? 31 // If yes, then increment RequiredGenerated. 32 // 33 // 4. Since the last released minor version, have there been any changes to 34 // the runtime that removes support for old .pb.go source code? 35 // If yes, then increment SupportMinimum. 36 // 37 // 5. Send out the CL for review and submit it. 38 // Note that the next CL in step 8 must be submitted after this CL 39 // without any other CLs in-between. 40 // 41 // 6. Tag a new version, where the tag is is the current String. 42 // 43 // 7. Write release notes for all notable changes 44 // between this release and the last release. 45 // 46 // 8. Create a new CL. 47 // 48 // 9. Update PreRelease to include the string "devel". 49 // For example: "" -> "devel" or "rc.1" -> "rc.1.devel" 50 // 51 // 10. Send out the CL for review and submit it. 52 const ( 53 Major = 1 54 Minor = 30 55 Patch = 0 56 PreRelease = "" 57 ) 58 59 // String formats the version string for this module in semver format. 60 // 61 // Examples: 62 // 63 // v1.20.1 64 // v1.21.0-rc.1 65 func String() string { 66 v := fmt.Sprintf("v%d.%d.%d", Major, Minor, Patch) 67 if PreRelease != "" { 68 v += "-" + PreRelease 69 70 // TODO: Add metadata about the commit or build hash. 71 // See https://golang.org/issue/29814 72 // See https://golang.org/issue/33533 73 var metadata string 74 if strings.Contains(PreRelease, "devel") && metadata != "" { 75 v += "+" + metadata 76 } 77 } 78 return v 79 }