<?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.3%2FDevelopers%2FVersioning</id>
	<title>Documentation/4.3/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.3%2FDevelopers%2FVersioning"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/Versioning&amp;action=history"/>
	<updated>2026-07-13T21:43:36Z</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.3/Developers/Versioning&amp;diff=62660&amp;oldid=prev</id>
		<title>Grundlett: Text replacement - &quot;'/slicerWiki/'&quot; to &quot;'/wiki/'&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/Versioning&amp;diff=62660&amp;oldid=prev"/>
		<updated>2019-11-27T14:29:28Z</updated>

		<summary type="html">&lt;p&gt;Text replacement - &amp;quot;&amp;#039;/slicerWiki/&amp;#039;&amp;quot; to &amp;quot;&amp;#039;/wiki/&amp;#039;&amp;quot;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 14:29, 27 November 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l285&quot; &gt;Line 285:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 285:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;gt;&amp;gt;&amp;gt; import mwdoc&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;gt;&amp;gt;&amp;gt; import mwdoc&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;gt;&amp;gt;&amp;gt; doc = mwdoc.Documentation('slicer.org', '/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;slicerWiki&lt;/del&gt;/')&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;gt;&amp;gt;&amp;gt; doc = mwdoc.Documentation('slicer.org', '/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wiki&lt;/ins&gt;/')&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;gt;&amp;gt;&amp;gt; doc.login('UpdateBot', 'XXXXXXX')&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;gt;&amp;gt;&amp;gt; doc.login('UpdateBot', 'XXXXXXX')&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;gt;&amp;gt;&amp;gt; doc.versionPages('Nightly', '4.3', ['Documentation', 'Template:Documentation'])&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;gt;&amp;gt;&amp;gt; doc.versionPages('Nightly', '4.3', ['Documentation', 'Template:Documentation'])&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Grundlett</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/Versioning&amp;diff=35261&amp;oldid=prev</id>
		<title>UpdateBot: Nightly -&gt; 4.3</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Developers/Versioning&amp;diff=35261&amp;oldid=prev"/>
		<updated>2013-09-05T03:35:49Z</updated>

		<summary type="html">&lt;p&gt;Nightly -&amp;gt; 4.3&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&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;X.Y.Z&amp;lt;/code&amp;gt; corresponds to the version of the project.&lt;br /&gt;
&lt;br /&gt;
For example, in case of the SlicerVTK fork, the branch &amp;lt;code&amp;gt;slicer-v5.10.1&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-YEAR-MONTH-DAY-vX.Y&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;X.Y&amp;lt;/code&amp;gt; corresponds to the fork release.&lt;br /&gt;
&lt;br /&gt;
== Create release dashboard scripts ==&lt;br /&gt;
&lt;br /&gt;
{{wip}}&lt;br /&gt;
&lt;br /&gt;
== Feature freeze ==&lt;br /&gt;
&lt;br /&gt;
Usually ~1 month before release.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* Update modules documentation link in help section (loadable, scripted and cli)&lt;br /&gt;
** And some html links in Welcome module (Modules/Loadable/SlicerWelcome/Resources/HTML)&lt;br /&gt;
** Update CLI XML description files&lt;br /&gt;
&lt;br /&gt;
Commit message: &amp;lt;code&amp;gt;Update Documentation to X.Y&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example: [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=22407 r22407]&lt;br /&gt;
&lt;br /&gt;
== Release-candidate ==&lt;br /&gt;
&lt;br /&gt;
Since there all development occurs on &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;, each time version is updated, two commits will be required.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;RC&amp;gt;&amp;lt;/code&amp;gt; corresponds to the release candidate number. It is greater or equal to one.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;1&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;In &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt;, uncomment and set:&lt;br /&gt;
*&amp;lt;code&amp;gt;Slicer_VERSION_TWEAK&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
*&amp;lt;code&amp;gt;Slicer_VERSION_RC&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;... and if this is the first release candidate, update at least one these variables: &amp;lt;code&amp;gt;Slicer_VERSION_MAJOR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slicer_VERSION_MINOR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slicer_VERSION_PATCH&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Commit &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; changes using this message:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;ENH: Slicer X.Y.Z-rc&amp;lt;RC&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Generate packages based on REVISION associated with step1.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt;, comment &amp;lt;code&amp;gt;Slicer_VERSION_TWEAK&amp;lt;/code&amp;gt; so that the next builds will contain the date associated with the last commit.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Commit &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; changes using this message:&amp;lt;/p&amp;gt; &amp;lt;pre&amp;gt;ENH: Begin post-X.Y.Z-rc&amp;lt;RC&amp;gt; development&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
Since there all development occurs on &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;, each time version is updated, two commits will be required.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;1&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;In &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt;, uncomment and set &amp;lt;code&amp;gt;Slicer_VERSION_TWEAK&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;... and if this no release candidate has been made, update at least one these variables: &amp;lt;code&amp;gt;Slicer_VERSION_MAJOR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slicer_VERSION_MINOR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slicer_VERSION_PATCH&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Commit &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; changes using this message:&amp;lt;/p&amp;gt;&amp;lt;pre&amp;gt;ENH: Slicer X.Y.Z&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;Generate packages based on REVISION associated with step1.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;Tag the repository:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
  svn copy -r&amp;lt;REVISION&amp;gt; http://svn.slicer.org/Slicer4/trunk  \&lt;br /&gt;
       http://svn.slicer.org/Slicer4/tags/Slicer-X-Y  \&lt;br /&gt;
      -m &amp;quot;ENH: Tag of X.Y.Z release based on r&amp;lt;REVISION&amp;gt;.&amp;quot;&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;In &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt;, comment and set:&amp;lt;/p&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;Slicer_VERSION_TWEAK&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; so that the next builds will contain the date associated with the last commit.&lt;br /&gt;
* &amp;lt;code&amp;gt;Slicer_VERSION_RC&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Commit &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt; changes using this message:&amp;lt;/p&amp;gt; &amp;lt;pre&amp;gt;ENH: Begin post-X.Y.Z development&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Post release ==&lt;br /&gt;
&lt;br /&gt;
=== Create a release branch ===&lt;br /&gt;
&lt;br /&gt;
 svn copy -r &amp;lt;REVISION&amp;gt; http://svn.slicer.org/Slicer4/trunk http://svn.slicer.org/Slicer4/branches/Slicer-X-Y&lt;br /&gt;
&lt;br /&gt;
=== Backport commit into release branch ===&lt;br /&gt;
&lt;br /&gt;
The following steps will lead to the creation of new git-svn clone having to branch:&lt;br /&gt;
* &amp;lt;code&amp;gt;git-svn&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;git-svn-XY&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reference: http://www.dmo.ca/blog/20070608113513/&lt;br /&gt;
&lt;br /&gt;
==== Step 1: Checkout sources ====&lt;br /&gt;
&lt;br /&gt;
 git clone git://github.com/Slicer/Slicer.git Slicer-X.Y&lt;br /&gt;
 cd Slicer-X.Y&lt;br /&gt;
 git svn init http://svn.slicer.org/Slicer4/trunk&lt;br /&gt;
 git update-ref refs/remotes/git-svn refs/remotes/origin/master&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git svn rebase&lt;br /&gt;
&lt;br /&gt;
==== Step 2: Add release branch remote ====&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;.git/config&amp;lt;/code&amp;gt;, and in addition to the existing 'git-svn' remote, add the following one:&lt;br /&gt;
&lt;br /&gt;
 [svn-remote &amp;quot;svn-XY&amp;quot;]&lt;br /&gt;
    url = http://svn.slicer.org/Slicer4/branches/Slicer-X-Y&lt;br /&gt;
    fetch = :refs/remotes/git-svn-XY&lt;br /&gt;
&lt;br /&gt;
==== Step 3: Pull associated SVN branch ====&lt;br /&gt;
&lt;br /&gt;
 git svn fetch git-svn-XY -r &amp;lt;REVISION&amp;gt;&lt;br /&gt;
 git checkout -b master-XY git-svn-XY&lt;br /&gt;
&lt;br /&gt;
==== Step 4: Backport ====&lt;br /&gt;
&lt;br /&gt;
We can now cherry pick commit associated with master (trunk) into &amp;lt;code&amp;gt;master-XY&amp;lt;/code&amp;gt; (Slicer-X-Y)&lt;br /&gt;
&lt;br /&gt;
==== Step 5: Create a patch release ====&lt;br /&gt;
&lt;br /&gt;
{{wip}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Slicer trunk: Update Major/Minor/Patch version to match latest release&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Generate ChangeLog ===&lt;br /&gt;
&lt;br /&gt;
* See [https://raw.github.com/cryos/avogadro/master/scripts/gitlog2changelog.py gitlog2changelog.py]. More details [http://blog.cryos.net/archives/202-Git-and-Automatic-ChangeLog-Generation.html here].&lt;br /&gt;
&lt;br /&gt;
* Update [[Release Details]] page using generated ChangeLog&lt;br /&gt;
&lt;br /&gt;
=== Update Mantis ===&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Release&amp;quot; current target&lt;br /&gt;
* Create new target&lt;br /&gt;
* Check the &amp;quot;fixed in&amp;quot; fields&lt;br /&gt;
&lt;br /&gt;
=== Midas ===&lt;br /&gt;
&lt;br /&gt;
==== Tag release packages ====&lt;br /&gt;
&lt;br /&gt;
* If needed, create a X.Y.Z folder in [http://slicer.kitware.com/midas3/folder/274 Slicer/Packages/Application/Release]&lt;br /&gt;
** Copy uploaded packages into the folder created above&lt;br /&gt;
** Identify the item_id associated with uploaded packages. For example: 11926, 11925, 11927, 11992&lt;br /&gt;
** SSH connect to &amp;lt;code&amp;gt;jcfr@slicer.kitwarein.com&amp;lt;/code&amp;gt;&lt;br /&gt;
** Connect to mysql using &amp;lt;code&amp;gt;mysql -u midas -p&amp;lt;/code&amp;gt;&lt;br /&gt;
*** See file &amp;lt;code&amp;gt;/var/www/midas3/core/configs/database.local.ini&amp;lt;/code&amp;gt; for password&lt;br /&gt;
*** Choose midas database: &amp;lt;code&amp;gt;use midas&amp;lt;/code&amp;gt;&lt;br /&gt;
** List packages associated with identified items and check they are the appropriate ones:&lt;br /&gt;
*** &amp;lt;code&amp;gt;select *  from slicerpackages_package as p , item as i where i.item_id = p.item_id and p.item_id in (11926, 11925, 11927, 11992);&amp;lt;/code&amp;gt;&lt;br /&gt;
** Set release field&lt;br /&gt;
*** &amp;lt;code&amp;gt;update slicerpackages_package set `release`=&amp;quot;4.2.2-1&amp;quot; where item_id in (11926, 11925, 11927, 11992);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Version NA-MIC data tree ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;1&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[[Documentation/{{documentation/version}}/Developers/Tutorials/ObtainExtensionServerApiKey|Create an account on the extension server and obtain an API Key]]. You will then use your midas login and api key to substitute &amp;lt;code&amp;gt;&amp;lt;YOUR-MIDAS-LOGIN&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;YOUR-MIDAS-APIKEY&amp;gt;&amp;lt;/code&amp;gt; in the examples.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;If not already done, go to [http://slicer.kitware.com/midas3/community/23 NA-MIC community] and click on &amp;lt;code&amp;gt;Join community&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Send an email on the developer list asking to be added to the &amp;lt;code&amp;gt;DataManager&amp;lt;/code&amp;gt; group on NA-MIC community. That will grant you read/write permissions to the &amp;lt;code&amp;gt;Data&amp;lt;/code&amp;gt; folder and sub-folders.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install prerequisites&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo pip install pydas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Identify &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; of the &amp;lt;code&amp;gt;Data&amp;lt;/code&amp;gt; folder. For example [http://slicer.kitware.com/midas3/folder/301 301]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Simulate creation of &amp;lt;code&amp;gt;X.Y&amp;lt;/code&amp;gt; data folders based &amp;lt;code&amp;gt;Nightly&amp;lt;/code&amp;gt; ones&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/Slicer/Base/Python/slicer/release&lt;br /&gt;
$ python midasdata.py --url=http://slicer.kitware.com/midas3 --data_id=301 \&lt;br /&gt;
  --email=&amp;lt;YOUR-MIDAS-LOGIN&amp;gt; --apikey=&amp;lt;YOUR-MIDAS-APIKEY&amp;gt; --source_version=Nightly --dest_version=X.Y --dry-run&lt;br /&gt;
Application ( folder_id: 302 )&lt;br /&gt;
'-Nightly ( folder_id: 831 )&lt;br /&gt;
'-'-Testing ( folder_id: 832 )&lt;br /&gt;
'-'-'-Baseline ( folder_id: 889 )&lt;br /&gt;
'-'-'-'-DiffusionTensorImagingTutorial.png ( item_id: 12067 )&lt;br /&gt;
'-'-'-'-NeurosurgicalPlanningTutorial.png ( item_id: 12066 )&lt;br /&gt;
'-'-'-'-SlicerTestingTest.png ( item_id: 17760 )&lt;br /&gt;
'-'-'-Input ( folder_id: 833 )&lt;br /&gt;
'-'-'-'-AtlasTests ( folder_id: 834 )&lt;br /&gt;
'-'-'-'-'-2012-10-26-BrainAtlas.mrb ( item_id: 10276 )&lt;br /&gt;
[...]&lt;br /&gt;
Module: VotingBinaryHoleFillingImageFilter ( folder_id: 1491 )&lt;br /&gt;
'-Nightly ( folder_id: 1491 )&lt;br /&gt;
'-'-Testing ( folder_id: 1492 )&lt;br /&gt;
'-'-'-Baseline ( folder_id: 1493 )&lt;br /&gt;
'-'-'-'-VotingBinaryHoleFillingImageFilterTest.nhdr ( item_id: 103418 )&lt;br /&gt;
'-'-'-'-VotingBinaryHoleFillingImageFilterTest.raw.gz ( item_id: 103419 )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create &amp;lt;code&amp;gt;X.Y&amp;lt;/code&amp;gt; data tree based &amp;lt;code&amp;gt;Nightly&amp;lt;/code&amp;gt; ones&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ python midasdata.py --url=http://slicer.kitware.com/midas3 --data_id=301 \&lt;br /&gt;
  --email=&amp;lt;YOUR-MIDAS-LOGIN&amp;gt; --apikey=&amp;lt;YOUR-MIDAS-APIKEY&amp;gt; --source_version=Nightly --dest_version=X.Y&lt;br /&gt;
&lt;br /&gt;
Versioning of the NA-MIC Data tree for release X.Y...&lt;br /&gt;
Versioning Modules...&lt;br /&gt;
[...]&lt;br /&gt;
Versioning Modules...[DONE]&lt;br /&gt;
Versioning Application...&lt;br /&gt;
Creating folder X.Y under Application directory&lt;br /&gt;
Duplicating subfolders from Nightly to X.Y...&lt;br /&gt;
Duplicating subfolders from Nightly to X.Y...[DONE]&lt;br /&gt;
Versioning Application...[DONE]&lt;br /&gt;
Versioning of the NA-MIC Data tree for release X.Y...[DONE]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Update Slicer wiki ===&lt;br /&gt;
&lt;br /&gt;
The copy of the pages associated with the &amp;lt;code&amp;gt;Nightly&amp;lt;/code&amp;gt; namespace into the &amp;lt;code&amp;gt;X.Y&amp;lt;/code&amp;gt; namespace is done using the convenience python module [https://github.com/jcfr/mwdoc#readme mwdoc].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol start=&amp;quot;1&amp;quot; style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Check with &amp;lt;email&amp;gt;jchris.fillionr@kitware.com&amp;lt;/email&amp;gt; to get the credential associated with &amp;lt;code&amp;gt;UpdateBot&amp;lt;/code&amp;gt; user.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
  &amp;lt;p&amp;gt;Copy &amp;lt;code&amp;gt;Nightly&amp;lt;/code&amp;gt; pages into &amp;lt;code&amp;gt;X.Y&amp;lt;/code&amp;gt; pages.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~/Projects&lt;br /&gt;
&lt;br /&gt;
$ sudo pip install mwclient&lt;br /&gt;
&lt;br /&gt;
$ git clone git://github.com/jcfr/mwdoc&lt;br /&gt;
&lt;br /&gt;
$ cd mwdoc&lt;br /&gt;
&lt;br /&gt;
$ python&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import mwdoc&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; doc = mwdoc.Documentation('slicer.org', '/slicerWiki/')&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; doc.login('UpdateBot', 'XXXXXXX')&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; doc.versionPages('Nightly', '4.3', ['Documentation', 'Template:Documentation'])&lt;br /&gt;
[INFO] Page successfully created: 'Documentation/4.3/Extensions/ErodeDilateLabel'&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Update external website ===&lt;br /&gt;
&lt;br /&gt;
See http://en.wikipedia.org/wiki/3DSlicer&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;
 [              File name               ][   date   ][ build type ][                      note                     ]&lt;br /&gt;
 Slicer-4.0.0-linux-amd64                 2011-11-24    release     release of Slicer 4.0.0&lt;br /&gt;
 Slicer-4.0.0-2011-12-10-linux-amd64      2011-11-25  development   nightly build after 4.0.0&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;
 Slicer-4.0.1-rc1-2012-01-05-linux-amd64  2012-01-05  development   nightly build after the release candidate&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;
 Slicer-4.0.1-rc2-2012-01-12-linux-amd64  2012-01-12  development   nightly build after the release candidate&lt;br /&gt;
 Slicer-4.0.1-linux-amd64                 2012-01-14    release     release of Slicer 4.0.1&lt;br /&gt;
 Slicer-4.0.1-2012-01-20-linux-amd64      2012-01-20  development   nightly build after 4.0.1&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;
 Slicer-4.0.2-linux.amd64                 2012-06-05    release     release of Slicer 4.0.2&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>