doc: Add policy about version numbers for VCS snapshots.
* doc/guix.texi (Version Numbers): Add paragraphs about VCS snapshot version numbers.
This commit is contained in:
		
							parent
							
								
									24a8ef3ba1
								
							
						
					
					
						commit
						880d647d0f
					
				
					 1 changed files with 34 additions and 0 deletions
				
			
		|  | @ -10131,6 +10131,40 @@ If we also wanted GTK+ 3.8.2, this would be packaged as | ||||||
|     ...)) |     ...)) | ||||||
| @end example | @end example | ||||||
| 
 | 
 | ||||||
|  | @c See <https://lists.gnu.org/archive/html/guix-devel/2016-01/msg00425.html>, | ||||||
|  | @c for a discussion of what follows. | ||||||
|  | @cindex version number, for VCS snapshots | ||||||
|  | Occasionally, we package snapshots of upstream's version control system | ||||||
|  | (VCS) instead of formal releases.  This should remain exceptional, | ||||||
|  | because it is up to upstream developers to clarify what the stable | ||||||
|  | release is.  Yet, it is sometimes necessary.  So, what should we put in | ||||||
|  | the @code{version} field? | ||||||
|  | 
 | ||||||
|  | Clearly, we need to make the commit identifier of the VCS snapshot | ||||||
|  | visible in the version string, but we also need to make sure that the | ||||||
|  | version string is monotonically increasing so that @command{guix package | ||||||
|  | --upgrade} can determine which version is newer.  Since commit | ||||||
|  | identifiers, notably with Git, are not monotonically increasing, we add | ||||||
|  | a revision number that we increase each time we upgrade to a newer | ||||||
|  | snapshot.  The resulting version string looks like this: | ||||||
|  | 
 | ||||||
|  | @example | ||||||
|  | 2.0.11-3.cabba9e | ||||||
|  |   ^    ^    ^ | ||||||
|  |   |    |    `-- upstream commit ID | ||||||
|  |   |    | | ||||||
|  |   |    `--- Guix package revision | ||||||
|  |   | | ||||||
|  | latest upstream version | ||||||
|  | @end example | ||||||
|  | 
 | ||||||
|  | It is a good idea to strip commit identifiers in the @code{version} | ||||||
|  | field to, say, 7 digits.  It avoids an aesthetic annoyance (assuming | ||||||
|  | aesthetics have a role to play here) as well as problems related to OS | ||||||
|  | limits such as the maximum shebang length (127 bytes for the Linux | ||||||
|  | kernel.)  It is best to use the full commit identifiers in | ||||||
|  | @code{origin}s, though, to avoid ambiguities. | ||||||
|  | 
 | ||||||
| @node Synopses and Descriptions | @node Synopses and Descriptions | ||||||
| @subsection Synopses and Descriptions | @subsection Synopses and Descriptions | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Reference in a new issue