<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Documentation%2F4.6%2FDevelopers%2FVersioning</id>
	<title>Documentation/4.6/Developers/Versioning - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Documentation%2F4.6%2FDevelopers%2FVersioning"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.6/Developers/Versioning&amp;action=history"/>
	<updated>2026-05-06T08:34:06Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.6/Developers/Versioning&amp;diff=47674&amp;oldid=prev</id>
		<title>UpdateBot: Nightly -&gt; 4.6</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.6/Developers/Versioning&amp;diff=47674&amp;oldid=prev"/>
		<updated>2016-11-07T07:10:12Z</updated>

		<summary type="html">&lt;p&gt;Nightly -&amp;gt; 4.6&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
= How to create a Slicer package =&lt;br /&gt;
&lt;br /&gt;
== Locally on your machine ==&lt;br /&gt;
&lt;br /&gt;
After Slicer correctly build and test, to create a binary package on mac/unix:&lt;br /&gt;
&lt;br /&gt;
 $ cd Slicer-Superbuild/Slicer-build&lt;br /&gt;
 $ make package&lt;br /&gt;
&lt;br /&gt;
For Visual Studio on Windows, the inner Slicer (not superbuild) solution file contains a 'PACKAGE' project, just build it. You might have to install [http://nsis.sourceforge.net/Download NSIS] prior.&lt;br /&gt;
&lt;br /&gt;
On Mac OS X, a 'dmg' file is generated, on unix it's a tar.gz archive and on Windows it's a exe installer.&lt;br /&gt;
&lt;br /&gt;
== Automatically expose it to the Slicer community ==&lt;br /&gt;
&lt;br /&gt;
CTest can automatically create a package and upload it on [http://slicer.cdash.org slicer.cdash.org] and [http://download.slicer.org download.slicer.org] to be available to the community.&lt;br /&gt;
&lt;br /&gt;
You need to create a script following the template [http://viewvc.slicer.org/viewvc.cgi/Slicer4/trunk/CMake/SlicerDashboardScript.TEMPLATE.cmake?view=markup Slicer/CMake/SlicerDashboardScript.TEMPLATE.cmake]. Change the following variables &amp;lt;code&amp;gt;WITH_PACKAGES&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SCRIPT_MODE&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;experimental&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Then you can run your script:&lt;br /&gt;
 $ ctest -S /path/to/SlicerPackageScript.cmake -VV &amp;gt; /path/to/logs.txt 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Please note that the source and build directories should not be located in '''/usr'''. The libraries would be considered by the packaging mechanism as &amp;quot;system&amp;quot; libraries.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Versioning =&lt;br /&gt;
&lt;br /&gt;
== Project fork ==&lt;br /&gt;
&lt;br /&gt;
While Slicer specific patches related to dependent project (i.e. VTK) are integrated upstream, it is not uncommon to build Slicer against a Slicer specific fork of the project.&lt;br /&gt;
&lt;br /&gt;
For example: https://github.com/Slicer/VTK&lt;br /&gt;
&lt;br /&gt;
=== Patches for tagged release ===&lt;br /&gt;
&lt;br /&gt;
For each version of the project requiring some specific patches, a branch following that convention will be created: &amp;lt;code&amp;gt;slicer-vX.Y.Z-YEAR-MONTH-DAY&amp;lt;/code&amp;gt; where &lt;br /&gt;
* &amp;lt;code&amp;gt;X.Y.Z&amp;lt;/code&amp;gt; corresponds to the version of the fork project&lt;br /&gt;
* &amp;lt;code&amp;gt;YEAR-MONTH-DAY&amp;lt;/code&amp;gt; corresponds to the date of the last official commit of the fork project.&lt;br /&gt;
&lt;br /&gt;
For example, in case of the [https://github.com/Slicer/VTK Slicer/VTK] fork, the branch &amp;lt;code&amp;gt;slicer-v6.2.0-2015-03-02&amp;lt;/code&amp;gt; has been created.&lt;br /&gt;
&lt;br /&gt;
=== Patches for development branch ===&lt;br /&gt;
&lt;br /&gt;
In this case, since there is no tag associated with the branch, the Slicer specific patch should be added to a branch named using the date of the commit parent of the Slicer branch: &amp;lt;code&amp;gt;slicer-vX.Y-YEAR-MONTH-DAY-REV&amp;lt;/code&amp;gt; where &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;X.Y&amp;lt;/code&amp;gt; corresponds to the fork release&lt;br /&gt;
* &amp;lt;code&amp;gt;REV&amp;lt;/code&amp;gt; corresponds to either the first 7 chars of git hash or SVN revision (for example &amp;lt;code&amp;gt;r1234&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;lt;code&amp;gt;YEAR-MONTH-DAY&amp;lt;/code&amp;gt; corresponds to the date of the last official commit of the fork project&lt;br /&gt;
&lt;br /&gt;
For example: &amp;lt;code&amp;gt;slicer-v6.2.0-2015-02-24-70bad0e&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adding patches to the fork ===&lt;br /&gt;
&lt;br /&gt;
When adding new patches to the fork, prefer direct commits or cherry-picked commits over merge commits. Avoiding merge commits makes it easier to rebase the fork against a new upstream revision.&lt;br /&gt;
&lt;br /&gt;
=== Commit message ===&lt;br /&gt;
&lt;br /&gt;
The following command should be used to list changes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git shortlog sha_before..sha_after --no-merges&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;code&amp;gt;sha_before&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sha_after&amp;lt;/code&amp;gt; are the first seven charachers of the SHA.&lt;br /&gt;
&lt;br /&gt;
Here is an example of commit updating &amp;lt;code&amp;gt;External_VTKv6.cmake&amp;lt;/code&amp;gt; in Slicer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ENH: Update VTK to handle default values for array parameters in python&lt;br /&gt;
    &lt;br /&gt;
Without this commit, one must specify parameters like (,int array[3]=0) when&lt;br /&gt;
the method is called from python.&lt;br /&gt;
&lt;br /&gt;
$ git shortlog 1c30cb0..4b9957b --no-merges&lt;br /&gt;
David Gobbi (2):&lt;br /&gt;
      Fix wrapping pointer parameters with default value 0.&lt;br /&gt;
      Handle default values for array parameters in python.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source: [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25160 r25160]&lt;br /&gt;
&lt;br /&gt;
==== Caveats ====&lt;br /&gt;
&lt;br /&gt;
* For the commit title, prefer something like &amp;lt;code&amp;gt;ENH: Update VTK to ...&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;ENH: Update VTK git tag to ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If there is only commit in the update, it is reasonable to copy the message. For example, see [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=24693 r24693]. &lt;br /&gt;
&lt;br /&gt;
* If the copied message reference the sha1 of its project (e.g VTK), change it to this form &amp;lt;code&amp;gt;org/proj@sha&amp;lt;/code&amp;gt;. For example, see [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=24693 r24693].&lt;br /&gt;
&lt;br /&gt;
* If there is a long list of changes return by &amp;lt;code&amp;gt;git shortlog&amp;lt;/code&amp;gt;, make sure to copy the full list. Before the list, consider also adding a short summary of the &amp;quot;interesting&amp;quot; changes. For example, see [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=25068 r25068]&lt;br /&gt;
&lt;br /&gt;
= Slicer Package naming scheme =&lt;br /&gt;
{{ambox|text=The following information is for Slicer maintainers only}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Slicer-&amp;amp;lt;MAJOR_VERSION&amp;amp;gt;.&amp;amp;lt;MINOR_VERSION&amp;amp;gt;.&amp;amp;lt;PATCH_VERSION&amp;amp;gt;[-rc{1|2|3...}][-&amp;amp;lt;TWEAK_VERSION&amp;amp;gt;][-&amp;amp;lt;DATE&amp;amp;gt;][-svn&amp;amp;lt;REV&amp;amp;gt;][-dirty]-&amp;amp;lt;ARCH&amp;amp;gt;-&amp;amp;lt;PLATFORM&amp;amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are 2 types of builds, releases and developments:&lt;br /&gt;
; Release&lt;br /&gt;
: Special builds made on a given revision (e.g. r19033: &amp;quot;ENH: Slicer 4.0.1&amp;quot;)&lt;br /&gt;
: Don't contain date or revision number.&lt;br /&gt;
: The optional suffix '''-rc{1|2|3|...}''' identifies the release candidates leading to a final release.&lt;br /&gt;
: Eventually, a tweak number can be added (e.g. 4.0.1-1)&lt;br /&gt;
; Development&lt;br /&gt;
: Nightly or experimental builds&lt;br /&gt;
: Contains suffixes after the major.minor.patch version &lt;br /&gt;
: The suffix '''svn&amp;amp;lt;REV&amp;amp;gt;''' allows to identify the revision associated with the current package.&lt;br /&gt;
: The '''-dirty''' prefix indicates if the package has been generated from a locally modified source tree.&lt;br /&gt;
&lt;br /&gt;
== Example of linux 64bits packages ==&lt;br /&gt;
&lt;br /&gt;
=== Proposal #1 ===&lt;br /&gt;
&lt;br /&gt;
Include revision number in package name&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight: bold;&amp;quot; | File name&lt;br /&gt;
! style=&amp;quot;font-weight: bold;&amp;quot; | date&lt;br /&gt;
! style=&amp;quot;font-weight: bold;&amp;quot; | build type&lt;br /&gt;
! style=&amp;quot;font-weight: bold;&amp;quot; | note&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.0.0-linux-amd64&lt;br /&gt;
| 2011-11-24&lt;br /&gt;
| release&lt;br /&gt;
| release of Slicer 4.0.0&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.0.0-2011-12-10-svn100-linux-amd64   ||   2011-11-25 ||  development ||  nightly build after 4.0.0&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.0.1-rc1-linux-amd64      ||       2012-01-04  ||  release   ||  release candidate 1 of Slicer 4.0.1&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.0.1-rc1-2012-01-05-svn150-linux-amd64 ||  2012-01-05 || development ||  nightly build after the release candidate&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.0.1-rc2-linux-amd64      ||      2012-01-11  ||  release  ||   release candidate 2 of Slicer 4.0.1&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.0.1-rc2-2012-01-12-svn200-linux-amd64  || 2012-01-12 || development ||  nightly build after the release candidate&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.0.1-linux-amd64       ||          2012-01-14  ||  release  ||   release of Slicer 4.0.1&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.0.1-2012-01-20-svn236-linux-amd64   ||   2012-01-20 || development ||  nightly build after 4.0.1&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.0.1-1-linux-amd64        ||       2012-01-28  ||  release  ||   tweak version 1 of Slicer 4.0.1&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.0.2-linux.amd64          ||       2012-06-05  ||  release   ||  release of Slicer 4.0.2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Proposal #2 === &lt;br /&gt;
&lt;br /&gt;
* Increment minor version after each release, remove the concept of release candidate and tweak version.&lt;br /&gt;
&lt;br /&gt;
* With the transition to git workflow where branching is easier, after each release, the minor version in the trunk would be increased by one.&lt;br /&gt;
&lt;br /&gt;
* Patch release would be done using the maintenance branch associated with any given release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight: bold;&amp;quot; | File name&lt;br /&gt;
! style=&amp;quot;font-weight: bold;&amp;quot; | date&lt;br /&gt;
! style=&amp;quot;font-weight: bold;&amp;quot; | build type&lt;br /&gt;
! style=&amp;quot;font-weight: bold;&amp;quot; | branch&lt;br /&gt;
! style=&amp;quot;font-weight: bold;&amp;quot; | note&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.5.0-1-linux-amd64                     || 2015-12-11 || release || 4.5 || tweak version 1 of Slicer 4.5.0&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.6.0-2016-01-30-svn24950-linux-amd64   ||   2016-01-30 ||  development || master ||  nightly build after 4.5.0&lt;br /&gt;
|-&lt;br /&gt;
| ...                                          || ...        || ...     || ... || ...&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.6.0-2016-02-06-svn25174-linux-amd64   ||   2016-02-06 ||  development || master ||  nightly build after 4.5.0&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.5.1-2016-02-06-svn25175-linux-amd64   ||   2016-02-06 ||  development || 4.5 || manual build after 4.5.0-1&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.5.1-linux-amd64                     || 2015-02-07 || release || 4.5 || patch version 1 of Slicer 4.5.0&lt;br /&gt;
|-&lt;br /&gt;
| ...                                          || ...        || ...     || ... || ...&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.6.0-2016-03-05-svn25174-linux-amd64   ||   2016-02-05 ||  development || master ||  nightly build after 4.5.0&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.6.0-linux-amd64   ||   2016-03-06 ||  release || master ||  release of 4.6.0 : &amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;next commit on master would increment minor version to start new dev cycle&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;creation of maintenance branch 4.6&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ...                                          || ...        || ...     || ... || ...&lt;br /&gt;
|-&lt;br /&gt;
| Slicer-4.6.0-2016-03-07-svn25180-linux-amd64   ||   2016-03-07 ||  development || master ||  nightly build after 4.6.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Extension package - Naming scheme =&lt;br /&gt;
&lt;br /&gt;
* Create &amp;lt;code&amp;gt;Extensions-XYZ-Nightly&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Extensions-XYZ-Continuous&amp;lt;/code&amp;gt; tracks on CDash&lt;br /&gt;
&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>UpdateBot</name></author>
		
	</entry>
</feed>