<?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.10%2FDevelopers%2FProjectForks</id>
	<title>Documentation/4.10/Developers/ProjectForks - 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.10%2FDevelopers%2FProjectForks"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.10/Developers/ProjectForks&amp;action=history"/>
	<updated>2026-04-20T10:45:32Z</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.10/Developers/ProjectForks&amp;diff=59759&amp;oldid=prev</id>
		<title>UpdateBot: Nightly -&gt; 4.10</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.10/Developers/ProjectForks&amp;diff=59759&amp;oldid=prev"/>
		<updated>2018-10-19T00:43:31Z</updated>

		<summary type="html">&lt;p&gt;Nightly -&amp;gt; 4.10&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
== Overview ==&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;
&lt;br /&gt;
== Naming convention for Slicer fork branches ==&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;
=== Title and Content===&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 one 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;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
=== How to create the &amp;quot;slicer-&amp;quot; branch from a topic being contributed upstream ?  ===&lt;br /&gt;
&lt;br /&gt;
Assuming the official repository was cloned and a &amp;lt;tt&amp;gt;topic&amp;lt;/tt&amp;gt; with custom changes is already checked out.&lt;br /&gt;
&lt;br /&gt;
1. Create the `slicer-` branch&lt;br /&gt;
&lt;br /&gt;
 # Extract version using git describe&lt;br /&gt;
 XYZ=$(git describe --tags | cut -d&amp;quot;-&amp;quot; -f1)&lt;br /&gt;
 echo &amp;quot;XYZ [${XYZ}]&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 COMMON_SHA=$(git merge-base origin/master HEAD)&lt;br /&gt;
 COMMON_SHA=$(git show -s --format=%h ${COMMON_SHA})&lt;br /&gt;
 echo &amp;quot;COMMON_SHA [${COMMON_SHA}]&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 DATE=$(git show -s --format=%ci ${COMMON_SHA} | cut -d&amp;quot; &amp;quot; -f1)&lt;br /&gt;
 echo &amp;quot;DATE [${DATE}]&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 BRANCH_NAME=slicer-${XYZ}-${DATE}-${COMMON_SHA}&lt;br /&gt;
 echo &amp;quot;BRANCH_NAME [${BRANCH_NAME}]&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 git checkout -b ${BRANCH_NAME}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Add slicer remote&lt;br /&gt;
&lt;br /&gt;
 git remote add slicer git@github.com:Slicer/SimpleITK&lt;br /&gt;
&lt;br /&gt;
3. Publish branch&lt;br /&gt;
&lt;br /&gt;
 git push slicer $BRANCH_NAME&lt;/div&gt;</summary>
		<author><name>UpdateBot</name></author>
		
	</entry>
</feed>