<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.slicer.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sankhesh.jhaveri&amp;*</id>
	<title>Slicer Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.slicer.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sankhesh.jhaveri&amp;*"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/wiki/Special:Contributions/Sankhesh.jhaveri"/>
	<updated>2026-04-27T04:11:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31309</id>
		<title>Documentation/Nightly/Developers/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31309"/>
		<updated>2013-04-24T16:03:16Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Development with Git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development with Git =&lt;br /&gt;
'''This page helps developers in the migration of Slicer4 from subversion to git.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''See also:''[[Slicer:git-svn | Instructions for setting up a git repository to interact with Slicer's svn]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Git ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&lt;br /&gt;
Git is an extremely powerful version control tool that supports many different &amp;quot;workflows&amp;quot; for indivudal development and collaboration.&lt;br /&gt;
Git can be obtained as described on our [[Documentation/Nightly/Developers/Git/Download | Git download page]].&lt;br /&gt;
&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see our [[Documentation/Nightly/Developers/Git/Resources | Git resource links]] for third party documentation, such as the [http://progit.org/book/ ProGit Book].&lt;br /&gt;
&lt;br /&gt;
== Slicer Setup ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
1.&lt;br /&gt;
Follow instructions on [[Documentation/Nightly/Developers/StartHere|Start Here]] page to clone the Slicer repo from Github.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
2.&lt;br /&gt;
Run the developer setup script to set up your Slicer work tree&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./Utilities/SetupForDevelopment.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[https://github.com/Slicer/Slicer/blob/master/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:This script will setup git user info and git hooks.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Git Hooks ==&lt;br /&gt;
* Hooks are stored in the main Slicer4 repository under a separate branch called [https://github.com/sankhesh/Slicer/tree/hooks hooks].&lt;br /&gt;
* These hooks are pulled when the SetupForDevelopment script is run. They are placed in the .git/hooks directory to install them.&lt;br /&gt;
* The following local hooks are currently installed. See Git help on [http://www.kernel.org/pub/software/scm/git/docs/githooks.html githooks] for more details.&lt;br /&gt;
&lt;br /&gt;
=== pre-commit ===&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; before the commit message editor is fired up.  It checks the identity and content of changes:&lt;br /&gt;
&lt;br /&gt;
* Git &amp;lt;code&amp;gt;user.name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;user.email&amp;lt;/code&amp;gt; are set to something reasonable&lt;br /&gt;
* Git's standard whitespace checks (see help on &amp;lt;code&amp;gt;git diff --check&amp;lt;/code&amp;gt;)&lt;br /&gt;
* The staged changes do not introduce any leading TABs in source files (we indent with spaces)&lt;br /&gt;
* File modes look reasonable (no executable .cxx files, scripts with shebang lines are executable)&lt;br /&gt;
* File size is not too large (don't commit big data files; prints limit and instructions on rejection)&lt;br /&gt;
* Files do not have very long lines (longer than 160 characters).&lt;br /&gt;
&lt;br /&gt;
One of Git's standard whitespace checks is to reject ''trailing'' whitespace on lines that were added or modified.&amp;lt;br /&amp;gt;&lt;br /&gt;
Many people consider extra space characters at the end of a line to be an unprofessional style (including Git's own developers).&amp;lt;br /&amp;gt;&lt;br /&gt;
NA-MIC/Slicer4 repository requires that all trailing whitespaces be removed before committing changes.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text editors typically have a mode to highlight trailing whitespace:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Emacs&lt;br /&gt;
|&lt;br /&gt;
 (custom-set-variables '(show-trailing-whitespace t))&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[http://www.vtk.org/Wiki/Elisp_Code_for_VTK-Style_C_Indentation &amp;lt;code&amp;gt;Emacs configuration file&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Vim&lt;br /&gt;
|&lt;br /&gt;
 :highlight ExtraWhitespace ctermbg=red guibg=red&lt;br /&gt;
 :match ExtraWhitespace /\s\+$/&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Visual Studio&lt;br /&gt;
|&lt;br /&gt;
 To toggle viewing of white space characters, with a source&lt;br /&gt;
 file document active, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Advanced &amp;gt; View White Space'''&lt;br /&gt;
 &lt;br /&gt;
 (2-stroke keyboard shortcut: '''Ctrl+R, Ctrl+W''')&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Notepad++ (v5.6.7)&lt;br /&gt;
|&lt;br /&gt;
 To eliminate trailing white space, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Trim Trailing Space'''&lt;br /&gt;
 &lt;br /&gt;
 To toggle viewing of white space characters, choose from the&lt;br /&gt;
 menu items:&lt;br /&gt;
 &lt;br /&gt;
  '''View &amp;gt; Show Symbol &amp;gt;''' (multiple items, choose one...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== commit-msg ===&lt;br /&gt;
&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; after the commit message is saved.  It checks the commit message format:&lt;br /&gt;
&lt;br /&gt;
* The first line must be between 8 and 78 characters long.  If you were writing an email to describe the change, this would be the Subject line.&lt;br /&gt;
* The first line must not have leading or trailing whitespace.&lt;br /&gt;
* NA-MIC/Slicer4 requires commit messages to start with a commit type. Valid commit types are:&lt;br /&gt;
   BUG:   - a change made to fix a runtime issue&lt;br /&gt;
            (crash, segmentation fault, exception, or incorrect result,&lt;br /&gt;
   COMP:  - a fix for a compilation issue, error or warning,&lt;br /&gt;
   ENH:   - new functionality added to the project,&lt;br /&gt;
   PERF:  - a performance improvement,&lt;br /&gt;
   STYLE: - a change that does not impact the logic or execution of the code.&lt;br /&gt;
            (improve coding style, comments, documentation).&lt;br /&gt;
Note that the ':'(colon) directly follows the commit tag. For example, it is: &amp;quot;STYLE:&amp;quot; not &amp;quot;STYLE :&amp;quot;&lt;br /&gt;
* The second line must be blank, if present.&lt;br /&gt;
* The third line and below may be free-form.  Try to keep paragraph text formatted in 72 columns (this is not enforced).&lt;br /&gt;
&lt;br /&gt;
* GUI and text-based tools that help view history typically use the first line (Subject line) from the commit message to give a one-line summary of each commit.&lt;br /&gt;
:This allows a medium-level view of history, but works well only if developers write good Subject lines for their commits.&lt;br /&gt;
&lt;br /&gt;
: Examples of ''improper'' commit messages:&lt;br /&gt;
&lt;br /&gt;
 Fixed&lt;br /&gt;
&lt;br /&gt;
:This is too short and not informative at all. It does not name a commit type either.&lt;br /&gt;
&lt;br /&gt;
 ENH: I did a really complicated change and I am trying to describe the entire thing with a big message entered on the command line.&lt;br /&gt;
&lt;br /&gt;
:This is too long and defeats the purpose of a Subject line.&lt;br /&gt;
&lt;br /&gt;
: A good commit message would look something like this:&lt;br /&gt;
&lt;br /&gt;
  BUG: Fixed improper referencing of pointers&lt;br /&gt;
&lt;br /&gt;
* Further adding the Mantis issue number to the commit message is good practice. This helps checking the history of the issue on Mantis and knowing why the change was done in the first place.&lt;br /&gt;
&lt;br /&gt;
* Many CVS users develop the habit of using the &amp;quot;-m&amp;quot; commit option to specify the whole message on the command line.&lt;br /&gt;
:This is probably because in CVS it is hard to abort a commit if it already brought up the message editor.&amp;lt;br /&amp;gt;&lt;br /&gt;
:In Git this is trivial.  Just leave the message blank and the whole commit will be aborted.&amp;lt;br /&amp;gt;&lt;br /&gt;
:Furthermore, since commits are not published automatically it is easy to allow the commit to complete and then fix it with &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Further Work ==&lt;br /&gt;
* Setting up a master/next git development workflow similar to that followed by large open source projects such as [http://git.kernel.org/cgit/git/git.git/refs/?id=refs/heads/master git.git], [http://paraview.org/gitweb?p=ParaView.git;a=heads ParaView]. A good description on this model is provided [http://nvie.com/posts/a-successful-git-branching-model/ here].&lt;br /&gt;
* Setting up Git aliases for better management of push/pull requests&lt;br /&gt;
* Possible gerrit integration&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31300</id>
		<title>Documentation/Nightly/Developers/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31300"/>
		<updated>2013-04-24T15:55:39Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development with Git =&lt;br /&gt;
'''This page helps developers in the migration of Slicer4 from subversion to git.'''&lt;br /&gt;
&lt;br /&gt;
For now, see the [[Slicer:git-svn| instructions for setting up a git repository to interact with slicer's svn]].&lt;br /&gt;
&lt;br /&gt;
== Git ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&lt;br /&gt;
Git is an extremely powerful version control tool that supports many different &amp;quot;workflows&amp;quot; for indivudal development and collaboration.&lt;br /&gt;
Git can be obtained as described on our [[Documentation/Nightly/Developers/Git/Download | Git download page]].&lt;br /&gt;
&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see our [[Documentation/Nightly/Developers/Git/Resources | Git resource links]] for third party documentation, such as the [http://progit.org/book/ ProGit Book].&lt;br /&gt;
&lt;br /&gt;
== Slicer Setup ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
1.&lt;br /&gt;
Follow instructions on [[Documentation/Nightly/Developers/StartHere|Start Here]] page to clone the Slicer repo from Github.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
2.&lt;br /&gt;
Run the developer setup script to set up your Slicer work tree&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./Utilities/SetupForDevelopment.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[https://github.com/Slicer/Slicer/blob/master/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:This script will setup git user info and git hooks.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Git Hooks ==&lt;br /&gt;
* Hooks are stored in the main Slicer4 repository under a separate branch called [https://github.com/sankhesh/Slicer/tree/hooks hooks].&lt;br /&gt;
* These hooks are pulled when the SetupForDevelopment script is run. They are placed in the .git/hooks directory to install them.&lt;br /&gt;
* The following local hooks are currently installed. See Git help on [http://www.kernel.org/pub/software/scm/git/docs/githooks.html githooks] for more details.&lt;br /&gt;
&lt;br /&gt;
=== pre-commit ===&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; before the commit message editor is fired up.  It checks the identity and content of changes:&lt;br /&gt;
&lt;br /&gt;
* Git &amp;lt;code&amp;gt;user.name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;user.email&amp;lt;/code&amp;gt; are set to something reasonable&lt;br /&gt;
* Git's standard whitespace checks (see help on &amp;lt;code&amp;gt;git diff --check&amp;lt;/code&amp;gt;)&lt;br /&gt;
* The staged changes do not introduce any leading TABs in source files (we indent with spaces)&lt;br /&gt;
* File modes look reasonable (no executable .cxx files, scripts with shebang lines are executable)&lt;br /&gt;
* File size is not too large (don't commit big data files; prints limit and instructions on rejection)&lt;br /&gt;
* Files do not have very long lines (longer than 160 characters).&lt;br /&gt;
&lt;br /&gt;
One of Git's standard whitespace checks is to reject ''trailing'' whitespace on lines that were added or modified.&amp;lt;br /&amp;gt;&lt;br /&gt;
Many people consider extra space characters at the end of a line to be an unprofessional style (including Git's own developers).&amp;lt;br /&amp;gt;&lt;br /&gt;
NA-MIC/Slicer4 repository requires that all trailing whitespaces be removed before committing changes.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text editors typically have a mode to highlight trailing whitespace:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Emacs&lt;br /&gt;
|&lt;br /&gt;
 (custom-set-variables '(show-trailing-whitespace t))&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[http://www.vtk.org/Wiki/Elisp_Code_for_VTK-Style_C_Indentation &amp;lt;code&amp;gt;Emacs configuration file&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Vim&lt;br /&gt;
|&lt;br /&gt;
 :highlight ExtraWhitespace ctermbg=red guibg=red&lt;br /&gt;
 :match ExtraWhitespace /\s\+$/&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Visual Studio&lt;br /&gt;
|&lt;br /&gt;
 To toggle viewing of white space characters, with a source&lt;br /&gt;
 file document active, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Advanced &amp;gt; View White Space'''&lt;br /&gt;
 &lt;br /&gt;
 (2-stroke keyboard shortcut: '''Ctrl+R, Ctrl+W''')&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Notepad++ (v5.6.7)&lt;br /&gt;
|&lt;br /&gt;
 To eliminate trailing white space, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Trim Trailing Space'''&lt;br /&gt;
 &lt;br /&gt;
 To toggle viewing of white space characters, choose from the&lt;br /&gt;
 menu items:&lt;br /&gt;
 &lt;br /&gt;
  '''View &amp;gt; Show Symbol &amp;gt;''' (multiple items, choose one...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== commit-msg ===&lt;br /&gt;
&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; after the commit message is saved.  It checks the commit message format:&lt;br /&gt;
&lt;br /&gt;
* The first line must be between 8 and 78 characters long.  If you were writing an email to describe the change, this would be the Subject line.&lt;br /&gt;
* The first line must not have leading or trailing whitespace.&lt;br /&gt;
* NA-MIC/Slicer4 requires commit messages to start with a commit type. Valid commit types are:&lt;br /&gt;
   BUG:   - a change made to fix a runtime issue&lt;br /&gt;
            (crash, segmentation fault, exception, or incorrect result,&lt;br /&gt;
   COMP:  - a fix for a compilation issue, error or warning,&lt;br /&gt;
   ENH:   - new functionality added to the project,&lt;br /&gt;
   PERF:  - a performance improvement,&lt;br /&gt;
   STYLE: - a change that does not impact the logic or execution of the code.&lt;br /&gt;
            (improve coding style, comments, documentation).&lt;br /&gt;
Note that the ':'(colon) directly follows the commit tag. For example, it is: &amp;quot;STYLE:&amp;quot; not &amp;quot;STYLE :&amp;quot;&lt;br /&gt;
* The second line must be blank, if present.&lt;br /&gt;
* The third line and below may be free-form.  Try to keep paragraph text formatted in 72 columns (this is not enforced).&lt;br /&gt;
&lt;br /&gt;
* GUI and text-based tools that help view history typically use the first line (Subject line) from the commit message to give a one-line summary of each commit.&lt;br /&gt;
:This allows a medium-level view of history, but works well only if developers write good Subject lines for their commits.&lt;br /&gt;
&lt;br /&gt;
: Examples of ''improper'' commit messages:&lt;br /&gt;
&lt;br /&gt;
 Fixed&lt;br /&gt;
&lt;br /&gt;
:This is too short and not informative at all. It does not name a commit type either.&lt;br /&gt;
&lt;br /&gt;
 ENH: I did a really complicated change and I am trying to describe the entire thing with a big message entered on the command line.&lt;br /&gt;
&lt;br /&gt;
:This is too long and defeats the purpose of a Subject line.&lt;br /&gt;
&lt;br /&gt;
: A good commit message would look something like this:&lt;br /&gt;
&lt;br /&gt;
  BUG: Fixed improper referencing of pointers&lt;br /&gt;
&lt;br /&gt;
* Further adding the Mantis issue number to the commit message is good practice. This helps checking the history of the issue on Mantis and knowing why the change was done in the first place.&lt;br /&gt;
&lt;br /&gt;
* Many CVS users develop the habit of using the &amp;quot;-m&amp;quot; commit option to specify the whole message on the command line.&lt;br /&gt;
:This is probably because in CVS it is hard to abort a commit if it already brought up the message editor.&amp;lt;br /&amp;gt;&lt;br /&gt;
:In Git this is trivial.  Just leave the message blank and the whole commit will be aborted.&amp;lt;br /&amp;gt;&lt;br /&gt;
:Furthermore, since commits are not published automatically it is easy to allow the commit to complete and then fix it with &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Further Work ==&lt;br /&gt;
* Setting up a master/next git development workflow similar to that followed by large open source projects such as [http://git.kernel.org/cgit/git/git.git/refs/?id=refs/heads/master git.git], [http://paraview.org/gitweb?p=ParaView.git;a=heads ParaView]. A good description on this model is provided [http://nvie.com/posts/a-successful-git-branching-model/ here].&lt;br /&gt;
* Setting up Git aliases for better management of push/pull requests&lt;br /&gt;
* Possible gerrit integration&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31296</id>
		<title>Documentation/Nightly/Developers/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31296"/>
		<updated>2013-04-24T15:50:55Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Slicer Setup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development with Git =&lt;br /&gt;
'''This page helps developers in the migration of Slicer4 from subversion to git.'''&lt;br /&gt;
&lt;br /&gt;
For now, see the [[Slicer:git-svn| instructions for setting up a git repository to interact with slicer's svn]].&lt;br /&gt;
&lt;br /&gt;
== Git ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&lt;br /&gt;
Git is an extremely powerful version control tool that supports many different &amp;quot;workflows&amp;quot; for indivudal development and collaboration.&lt;br /&gt;
Git can be obtained as described on our [[Documentation/Nightly/Developers/Git/Download | Git download page]].&lt;br /&gt;
&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see our [[Documentation/Nightly/Developers/Git/Resources | Git resource links]] for third party documentation, such as the [http://progit.org/book/ ProGit Book].&lt;br /&gt;
&lt;br /&gt;
== Slicer Setup ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
1.&lt;br /&gt;
Follow instructions on [[Documentation/Nightly/Developers/StartHere|Start Here]] page to clone the Slicer repo from Github.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
2.&lt;br /&gt;
Run the developer setup script to set up your Slicer work tree&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./Utilities/SetupForDevelopment.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[https://github.com/Slicer/Slicer/blob/master/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
:This script will setup git user info and git hooks.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Git Hooks ==&lt;br /&gt;
* Hooks are stored in the main Slicer4 repository under a separate branch called [https://github.com/sankhesh/Slicer/tree/hooks hooks].&lt;br /&gt;
* These hooks are pulled when the SetupForDevelopment script is run. They are placed in the .git/hooks directory to install them.&lt;br /&gt;
* The following local hooks are currently installed. See Git help on [http://www.kernel.org/pub/software/scm/git/docs/githooks.html githooks] for more details.&lt;br /&gt;
&lt;br /&gt;
=== pre-commit ===&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; before the commit message editor is fired up.  It checks the identity and content of changes:&lt;br /&gt;
&lt;br /&gt;
* Git &amp;lt;code&amp;gt;user.name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;user.email&amp;lt;/code&amp;gt; are set to something reasonable&lt;br /&gt;
* Git's standard whitespace checks (see help on &amp;lt;code&amp;gt;git diff --check&amp;lt;/code&amp;gt;)&lt;br /&gt;
* The staged changes do not introduce any leading TABs in source files (we indent with spaces)&lt;br /&gt;
* File modes look reasonable (no executable .cxx files, scripts with shebang lines are executable)&lt;br /&gt;
* File size is not too large (don't commit big data files; prints limit and instructions on rejection)&lt;br /&gt;
* Files do not have very long lines (longer than 160 characters).&lt;br /&gt;
&lt;br /&gt;
One of Git's standard whitespace checks is to reject ''trailing'' whitespace on lines that were added or modified.&amp;lt;br /&amp;gt;&lt;br /&gt;
Many people consider extra space characters at the end of a line to be an unprofessional style (including Git's own developers).&amp;lt;br /&amp;gt;&lt;br /&gt;
NA-MIC/Slicer4 repository requires that all trailing whitespaces be removed before committing changes.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text editors typically have a mode to highlight trailing whitespace:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Emacs&lt;br /&gt;
|&lt;br /&gt;
 (custom-set-variables '(show-trailing-whitespace t))&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Vim&lt;br /&gt;
|&lt;br /&gt;
 :highlight ExtraWhitespace ctermbg=red guibg=red&lt;br /&gt;
 :match ExtraWhitespace /\s\+$/&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Visual Studio&lt;br /&gt;
|&lt;br /&gt;
 To toggle viewing of white space characters, with a source&lt;br /&gt;
 file document active, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Advanced &amp;gt; View White Space'''&lt;br /&gt;
 &lt;br /&gt;
 (2-stroke keyboard shortcut: '''Ctrl+R, Ctrl+W''')&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Notepad++ (v5.6.7)&lt;br /&gt;
|&lt;br /&gt;
 To eliminate trailing white space, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Trim Trailing Space'''&lt;br /&gt;
 &lt;br /&gt;
 To toggle viewing of white space characters, choose from the&lt;br /&gt;
 menu items:&lt;br /&gt;
 &lt;br /&gt;
  '''View &amp;gt; Show Symbol &amp;gt;''' (multiple items, choose one...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== commit-msg ===&lt;br /&gt;
&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; after the commit message is saved.  It checks the commit message format:&lt;br /&gt;
&lt;br /&gt;
* The first line must be between 8 and 78 characters long.  If you were writing an email to describe the change, this would be the Subject line.&lt;br /&gt;
* The first line must not have leading or trailing whitespace.&lt;br /&gt;
* NA-MIC/Slicer4 requires commit messages to start with a commit type. Valid commit types are:&lt;br /&gt;
   BUG:   - a change made to fix a runtime issue&lt;br /&gt;
            (crash, segmentation fault, exception, or incorrect result,&lt;br /&gt;
   COMP:  - a fix for a compilation issue, error or warning,&lt;br /&gt;
   ENH:   - new functionality added to the project,&lt;br /&gt;
   PERF:  - a performance improvement,&lt;br /&gt;
   STYLE: - a change that does not impact the logic or execution of the code.&lt;br /&gt;
            (improve coding style, comments, documentation).&lt;br /&gt;
Note that the ':'(colon) directly follows the commit tag. For example, it is: &amp;quot;STYLE:&amp;quot; not &amp;quot;STYLE :&amp;quot;&lt;br /&gt;
* The second line must be blank, if present.&lt;br /&gt;
* The third line and below may be free-form.  Try to keep paragraph text formatted in 72 columns (this is not enforced).&lt;br /&gt;
&lt;br /&gt;
* GUI and text-based tools that help view history typically use the first line (Subject line) from the commit message to give a one-line summary of each commit.&lt;br /&gt;
:This allows a medium-level view of history, but works well only if developers write good Subject lines for their commits.&lt;br /&gt;
&lt;br /&gt;
: Examples of ''improper'' commit messages:&lt;br /&gt;
&lt;br /&gt;
 Fixed&lt;br /&gt;
&lt;br /&gt;
:This is too short and not informative at all. It does not name a commit type either.&lt;br /&gt;
&lt;br /&gt;
 ENH: I did a really complicated change and I am trying to describe the entire thing with a big message entered on the command line.&lt;br /&gt;
&lt;br /&gt;
:This is too long and defeats the purpose of a Subject line.&lt;br /&gt;
&lt;br /&gt;
: A good commit message would look something like this:&lt;br /&gt;
&lt;br /&gt;
  BUG: Fixed improper referencing of pointers&lt;br /&gt;
&lt;br /&gt;
* Further adding the Mantis issue number to the commit message is good practice. This helps checking the history of the issue on Mantis and knowing why the change was done in the first place.&lt;br /&gt;
&lt;br /&gt;
* Many CVS users develop the habit of using the &amp;quot;-m&amp;quot; commit option to specify the whole message on the command line.&lt;br /&gt;
:This is probably because in CVS it is hard to abort a commit if it already brought up the message editor.&amp;lt;br /&amp;gt;&lt;br /&gt;
:In Git this is trivial.  Just leave the message blank and the whole commit will be aborted.&amp;lt;br /&amp;gt;&lt;br /&gt;
:Furthermore, since commits are not published automatically it is easy to allow the commit to complete and then fix it with &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Further Work ==&lt;br /&gt;
* Setting up a master/next git development workflow similar to that followed by large open source projects such as [http://git.kernel.org/cgit/git/git.git/refs/?id=refs/heads/master git.git], [http://paraview.org/gitweb?p=ParaView.git;a=heads ParaView]. A good description on this model is provided [http://nvie.com/posts/a-successful-git-branching-model/ here].&lt;br /&gt;
* Setting up Git aliases for better management of push/pull requests&lt;br /&gt;
* Possible gerrit integration&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31290</id>
		<title>Documentation/Nightly/Developers/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31290"/>
		<updated>2013-04-24T15:48:19Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* commit-msg */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development with Git =&lt;br /&gt;
'''This page helps developers in the migration of Slicer4 from subversion to git.'''&lt;br /&gt;
&lt;br /&gt;
For now, see the [[Slicer:git-svn| instructions for setting up a git repository to interact with slicer's svn]].&lt;br /&gt;
&lt;br /&gt;
== Git ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&lt;br /&gt;
Git is an extremely powerful version control tool that supports many different &amp;quot;workflows&amp;quot; for indivudal development and collaboration.&lt;br /&gt;
Git can be obtained as described on our [[Documentation/Nightly/Developers/Git/Download | Git download page]].&lt;br /&gt;
&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see our [[Documentation/Nightly/Developers/Git/Resources | Git resource links]] for third party documentation, such as the [http://progit.org/book/ ProGit Book].&lt;br /&gt;
&lt;br /&gt;
== Slicer Setup ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
1.&lt;br /&gt;
Follow instructions on [[Documentation/Nightly/Developers/StartHere|Start Here]] page to clone the Slicer repo from Github.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
2.&lt;br /&gt;
Run the developer setup script to set up your Slicer work tree&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./Utilities/SetupForDevelopment.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[https://github.com/Slicer/Slicer/blob/master/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
This script will setup git user info and git hooks.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Git Hooks ==&lt;br /&gt;
* Hooks are stored in the main Slicer4 repository under a separate branch called [https://github.com/sankhesh/Slicer/tree/hooks hooks].&lt;br /&gt;
* These hooks are pulled when the SetupForDevelopment script is run. They are placed in the .git/hooks directory to install them.&lt;br /&gt;
* The following local hooks are currently installed. See Git help on [http://www.kernel.org/pub/software/scm/git/docs/githooks.html githooks] for more details.&lt;br /&gt;
&lt;br /&gt;
=== pre-commit ===&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; before the commit message editor is fired up.  It checks the identity and content of changes:&lt;br /&gt;
&lt;br /&gt;
* Git &amp;lt;code&amp;gt;user.name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;user.email&amp;lt;/code&amp;gt; are set to something reasonable&lt;br /&gt;
* Git's standard whitespace checks (see help on &amp;lt;code&amp;gt;git diff --check&amp;lt;/code&amp;gt;)&lt;br /&gt;
* The staged changes do not introduce any leading TABs in source files (we indent with spaces)&lt;br /&gt;
* File modes look reasonable (no executable .cxx files, scripts with shebang lines are executable)&lt;br /&gt;
* File size is not too large (don't commit big data files; prints limit and instructions on rejection)&lt;br /&gt;
* Files do not have very long lines (longer than 160 characters).&lt;br /&gt;
&lt;br /&gt;
One of Git's standard whitespace checks is to reject ''trailing'' whitespace on lines that were added or modified.&amp;lt;br /&amp;gt;&lt;br /&gt;
Many people consider extra space characters at the end of a line to be an unprofessional style (including Git's own developers).&amp;lt;br /&amp;gt;&lt;br /&gt;
NA-MIC/Slicer4 repository requires that all trailing whitespaces be removed before committing changes.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text editors typically have a mode to highlight trailing whitespace:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Emacs&lt;br /&gt;
|&lt;br /&gt;
 (custom-set-variables '(show-trailing-whitespace t))&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Vim&lt;br /&gt;
|&lt;br /&gt;
 :highlight ExtraWhitespace ctermbg=red guibg=red&lt;br /&gt;
 :match ExtraWhitespace /\s\+$/&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Visual Studio&lt;br /&gt;
|&lt;br /&gt;
 To toggle viewing of white space characters, with a source&lt;br /&gt;
 file document active, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Advanced &amp;gt; View White Space'''&lt;br /&gt;
 &lt;br /&gt;
 (2-stroke keyboard shortcut: '''Ctrl+R, Ctrl+W''')&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Notepad++ (v5.6.7)&lt;br /&gt;
|&lt;br /&gt;
 To eliminate trailing white space, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Trim Trailing Space'''&lt;br /&gt;
 &lt;br /&gt;
 To toggle viewing of white space characters, choose from the&lt;br /&gt;
 menu items:&lt;br /&gt;
 &lt;br /&gt;
  '''View &amp;gt; Show Symbol &amp;gt;''' (multiple items, choose one...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== commit-msg ===&lt;br /&gt;
&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; after the commit message is saved.  It checks the commit message format:&lt;br /&gt;
&lt;br /&gt;
* The first line must be between 8 and 78 characters long.  If you were writing an email to describe the change, this would be the Subject line.&lt;br /&gt;
* The first line must not have leading or trailing whitespace.&lt;br /&gt;
* NA-MIC/Slicer4 requires commit messages to start with a commit type. Valid commit types are:&lt;br /&gt;
   BUG:   - a change made to fix a runtime issue&lt;br /&gt;
            (crash, segmentation fault, exception, or incorrect result,&lt;br /&gt;
   COMP:  - a fix for a compilation issue, error or warning,&lt;br /&gt;
   ENH:   - new functionality added to the project,&lt;br /&gt;
   PERF:  - a performance improvement,&lt;br /&gt;
   STYLE: - a change that does not impact the logic or execution of the code.&lt;br /&gt;
            (improve coding style, comments, documentation).&lt;br /&gt;
Note that the ':'(colon) directly follows the commit tag. For example, it is: &amp;quot;STYLE:&amp;quot; not &amp;quot;STYLE :&amp;quot;&lt;br /&gt;
* The second line must be blank, if present.&lt;br /&gt;
* The third line and below may be free-form.  Try to keep paragraph text formatted in 72 columns (this is not enforced).&lt;br /&gt;
&lt;br /&gt;
* GUI and text-based tools that help view history typically use the first line (Subject line) from the commit message to give a one-line summary of each commit.&lt;br /&gt;
:This allows a medium-level view of history, but works well only if developers write good Subject lines for their commits.&lt;br /&gt;
&lt;br /&gt;
: Examples of ''improper'' commit messages:&lt;br /&gt;
&lt;br /&gt;
 Fixed&lt;br /&gt;
&lt;br /&gt;
:This is too short and not informative at all. It does not name a commit type either.&lt;br /&gt;
&lt;br /&gt;
 ENH: I did a really complicated change and I am trying to describe the entire thing with a big message entered on the command line.&lt;br /&gt;
&lt;br /&gt;
:This is too long and defeats the purpose of a Subject line.&lt;br /&gt;
&lt;br /&gt;
: A good commit message would look something like this:&lt;br /&gt;
&lt;br /&gt;
  BUG: Fixed improper referencing of pointers&lt;br /&gt;
&lt;br /&gt;
* Further adding the Mantis issue number to the commit message is good practice. This helps checking the history of the issue on Mantis and knowing why the change was done in the first place.&lt;br /&gt;
&lt;br /&gt;
* Many CVS users develop the habit of using the &amp;quot;-m&amp;quot; commit option to specify the whole message on the command line.&lt;br /&gt;
:This is probably because in CVS it is hard to abort a commit if it already brought up the message editor.&amp;lt;br /&amp;gt;&lt;br /&gt;
:In Git this is trivial.  Just leave the message blank and the whole commit will be aborted.&amp;lt;br /&amp;gt;&lt;br /&gt;
:Furthermore, since commits are not published automatically it is easy to allow the commit to complete and then fix it with &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Further Work ==&lt;br /&gt;
* Setting up a master/next git development workflow similar to that followed by large open source projects such as [http://git.kernel.org/cgit/git/git.git/refs/?id=refs/heads/master git.git], [http://paraview.org/gitweb?p=ParaView.git;a=heads ParaView]. A good description on this model is provided [http://nvie.com/posts/a-successful-git-branching-model/ here].&lt;br /&gt;
* Setting up Git aliases for better management of push/pull requests&lt;br /&gt;
* Possible gerrit integration&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31287</id>
		<title>Documentation/Nightly/Developers/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31287"/>
		<updated>2013-04-24T15:45:02Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* pre-commit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development with Git =&lt;br /&gt;
'''This page helps developers in the migration of Slicer4 from subversion to git.'''&lt;br /&gt;
&lt;br /&gt;
For now, see the [[Slicer:git-svn| instructions for setting up a git repository to interact with slicer's svn]].&lt;br /&gt;
&lt;br /&gt;
== Git ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&lt;br /&gt;
Git is an extremely powerful version control tool that supports many different &amp;quot;workflows&amp;quot; for indivudal development and collaboration.&lt;br /&gt;
Git can be obtained as described on our [[Documentation/Nightly/Developers/Git/Download | Git download page]].&lt;br /&gt;
&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see our [[Documentation/Nightly/Developers/Git/Resources | Git resource links]] for third party documentation, such as the [http://progit.org/book/ ProGit Book].&lt;br /&gt;
&lt;br /&gt;
== Slicer Setup ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
1.&lt;br /&gt;
Follow instructions on [[Documentation/Nightly/Developers/StartHere|Start Here]] page to clone the Slicer repo from Github.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
2.&lt;br /&gt;
Run the developer setup script to set up your Slicer work tree&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./Utilities/SetupForDevelopment.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[https://github.com/Slicer/Slicer/blob/master/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
This script will setup git user info and git hooks.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Git Hooks ==&lt;br /&gt;
* Hooks are stored in the main Slicer4 repository under a separate branch called [https://github.com/sankhesh/Slicer/tree/hooks hooks].&lt;br /&gt;
* These hooks are pulled when the SetupForDevelopment script is run. They are placed in the .git/hooks directory to install them.&lt;br /&gt;
* The following local hooks are currently installed. See Git help on [http://www.kernel.org/pub/software/scm/git/docs/githooks.html githooks] for more details.&lt;br /&gt;
&lt;br /&gt;
=== pre-commit ===&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; before the commit message editor is fired up.  It checks the identity and content of changes:&lt;br /&gt;
&lt;br /&gt;
* Git &amp;lt;code&amp;gt;user.name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;user.email&amp;lt;/code&amp;gt; are set to something reasonable&lt;br /&gt;
* Git's standard whitespace checks (see help on &amp;lt;code&amp;gt;git diff --check&amp;lt;/code&amp;gt;)&lt;br /&gt;
* The staged changes do not introduce any leading TABs in source files (we indent with spaces)&lt;br /&gt;
* File modes look reasonable (no executable .cxx files, scripts with shebang lines are executable)&lt;br /&gt;
* File size is not too large (don't commit big data files; prints limit and instructions on rejection)&lt;br /&gt;
* Files do not have very long lines (longer than 160 characters).&lt;br /&gt;
&lt;br /&gt;
One of Git's standard whitespace checks is to reject ''trailing'' whitespace on lines that were added or modified.&amp;lt;br /&amp;gt;&lt;br /&gt;
Many people consider extra space characters at the end of a line to be an unprofessional style (including Git's own developers).&amp;lt;br /&amp;gt;&lt;br /&gt;
NA-MIC/Slicer4 repository requires that all trailing whitespaces be removed before committing changes.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Text editors typically have a mode to highlight trailing whitespace:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Emacs&lt;br /&gt;
|&lt;br /&gt;
 (custom-set-variables '(show-trailing-whitespace t))&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Vim&lt;br /&gt;
|&lt;br /&gt;
 :highlight ExtraWhitespace ctermbg=red guibg=red&lt;br /&gt;
 :match ExtraWhitespace /\s\+$/&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Visual Studio&lt;br /&gt;
|&lt;br /&gt;
 To toggle viewing of white space characters, with a source&lt;br /&gt;
 file document active, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Advanced &amp;gt; View White Space'''&lt;br /&gt;
 &lt;br /&gt;
 (2-stroke keyboard shortcut: '''Ctrl+R, Ctrl+W''')&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Notepad++ (v5.6.7)&lt;br /&gt;
|&lt;br /&gt;
 To eliminate trailing white space, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Trim Trailing Space'''&lt;br /&gt;
 &lt;br /&gt;
 To toggle viewing of white space characters, choose from the&lt;br /&gt;
 menu items:&lt;br /&gt;
 &lt;br /&gt;
  '''View &amp;gt; Show Symbol &amp;gt;''' (multiple items, choose one...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== commit-msg ===&lt;br /&gt;
&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; after the commit message is saved.  It checks the commit message format:&lt;br /&gt;
&lt;br /&gt;
* The first line must be between 8 and 78 characters long.  If you were writing an email to describe the change, this would be the Subject line.&lt;br /&gt;
* The first line must not have leading or trailing whitespace.&lt;br /&gt;
* NA-MIC/Slicer4 requires commit messages to start with a commit type. Valid commit types are:&lt;br /&gt;
   BUG:   - a change made to fix a runtime issue&lt;br /&gt;
            (crash, segmentation fault, exception, or incorrect result,&lt;br /&gt;
   COMP:  - a fix for a compilation issue, error or warning,&lt;br /&gt;
   ENH:   - new functionality added to the project,&lt;br /&gt;
   PERF:  - a performance improvement,&lt;br /&gt;
   STYLE: - a change that does not impact the logic or execution of the code.&lt;br /&gt;
            (improve coding style, comments, documentation).&lt;br /&gt;
Note that the ':'(colon) directly follows the commit tag. For example, it is: &amp;quot;STYLE:&amp;quot; not &amp;quot;STYLE :&amp;quot;&lt;br /&gt;
* The second line must be blank, if present.&lt;br /&gt;
* The third line and below may be free-form.  Try to keep paragraph text formatted in 72 columns (this is not enforced).&lt;br /&gt;
&lt;br /&gt;
* GUI and text-based tools that help view history typically use the first line (Subject line) from the commit message to give a one-line summary of each commit.&lt;br /&gt;
This allows a medium-level view of history, but works well only if developers write good Subject lines for their commits.&lt;br /&gt;
&lt;br /&gt;
** Examples of ''improper'' commit messages:&lt;br /&gt;
&lt;br /&gt;
 Fixed&lt;br /&gt;
&lt;br /&gt;
This is too short and not informative at all. It does not name a commit type either.&lt;br /&gt;
&lt;br /&gt;
 ENH: I did a really complicated change and I am trying to describe the entire thing with a big message entered on the command line.&lt;br /&gt;
&lt;br /&gt;
This is too long and defeats the purpose of a Subject line.&lt;br /&gt;
&lt;br /&gt;
** A good commit message would look something like this:&lt;br /&gt;
&lt;br /&gt;
  BUG: Fixed improper referencing of pointers&lt;br /&gt;
&lt;br /&gt;
* Further adding the Mantis issue number to the commit message is good practice. This helps checking the history of the issue on Mantis and knowing why the change was done in the first place.&lt;br /&gt;
&lt;br /&gt;
* Many CVS users develop the habit of using the &amp;quot;-m&amp;quot; commit option to specify the whole message on the command line.&lt;br /&gt;
This is probably because in CVS it is hard to abort a commit if it already brought up the message editor.&lt;br /&gt;
In Git this is trivial.  Just leave the message blank and the whole commit will be aborted.&lt;br /&gt;
Furthermore, since commits are not published automatically it is easy to allow the commit to complete and then fix it with &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Further Work ==&lt;br /&gt;
* Setting up a master/next git development workflow similar to that followed by large open source projects such as [http://git.kernel.org/cgit/git/git.git/refs/?id=refs/heads/master git.git], [http://paraview.org/gitweb?p=ParaView.git;a=heads ParaView]. A good description on this model is provided [http://nvie.com/posts/a-successful-git-branching-model/ here].&lt;br /&gt;
* Setting up Git aliases for better management of push/pull requests&lt;br /&gt;
* Possible gerrit integration&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Tutorials&amp;diff=31285</id>
		<title>Documentation/Nightly/Developers/Tutorials</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Tutorials&amp;diff=31285"/>
		<updated>2013-04-24T15:40:31Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;color: #555555; font-size: 18px; font-weight: bold;&amp;quot;&amp;gt;How To&amp;lt;/span&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Build_Instructions#CHECKOUT_slicer_source_files|Checkout Slicer source]] {{new}}&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/DevelopmentWithGit|Setup for Git development]] {{new}} &lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Build_Instructions#Git|Commit change sets]]&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/ContributePatch|Contribute a patch]]&lt;br /&gt;
* [[Slicer:git-svn#Integrating_topic_from_external_contributor|Integrate topic from external contributor]]{{new}}&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/CreateExtension|Create an extension]] {{new}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Modules#Command_Line_Interface_.28CLI.29|Create a  CLI module or extension]]&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Modules#Loadable_Modules|Create a Loadable module or extension]]&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Modules#Scripted_Modules|Create a Scripted module or extension]]&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/EditorExtension|Create an Editor effect]]&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/BundleModulesIntoExtension|Bundle module(s) into a Slicer extension]] {{updated}}&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Build_Module|Build module outside of Slicer source tree]] {{new}}&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/SelfTestModule|Write a Self Test Module]] {{new}}&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/UploadTestData|Upload test data on Midas]] {{new}}&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/DocumentModule|Document a module]]&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/DocumentExtension|Document an extension]]&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/ObtainExtensionServerApiKey|Obtain an API key to submit on the extension server]] {{updated}}&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/BuildTestPackageDistributeExtensions#Upload an extension in the experimental folder|Upload an extension in the experimental folder]]{{new}}&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/BuildTestPackageDistributeExtensions#Contribute an extension description file|Contribute an extension description file]]{{new}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/PortingCLIToITKv4|Port a CLI to ITKv4]]{{new}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/QtCreator|Setup QtCreator to develop Slicer application or modules]]&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/DashboardSetup|Setup a dashboard]]&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/Debug Instructions|Use debugger with Slicer application]] &lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/Troubleshooting|Troubleshoot issues such as crash, or memory leaks]]&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/MemoryManagement|Prevent memory leaks]]&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/WidgetWriting|Write a widget for Slicer and Qt Designer]]&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/QtDesigner|Use custom widgets in Qt Designer]]&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Developers/Tutorials/PythonAndUIFile|Load UI file from python]]&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Projects:MATLABSlicerExampleModule Pass data between Slicer and Matlab]{{experimental}}&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/FAQ/General&amp;diff=31283</id>
		<title>Documentation/Nightly/Developers/FAQ/General</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/FAQ/General&amp;diff=31283"/>
		<updated>2013-04-24T15:35:51Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;__TOC__&lt;br /&gt;
={{#titleparts: {{PAGENAME}} | | -1 }}=&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
='''Developer FAQ: {{{1}}}'''=&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What is Slicer ? ==&lt;br /&gt;
&lt;br /&gt;
{{:Documentation/{{documentation/version}}/Developers/Slicer}}&lt;br /&gt;
&lt;br /&gt;
== How to setup for Git development ? ==&lt;br /&gt;
[[Documentation/{{documentation/version}}/Developers/DevelopmentWithGit#Slicer Setup | Slicer Setup ]]&lt;br /&gt;
&lt;br /&gt;
== How to contribute a patch ? ==&lt;br /&gt;
{{:Documentation/{{documentation/version}}/Developers/Tutorials/ContributePatch}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is our bug / feature request workflow ? ==&lt;br /&gt;
&lt;br /&gt;
{{:Documentation/{{documentation/version}}/Developers/IssueWorkflow}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to schedule a Developer Hangout ? ==&lt;br /&gt;
See instruction [[Developer_Meetings/OrganizerInstruction|here]]&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Developer_Meetings/20130416&amp;diff=31187</id>
		<title>Developer Meetings/20130416</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Developer_Meetings/20130416&amp;diff=31187"/>
		<updated>2013-04-16T17:45:02Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* To discuss */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== To discuss ==&lt;br /&gt;
* Presentation of two new extensions by Laurent: http://slicer-devel.65872.n3.nabble.com/Proposition-of-2-new-extensions-tt4028359.html&lt;br /&gt;
** PathPlanner: [http://wiki.slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/PathPlanner wiki] / [https://github.com/SlicerIGT/PathPlanner Source]&lt;br /&gt;
** VisuaLine: [http://wiki.slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/VisuaLine wiki] / [https://github.com/SlicerIGT/VisuaLine Source]&lt;br /&gt;
* Presentation of Andriy extension&lt;br /&gt;
** DICOMPhilipsRescalePlugin: [http://wiki.slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/DICOMPhilipsRescalePlugin wiki]&lt;br /&gt;
* DisplayableNode::SetDisplayVisibility crash&lt;br /&gt;
** http://slicer-devel.65872.n3.nabble.com/DisplayableNode-SetDisplayVisibility-crash-tt4028238.html&lt;br /&gt;
** https://github.com/Slicer/Slicer/blob/7c165bc88bcd24fec807bcc54619616fb0b518b8/Libs/MRML/Core/vtkMRMLDisplayableNode.cxx#L175-191&lt;br /&gt;
* Slicer 4.3 release plan&lt;br /&gt;
* Review issue targeted for Slicer 4.3&lt;br /&gt;
* Git hooks: Ensure Mantis ID is mentioned in commit message? &amp;amp;rArr; https://github.com/sankhesh/Slicer/blob/hooks/commit-msg#L56&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31161</id>
		<title>Documentation/Nightly/Developers/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31161"/>
		<updated>2013-04-14T14:40:21Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Further Work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development with Git =&lt;br /&gt;
'''This page helps developers in the migration of Slicer4 from subversion to git.'''&lt;br /&gt;
&lt;br /&gt;
For now, see the [[Slicer:git-svn| instructions for setting up a git repository to interact with slicer's svn]].&lt;br /&gt;
&lt;br /&gt;
== Git ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&lt;br /&gt;
Git is an extremely powerful version control tool that supports many different &amp;quot;workflows&amp;quot; for indivudal development and collaboration.&lt;br /&gt;
Git can be obtained as described on our [[Documentation/Nightly/Developers/Git/Download | Git download page]].&lt;br /&gt;
&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see our [[Documentation/Nightly/Developers/Git/Resources | Git resource links]] for third party documentation, such as the [http://progit.org/book/ ProGit Book].&lt;br /&gt;
&lt;br /&gt;
== Slicer Setup ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
1.&lt;br /&gt;
Follow instructions on [[Documentation/Nightly/Developers/StartHere|Start Here]] page to clone the Slicer repo from Github.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
2.&lt;br /&gt;
Run the developer setup script to set up your Slicer work tree&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./Utilities/SetupForDevelopment.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[https://github.com/Slicer/Slicer/blob/master/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
This script will setup git user info and git hooks.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Git Hooks ==&lt;br /&gt;
* Hooks are stored in the main Slicer4 repository under a separate branch called [https://github.com/sankhesh/Slicer/tree/hooks hooks].&lt;br /&gt;
* These hooks are pulled when the SetupForDevelopment script is run. They are placed in the .git/hooks directory to install them.&lt;br /&gt;
* The following local hooks are currently installed. See Git help on [http://www.kernel.org/pub/software/scm/git/docs/githooks.html githooks] for more details.&lt;br /&gt;
&lt;br /&gt;
=== pre-commit ===&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; before the commit message editor is fired up.  It checks the identity and content of changes:&lt;br /&gt;
&lt;br /&gt;
* Git &amp;lt;code&amp;gt;user.name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;user.email&amp;lt;/code&amp;gt; are set to something reasonable&lt;br /&gt;
* Git's standard whitespace checks (see help on &amp;lt;code&amp;gt;git diff --check&amp;lt;/code&amp;gt;)&lt;br /&gt;
* The staged changes do not introduce any leading TABs in source files (we indent with spaces)&lt;br /&gt;
* File modes look reasonable (no executable .cxx files, scripts with shebang lines are executable)&lt;br /&gt;
* File size is not too large (don't commit big data files; prints limit and instructions on rejection)&lt;br /&gt;
* Files do not have very long lines (longer than 160 characters).&lt;br /&gt;
&lt;br /&gt;
One of Git's standard whitespace checks is to reject ''trailing'' whitespace on lines that were added or modified.&lt;br /&gt;
Many people consider extra space characters at the end of a line to be an unprofessional style (including Git's own developers). NA-MIC/Slicer4 repository requires that all trailing whitespaces be removed before committing changes.&lt;br /&gt;
Text editors typically have a mode to highlight trailing whitespace:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Emacs&lt;br /&gt;
|&lt;br /&gt;
 (custom-set-variables '(show-trailing-whitespace t))&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Vim&lt;br /&gt;
|&lt;br /&gt;
 :highlight ExtraWhitespace ctermbg=red guibg=red&lt;br /&gt;
 :match ExtraWhitespace /\s\+$/&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Visual Studio&lt;br /&gt;
|&lt;br /&gt;
 To toggle viewing of white space characters, with a source&lt;br /&gt;
 file document active, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Advanced &amp;gt; View White Space'''&lt;br /&gt;
 &lt;br /&gt;
 (2-stroke keyboard shortcut: '''Ctrl+R, Ctrl+W''')&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Notepad++ (v5.6.7)&lt;br /&gt;
|&lt;br /&gt;
 To eliminate trailing white space, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Trim Trailing Space'''&lt;br /&gt;
 &lt;br /&gt;
 To toggle viewing of white space characters, choose from the&lt;br /&gt;
 menu items:&lt;br /&gt;
 &lt;br /&gt;
  '''View &amp;gt; Show Symbol &amp;gt;''' (multiple items, choose one...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== commit-msg ===&lt;br /&gt;
&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; after the commit message is saved.  It checks the commit message format:&lt;br /&gt;
&lt;br /&gt;
* The first line must be between 8 and 78 characters long.  If you were writing an email to describe the change, this would be the Subject line.&lt;br /&gt;
* The first line must not have leading or trailing whitespace.&lt;br /&gt;
* NA-MIC/Slicer4 requires commit messages to start with a commit type. Valid commit types are:&lt;br /&gt;
   BUG:   - a change made to fix a runtime issue&lt;br /&gt;
            (crash, segmentation fault, exception, or incorrect result,&lt;br /&gt;
   COMP:  - a fix for a compilation issue, error or warning,&lt;br /&gt;
   ENH:   - new functionality added to the project,&lt;br /&gt;
   PERF:  - a performance improvement,&lt;br /&gt;
   STYLE: - a change that does not impact the logic or execution of the code.&lt;br /&gt;
            (improve coding style, comments, documentation).&lt;br /&gt;
Note that the ':'(colon) directly follows the commit tag. For example, it is: &amp;quot;STYLE:&amp;quot; not &amp;quot;STYLE :&amp;quot;&lt;br /&gt;
* The second line must be blank, if present.&lt;br /&gt;
* The third line and below may be free-form.  Try to keep paragraph text formatted in 72 columns (this is not enforced).&lt;br /&gt;
&lt;br /&gt;
* GUI and text-based tools that help view history typically use the first line (Subject line) from the commit message to give a one-line summary of each commit.&lt;br /&gt;
This allows a medium-level view of history, but works well only if developers write good Subject lines for their commits.&lt;br /&gt;
&lt;br /&gt;
** Examples of ''improper'' commit messages:&lt;br /&gt;
&lt;br /&gt;
 Fixed&lt;br /&gt;
&lt;br /&gt;
This is too short and not informative at all. It does not name a commit type either.&lt;br /&gt;
&lt;br /&gt;
 ENH: I did a really complicated change and I am trying to describe the entire thing with a big message entered on the command line.&lt;br /&gt;
&lt;br /&gt;
This is too long and defeats the purpose of a Subject line.&lt;br /&gt;
&lt;br /&gt;
** A good commit message would look something like this:&lt;br /&gt;
&lt;br /&gt;
  BUG: Fixed improper referencing of pointers&lt;br /&gt;
&lt;br /&gt;
* Further adding the Mantis issue number to the commit message is good practice. This helps checking the history of the issue on Mantis and knowing why the change was done in the first place.&lt;br /&gt;
&lt;br /&gt;
* Many CVS users develop the habit of using the &amp;quot;-m&amp;quot; commit option to specify the whole message on the command line.&lt;br /&gt;
This is probably because in CVS it is hard to abort a commit if it already brought up the message editor.&lt;br /&gt;
In Git this is trivial.  Just leave the message blank and the whole commit will be aborted.&lt;br /&gt;
Furthermore, since commits are not published automatically it is easy to allow the commit to complete and then fix it with &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Further Work ==&lt;br /&gt;
* Setting up a master/next git development workflow similar to that followed by large open source projects such as [http://git.kernel.org/cgit/git/git.git/refs/?id=refs/heads/master git.git], [http://paraview.org/gitweb?p=ParaView.git;a=heads ParaView]. A good description on this model is provided [http://nvie.com/posts/a-successful-git-branching-model/ here].&lt;br /&gt;
* Setting up Git aliases for better management of push/pull requests&lt;br /&gt;
* Possible gerrit integration&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31159</id>
		<title>Documentation/Nightly/Developers/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31159"/>
		<updated>2013-04-14T14:36:44Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: moved Documentation/Labs/DevelopmentWithGit to Documentation/Nightly/Developers/DevelopmentWithGit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development with Git =&lt;br /&gt;
'''This page helps developers in the migration of Slicer4 from subversion to git.'''&lt;br /&gt;
&lt;br /&gt;
For now, see the [[Slicer:git-svn| instructions for setting up a git repository to interact with slicer's svn]].&lt;br /&gt;
&lt;br /&gt;
== Git ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&lt;br /&gt;
Git is an extremely powerful version control tool that supports many different &amp;quot;workflows&amp;quot; for indivudal development and collaboration.&lt;br /&gt;
Git can be obtained as described on our [[Documentation/Nightly/Developers/Git/Download | Git download page]].&lt;br /&gt;
&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see our [[Documentation/Nightly/Developers/Git/Resources | Git resource links]] for third party documentation, such as the [http://progit.org/book/ ProGit Book].&lt;br /&gt;
&lt;br /&gt;
== Slicer Setup ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
1.&lt;br /&gt;
Follow instructions on [[Documentation/Nightly/Developers/StartHere|Start Here]] page to clone the Slicer repo from Github.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
2.&lt;br /&gt;
Run the developer setup script to set up your Slicer work tree&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./Utilities/SetupForDevelopment.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[https://github.com/Slicer/Slicer/blob/master/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
This script will setup git user info and git hooks.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Git Hooks ==&lt;br /&gt;
* Hooks are stored in the main Slicer4 repository under a separate branch called [https://github.com/sankhesh/Slicer/tree/hooks hooks].&lt;br /&gt;
* These hooks are pulled when the SetupForDevelopment script is run. They are placed in the .git/hooks directory to install them.&lt;br /&gt;
* The following local hooks are currently installed. See Git help on [http://www.kernel.org/pub/software/scm/git/docs/githooks.html githooks] for more details.&lt;br /&gt;
&lt;br /&gt;
=== pre-commit ===&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; before the commit message editor is fired up.  It checks the identity and content of changes:&lt;br /&gt;
&lt;br /&gt;
* Git &amp;lt;code&amp;gt;user.name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;user.email&amp;lt;/code&amp;gt; are set to something reasonable&lt;br /&gt;
* Git's standard whitespace checks (see help on &amp;lt;code&amp;gt;git diff --check&amp;lt;/code&amp;gt;)&lt;br /&gt;
* The staged changes do not introduce any leading TABs in source files (we indent with spaces)&lt;br /&gt;
* File modes look reasonable (no executable .cxx files, scripts with shebang lines are executable)&lt;br /&gt;
* File size is not too large (don't commit big data files; prints limit and instructions on rejection)&lt;br /&gt;
* Files do not have very long lines (longer than 160 characters).&lt;br /&gt;
&lt;br /&gt;
One of Git's standard whitespace checks is to reject ''trailing'' whitespace on lines that were added or modified.&lt;br /&gt;
Many people consider extra space characters at the end of a line to be an unprofessional style (including Git's own developers). NA-MIC/Slicer4 repository requires that all trailing whitespaces be removed before committing changes.&lt;br /&gt;
Text editors typically have a mode to highlight trailing whitespace:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Emacs&lt;br /&gt;
|&lt;br /&gt;
 (custom-set-variables '(show-trailing-whitespace t))&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Vim&lt;br /&gt;
|&lt;br /&gt;
 :highlight ExtraWhitespace ctermbg=red guibg=red&lt;br /&gt;
 :match ExtraWhitespace /\s\+$/&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Visual Studio&lt;br /&gt;
|&lt;br /&gt;
 To toggle viewing of white space characters, with a source&lt;br /&gt;
 file document active, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Advanced &amp;gt; View White Space'''&lt;br /&gt;
 &lt;br /&gt;
 (2-stroke keyboard shortcut: '''Ctrl+R, Ctrl+W''')&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Notepad++ (v5.6.7)&lt;br /&gt;
|&lt;br /&gt;
 To eliminate trailing white space, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Trim Trailing Space'''&lt;br /&gt;
 &lt;br /&gt;
 To toggle viewing of white space characters, choose from the&lt;br /&gt;
 menu items:&lt;br /&gt;
 &lt;br /&gt;
  '''View &amp;gt; Show Symbol &amp;gt;''' (multiple items, choose one...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== commit-msg ===&lt;br /&gt;
&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; after the commit message is saved.  It checks the commit message format:&lt;br /&gt;
&lt;br /&gt;
* The first line must be between 8 and 78 characters long.  If you were writing an email to describe the change, this would be the Subject line.&lt;br /&gt;
* The first line must not have leading or trailing whitespace.&lt;br /&gt;
* NA-MIC/Slicer4 requires commit messages to start with a commit type. Valid commit types are:&lt;br /&gt;
   BUG:   - a change made to fix a runtime issue&lt;br /&gt;
            (crash, segmentation fault, exception, or incorrect result,&lt;br /&gt;
   COMP:  - a fix for a compilation issue, error or warning,&lt;br /&gt;
   ENH:   - new functionality added to the project,&lt;br /&gt;
   PERF:  - a performance improvement,&lt;br /&gt;
   STYLE: - a change that does not impact the logic or execution of the code.&lt;br /&gt;
            (improve coding style, comments, documentation).&lt;br /&gt;
Note that the ':'(colon) directly follows the commit tag. For example, it is: &amp;quot;STYLE:&amp;quot; not &amp;quot;STYLE :&amp;quot;&lt;br /&gt;
* The second line must be blank, if present.&lt;br /&gt;
* The third line and below may be free-form.  Try to keep paragraph text formatted in 72 columns (this is not enforced).&lt;br /&gt;
&lt;br /&gt;
* GUI and text-based tools that help view history typically use the first line (Subject line) from the commit message to give a one-line summary of each commit.&lt;br /&gt;
This allows a medium-level view of history, but works well only if developers write good Subject lines for their commits.&lt;br /&gt;
&lt;br /&gt;
** Examples of ''improper'' commit messages:&lt;br /&gt;
&lt;br /&gt;
 Fixed&lt;br /&gt;
&lt;br /&gt;
This is too short and not informative at all. It does not name a commit type either.&lt;br /&gt;
&lt;br /&gt;
 ENH: I did a really complicated change and I am trying to describe the entire thing with a big message entered on the command line.&lt;br /&gt;
&lt;br /&gt;
This is too long and defeats the purpose of a Subject line.&lt;br /&gt;
&lt;br /&gt;
** A good commit message would look something like this:&lt;br /&gt;
&lt;br /&gt;
  BUG: Fixed improper referencing of pointers&lt;br /&gt;
&lt;br /&gt;
* Further adding the Mantis issue number to the commit message is good practice. This helps checking the history of the issue on Mantis and knowing why the change was done in the first place.&lt;br /&gt;
&lt;br /&gt;
* Many CVS users develop the habit of using the &amp;quot;-m&amp;quot; commit option to specify the whole message on the command line.&lt;br /&gt;
This is probably because in CVS it is hard to abort a commit if it already brought up the message editor.&lt;br /&gt;
In Git this is trivial.  Just leave the message blank and the whole commit will be aborted.&lt;br /&gt;
Furthermore, since commits are not published automatically it is easy to allow the commit to complete and then fix it with &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Further Work ==&lt;br /&gt;
* Setting up a master/next git development workflow similar to that followed by large open source projects such as [http://git.kernel.org/cgit/git/git.git/refs/?id=refs/heads/master git.git], [http://paraview.org/gitweb?p=ParaView.git;a=heads ParaView]. A good description on this model is provided here: http://nvie.com/posts/a-successful-git-branching-model/&lt;br /&gt;
* Setting up Git aliases for better management of push/pull requests&lt;br /&gt;
* Possible gerrit integration&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/DevelopmentWithGit&amp;diff=31160</id>
		<title>Documentation/Labs/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/DevelopmentWithGit&amp;diff=31160"/>
		<updated>2013-04-14T14:36:44Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: moved Documentation/Labs/DevelopmentWithGit to Documentation/Nightly/Developers/DevelopmentWithGit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Documentation/Nightly/Developers/DevelopmentWithGit]]&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Tutorials/ContributePatch&amp;diff=31158</id>
		<title>Documentation/Nightly/Developers/Tutorials/ContributePatch</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Tutorials/ContributePatch&amp;diff=31158"/>
		<updated>2013-04-14T14:35:52Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following instructions describes the recommended workflow to contribute patch to Slicer code base. &lt;br /&gt;
&lt;br /&gt;
It is assumed you followed the [[Documentation/4.1/Developers/StartHere#New_community_member_checklist|New community member checklist]] and have a clone of https://github.com/Slicer/Slicer/.&lt;br /&gt;
It is also assumed that you have setup the development environment as described in the [[Documentation/Nightly/Developers/DevelopmentWithGit#Slicer_Setup | Slicer Setup]] section.&lt;br /&gt;
&lt;br /&gt;
'''If not already done, make sure to read the [[Documentation/{{documentation/version}}/Developers/Style_Guide|Slicer Coding Style Guide]] :-)'''&lt;br /&gt;
&lt;br /&gt;
* 1. Create an issue in the [http://na-mic.org/Mantis/bug_report_page.php tracker]. For example, see issue [http://na-mic.org/Mantis/view.php?id=1906 #1906]&lt;br /&gt;
&lt;br /&gt;
* 2. Make sure your fork has a [https://help.github.com/articles/adding-a-remote git remote]. Replace &amp;lt;code&amp;gt;jcfr&amp;lt;/code&amp;gt; with your git login.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git remote add jcfr git@github.com:jcfr/Slicer.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 3. Create a topic named &amp;lt;code&amp;gt;&amp;amp;lt;issuer_number&amp;amp;gt;-a-descriptive-topic-name&amp;lt;/code&amp;gt;. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout -b 1906-uninstall-extensions-on-restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 4. Add a note to the issue with a link pointing to your topic. For example, see note [http://na-mic.org/Mantis/view.php?id=1906#c4578 1906#c4578]&lt;br /&gt;
&lt;br /&gt;
* 5. Send an email on the [http://massmail.bwh.harvard.edu/mailman/listinfo/slicer-devel slicer-developers] list pointing to the reported bug. Title of the email should start with &amp;lt;code&amp;gt;[BUG &amp;lt;IssueNumber&amp;gt;] Title of the bug - &amp;lt;category&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31157</id>
		<title>Documentation/Nightly/Developers/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31157"/>
		<updated>2013-04-14T14:27:51Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Slicer Setup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development with Git =&lt;br /&gt;
'''This page helps developers in the migration of Slicer4 from subversion to git.'''&lt;br /&gt;
&lt;br /&gt;
For now, see the [[Slicer:git-svn| instructions for setting up a git repository to interact with slicer's svn]].&lt;br /&gt;
&lt;br /&gt;
== Git ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&lt;br /&gt;
Git is an extremely powerful version control tool that supports many different &amp;quot;workflows&amp;quot; for indivudal development and collaboration.&lt;br /&gt;
Git can be obtained as described on our [[Documentation/Nightly/Developers/Git/Download | Git download page]].&lt;br /&gt;
&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see our [[Documentation/Nightly/Developers/Git/Resources | Git resource links]] for third party documentation, such as the [http://progit.org/book/ ProGit Book].&lt;br /&gt;
&lt;br /&gt;
== Slicer Setup ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
1.&lt;br /&gt;
Follow instructions on [[Documentation/Nightly/Developers/StartHere|Start Here]] page to clone the Slicer repo from Github.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
2.&lt;br /&gt;
Run the developer setup script to set up your Slicer work tree&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./Utilities/SetupForDevelopment.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[https://github.com/Slicer/Slicer/blob/master/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
This script will setup git user info and git hooks.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Git Hooks ==&lt;br /&gt;
* Hooks are stored in the main Slicer4 repository under a separate branch called [https://github.com/sankhesh/Slicer/tree/hooks hooks].&lt;br /&gt;
* These hooks are pulled when the SetupForDevelopment script is run. They are placed in the .git/hooks directory to install them.&lt;br /&gt;
* The following local hooks are currently installed. See Git help on [http://www.kernel.org/pub/software/scm/git/docs/githooks.html githooks] for more details.&lt;br /&gt;
&lt;br /&gt;
=== pre-commit ===&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; before the commit message editor is fired up.  It checks the identity and content of changes:&lt;br /&gt;
&lt;br /&gt;
* Git &amp;lt;code&amp;gt;user.name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;user.email&amp;lt;/code&amp;gt; are set to something reasonable&lt;br /&gt;
* Git's standard whitespace checks (see help on &amp;lt;code&amp;gt;git diff --check&amp;lt;/code&amp;gt;)&lt;br /&gt;
* The staged changes do not introduce any leading TABs in source files (we indent with spaces)&lt;br /&gt;
* File modes look reasonable (no executable .cxx files, scripts with shebang lines are executable)&lt;br /&gt;
* File size is not too large (don't commit big data files; prints limit and instructions on rejection)&lt;br /&gt;
* Files do not have very long lines (longer than 160 characters).&lt;br /&gt;
&lt;br /&gt;
One of Git's standard whitespace checks is to reject ''trailing'' whitespace on lines that were added or modified.&lt;br /&gt;
Many people consider extra space characters at the end of a line to be an unprofessional style (including Git's own developers). NA-MIC/Slicer4 repository requires that all trailing whitespaces be removed before committing changes.&lt;br /&gt;
Text editors typically have a mode to highlight trailing whitespace:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Emacs&lt;br /&gt;
|&lt;br /&gt;
 (custom-set-variables '(show-trailing-whitespace t))&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Vim&lt;br /&gt;
|&lt;br /&gt;
 :highlight ExtraWhitespace ctermbg=red guibg=red&lt;br /&gt;
 :match ExtraWhitespace /\s\+$/&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Visual Studio&lt;br /&gt;
|&lt;br /&gt;
 To toggle viewing of white space characters, with a source&lt;br /&gt;
 file document active, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Advanced &amp;gt; View White Space'''&lt;br /&gt;
 &lt;br /&gt;
 (2-stroke keyboard shortcut: '''Ctrl+R, Ctrl+W''')&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Notepad++ (v5.6.7)&lt;br /&gt;
|&lt;br /&gt;
 To eliminate trailing white space, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Trim Trailing Space'''&lt;br /&gt;
 &lt;br /&gt;
 To toggle viewing of white space characters, choose from the&lt;br /&gt;
 menu items:&lt;br /&gt;
 &lt;br /&gt;
  '''View &amp;gt; Show Symbol &amp;gt;''' (multiple items, choose one...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== commit-msg ===&lt;br /&gt;
&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; after the commit message is saved.  It checks the commit message format:&lt;br /&gt;
&lt;br /&gt;
* The first line must be between 8 and 78 characters long.  If you were writing an email to describe the change, this would be the Subject line.&lt;br /&gt;
* The first line must not have leading or trailing whitespace.&lt;br /&gt;
* NA-MIC/Slicer4 requires commit messages to start with a commit type. Valid commit types are:&lt;br /&gt;
   BUG:   - a change made to fix a runtime issue&lt;br /&gt;
            (crash, segmentation fault, exception, or incorrect result,&lt;br /&gt;
   COMP:  - a fix for a compilation issue, error or warning,&lt;br /&gt;
   ENH:   - new functionality added to the project,&lt;br /&gt;
   PERF:  - a performance improvement,&lt;br /&gt;
   STYLE: - a change that does not impact the logic or execution of the code.&lt;br /&gt;
            (improve coding style, comments, documentation).&lt;br /&gt;
Note that the ':'(colon) directly follows the commit tag. For example, it is: &amp;quot;STYLE:&amp;quot; not &amp;quot;STYLE :&amp;quot;&lt;br /&gt;
* The second line must be blank, if present.&lt;br /&gt;
* The third line and below may be free-form.  Try to keep paragraph text formatted in 72 columns (this is not enforced).&lt;br /&gt;
&lt;br /&gt;
* GUI and text-based tools that help view history typically use the first line (Subject line) from the commit message to give a one-line summary of each commit.&lt;br /&gt;
This allows a medium-level view of history, but works well only if developers write good Subject lines for their commits.&lt;br /&gt;
&lt;br /&gt;
** Examples of ''improper'' commit messages:&lt;br /&gt;
&lt;br /&gt;
 Fixed&lt;br /&gt;
&lt;br /&gt;
This is too short and not informative at all. It does not name a commit type either.&lt;br /&gt;
&lt;br /&gt;
 ENH: I did a really complicated change and I am trying to describe the entire thing with a big message entered on the command line.&lt;br /&gt;
&lt;br /&gt;
This is too long and defeats the purpose of a Subject line.&lt;br /&gt;
&lt;br /&gt;
** A good commit message would look something like this:&lt;br /&gt;
&lt;br /&gt;
  BUG: Fixed improper referencing of pointers&lt;br /&gt;
&lt;br /&gt;
* Further adding the Mantis issue number to the commit message is good practice. This helps checking the history of the issue on Mantis and knowing why the change was done in the first place.&lt;br /&gt;
&lt;br /&gt;
* Many CVS users develop the habit of using the &amp;quot;-m&amp;quot; commit option to specify the whole message on the command line.&lt;br /&gt;
This is probably because in CVS it is hard to abort a commit if it already brought up the message editor.&lt;br /&gt;
In Git this is trivial.  Just leave the message blank and the whole commit will be aborted.&lt;br /&gt;
Furthermore, since commits are not published automatically it is easy to allow the commit to complete and then fix it with &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Further Work ==&lt;br /&gt;
* Setting up a master/next git development workflow similar to that followed by large open source projects such as [http://git.kernel.org/cgit/git/git.git/refs/?id=refs/heads/master git.git], [http://paraview.org/gitweb?p=ParaView.git;a=heads ParaView]. A good description on this model is provided here: http://nvie.com/posts/a-successful-git-branching-model/&lt;br /&gt;
* Setting up Git aliases for better management of push/pull requests&lt;br /&gt;
* Possible gerrit integration&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Build_Instructions/CheckoutSourceCode&amp;diff=31156</id>
		<title>Documentation/Nightly/Developers/Build Instructions/CheckoutSourceCode</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Build_Instructions/CheckoutSourceCode&amp;diff=31156"/>
		<updated>2013-04-14T14:26:33Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CHECKOUT slicer source files ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
1. While it is not enforced, we strongly recommend you to '''AVOID''' the use of '''SPACES''' for both the &amp;lt;code&amp;gt;source directory&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;build directory&amp;lt;/code&amp;gt;. We mean it.&lt;br /&gt;
&lt;br /&gt;
2. Even if you use &amp;lt;code&amp;gt;svn&amp;lt;/code&amp;gt; to check out Slicer source code, you will need to have &amp;lt;code&amp;gt;git&amp;lt;/code&amp;gt; installed to checkout and build other libraries. '''YES''', you need to install the things listed in the [[Documentation/{{documentation/version}}/Developers/Build Instructions/Prerequisites|prerequisites]] !.&lt;br /&gt;
&lt;br /&gt;
3. Reading the following page: [[Slicer:git-svn|Slicer guide to &amp;lt;code&amp;gt;git-svn&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
&lt;br /&gt;
If you plan on contributing code, checking the code using Git and configuring the &amp;lt;code&amp;gt;git-svn&amp;lt;/code&amp;gt; bridge is the way to go. See [[Documentation/{{documentation/version}}/Developers/Tutorials/ContributePatch|How to contribute a patch ?]]&lt;br /&gt;
&lt;br /&gt;
* Clone the github repository&lt;br /&gt;
&lt;br /&gt;
  git clone git://github.com/Slicer/Slicer.git&lt;br /&gt;
&lt;br /&gt;
* Setup the development environment using the [https://github.com/Slicer/Slicer/blob/master/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;] script as described on our [[Documentation/Nightly/Developers/DevelopmentWithGit | Development With Git]] page.&lt;br /&gt;
&lt;br /&gt;
* Configure the &amp;lt;code&amp;gt;git-svn&amp;lt;/code&amp;gt; bridge to ensure the mapping with svn revision.&lt;br /&gt;
&lt;br /&gt;
  cd Slicer&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;
=== Svn ===&lt;br /&gt;
&lt;br /&gt;
To simply build Slicer, getting the code using &amp;lt;code&amp;gt;svn&amp;lt;/code&amp;gt; is a more straight-forward approach.&lt;br /&gt;
&lt;br /&gt;
  svn co http://svn.slicer.org/Slicer4/trunk Slicer&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31155</id>
		<title>Documentation/Nightly/Developers/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31155"/>
		<updated>2013-04-14T14:17:56Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development with Git =&lt;br /&gt;
'''This page helps developers in the migration of Slicer4 from subversion to git.'''&lt;br /&gt;
&lt;br /&gt;
For now, see the [[Slicer:git-svn| instructions for setting up a git repository to interact with slicer's svn]].&lt;br /&gt;
&lt;br /&gt;
== Git ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&lt;br /&gt;
Git is an extremely powerful version control tool that supports many different &amp;quot;workflows&amp;quot; for indivudal development and collaboration.&lt;br /&gt;
Git can be obtained as described on our [[Documentation/Nightly/Developers/Git/Download | Git download page]].&lt;br /&gt;
&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see our [[Documentation/Nightly/Developers/Git/Resources | Git resource links]] for third party documentation, such as the [http://progit.org/book/ ProGit Book].&lt;br /&gt;
&lt;br /&gt;
== Slicer Setup ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
1.&lt;br /&gt;
Follow instructions on [[Documentation/Nightly/Developers/StartHere|Start Here]] page to clone the Slicer repo from Github.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
2.&lt;br /&gt;
Run the developer setup script to set up your Slicer work tree&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./Utilities/SetupForDevelopment.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[https://github.com/sankhesh/Slicer/blob/2834-consolidate-svn-git-hooks/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
This script will setup git user info and git hooks.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Git Hooks ==&lt;br /&gt;
* Hooks are stored in the main Slicer4 repository under a separate branch called [https://github.com/sankhesh/Slicer/tree/hooks hooks].&lt;br /&gt;
* These hooks are pulled when the SetupForDevelopment script is run. They are placed in the .git/hooks directory to install them.&lt;br /&gt;
* The following local hooks are currently installed. See Git help on [http://www.kernel.org/pub/software/scm/git/docs/githooks.html githooks] for more details.&lt;br /&gt;
&lt;br /&gt;
=== pre-commit ===&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; before the commit message editor is fired up.  It checks the identity and content of changes:&lt;br /&gt;
&lt;br /&gt;
* Git &amp;lt;code&amp;gt;user.name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;user.email&amp;lt;/code&amp;gt; are set to something reasonable&lt;br /&gt;
* Git's standard whitespace checks (see help on &amp;lt;code&amp;gt;git diff --check&amp;lt;/code&amp;gt;)&lt;br /&gt;
* The staged changes do not introduce any leading TABs in source files (we indent with spaces)&lt;br /&gt;
* File modes look reasonable (no executable .cxx files, scripts with shebang lines are executable)&lt;br /&gt;
* File size is not too large (don't commit big data files; prints limit and instructions on rejection)&lt;br /&gt;
* Files do not have very long lines (longer than 160 characters).&lt;br /&gt;
&lt;br /&gt;
One of Git's standard whitespace checks is to reject ''trailing'' whitespace on lines that were added or modified.&lt;br /&gt;
Many people consider extra space characters at the end of a line to be an unprofessional style (including Git's own developers). NA-MIC/Slicer4 repository requires that all trailing whitespaces be removed before committing changes.&lt;br /&gt;
Text editors typically have a mode to highlight trailing whitespace:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Emacs&lt;br /&gt;
|&lt;br /&gt;
 (custom-set-variables '(show-trailing-whitespace t))&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Vim&lt;br /&gt;
|&lt;br /&gt;
 :highlight ExtraWhitespace ctermbg=red guibg=red&lt;br /&gt;
 :match ExtraWhitespace /\s\+$/&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Visual Studio&lt;br /&gt;
|&lt;br /&gt;
 To toggle viewing of white space characters, with a source&lt;br /&gt;
 file document active, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Advanced &amp;gt; View White Space'''&lt;br /&gt;
 &lt;br /&gt;
 (2-stroke keyboard shortcut: '''Ctrl+R, Ctrl+W''')&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Notepad++ (v5.6.7)&lt;br /&gt;
|&lt;br /&gt;
 To eliminate trailing white space, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Trim Trailing Space'''&lt;br /&gt;
 &lt;br /&gt;
 To toggle viewing of white space characters, choose from the&lt;br /&gt;
 menu items:&lt;br /&gt;
 &lt;br /&gt;
  '''View &amp;gt; Show Symbol &amp;gt;''' (multiple items, choose one...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== commit-msg ===&lt;br /&gt;
&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; after the commit message is saved.  It checks the commit message format:&lt;br /&gt;
&lt;br /&gt;
* The first line must be between 8 and 78 characters long.  If you were writing an email to describe the change, this would be the Subject line.&lt;br /&gt;
* The first line must not have leading or trailing whitespace.&lt;br /&gt;
* NA-MIC/Slicer4 requires commit messages to start with a commit type. Valid commit types are:&lt;br /&gt;
   BUG:   - a change made to fix a runtime issue&lt;br /&gt;
            (crash, segmentation fault, exception, or incorrect result,&lt;br /&gt;
   COMP:  - a fix for a compilation issue, error or warning,&lt;br /&gt;
   ENH:   - new functionality added to the project,&lt;br /&gt;
   PERF:  - a performance improvement,&lt;br /&gt;
   STYLE: - a change that does not impact the logic or execution of the code.&lt;br /&gt;
            (improve coding style, comments, documentation).&lt;br /&gt;
Note that the ':'(colon) directly follows the commit tag. For example, it is: &amp;quot;STYLE:&amp;quot; not &amp;quot;STYLE :&amp;quot;&lt;br /&gt;
* The second line must be blank, if present.&lt;br /&gt;
* The third line and below may be free-form.  Try to keep paragraph text formatted in 72 columns (this is not enforced).&lt;br /&gt;
&lt;br /&gt;
* GUI and text-based tools that help view history typically use the first line (Subject line) from the commit message to give a one-line summary of each commit.&lt;br /&gt;
This allows a medium-level view of history, but works well only if developers write good Subject lines for their commits.&lt;br /&gt;
&lt;br /&gt;
** Examples of ''improper'' commit messages:&lt;br /&gt;
&lt;br /&gt;
 Fixed&lt;br /&gt;
&lt;br /&gt;
This is too short and not informative at all. It does not name a commit type either.&lt;br /&gt;
&lt;br /&gt;
 ENH: I did a really complicated change and I am trying to describe the entire thing with a big message entered on the command line.&lt;br /&gt;
&lt;br /&gt;
This is too long and defeats the purpose of a Subject line.&lt;br /&gt;
&lt;br /&gt;
** A good commit message would look something like this:&lt;br /&gt;
&lt;br /&gt;
  BUG: Fixed improper referencing of pointers&lt;br /&gt;
&lt;br /&gt;
* Further adding the Mantis issue number to the commit message is good practice. This helps checking the history of the issue on Mantis and knowing why the change was done in the first place.&lt;br /&gt;
&lt;br /&gt;
* Many CVS users develop the habit of using the &amp;quot;-m&amp;quot; commit option to specify the whole message on the command line.&lt;br /&gt;
This is probably because in CVS it is hard to abort a commit if it already brought up the message editor.&lt;br /&gt;
In Git this is trivial.  Just leave the message blank and the whole commit will be aborted.&lt;br /&gt;
Furthermore, since commits are not published automatically it is easy to allow the commit to complete and then fix it with &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Further Work ==&lt;br /&gt;
* Setting up a master/next git development workflow similar to that followed by large open source projects such as [http://git.kernel.org/cgit/git/git.git/refs/?id=refs/heads/master git.git], [http://paraview.org/gitweb?p=ParaView.git;a=heads ParaView]. A good description on this model is provided here: http://nvie.com/posts/a-successful-git-branching-model/&lt;br /&gt;
* Setting up Git aliases for better management of push/pull requests&lt;br /&gt;
* Possible gerrit integration&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Git&amp;diff=31154</id>
		<title>Documentation/Nightly/Developers/Git</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Git&amp;diff=31154"/>
		<updated>2013-04-14T14:04:03Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Documentation/{{documentation/version}}/Developers|Developers Information]]&amp;amp;larr;&lt;br /&gt;
&lt;br /&gt;
Git is the revision control system that Slicer uses.&lt;br /&gt;
&lt;br /&gt;
*[[Documentation/Nightly/Developers/Git/Download|Git/Download]]&lt;br /&gt;
*[[Documentation/Nightly/Developers/Git/Resources|Git/Resources]]&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Git/Resources&amp;diff=31153</id>
		<title>Documentation/Nightly/Developers/Git/Resources</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Git/Resources&amp;diff=31153"/>
		<updated>2013-04-14T13:55:00Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: Created page with 'Additional information about Git may be obtained at these sites:  * [http://git-scm.com Git Homepage] * [http://try.github.com GitHub Try Git In Your Browser] * [http://git.wiki.…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Additional information about Git may be obtained at these sites:&lt;br /&gt;
&lt;br /&gt;
* [http://git-scm.com Git Homepage]&lt;br /&gt;
* [http://try.github.com GitHub Try Git In Your Browser]&lt;br /&gt;
* [http://git.wiki.kernel.org/index.php/GitDocumentation Git Documentation Wiki]&lt;br /&gt;
* [http://book.git-scm.com/ Git Community Book]&lt;br /&gt;
* [http://www.kernel.org/pub/software/scm/git/docs/everyday.html Everyday Git]&lt;br /&gt;
* [http://github.com/guides/git-cheat-sheet Git Cheat-Sheet]&lt;br /&gt;
* [http://git-scm.com/book/ Pro Git]&lt;br /&gt;
* [http://gitref.org/ Git Reference]&lt;br /&gt;
* [http://marklodato.github.com/visual-git-guide/ A Visual Git Reference]&lt;br /&gt;
* [http://nvie.com/posts/a-successful-git-branching-model/ A successful Git branching model] [http://github.com/downloads/nvie/gitflow/Git-branching-model.pdf PDF]&lt;br /&gt;
* [http://pcottle.github.com/learnGitBranching/ LearnGitBranching - Web application designed to help beginners grasp the powerful concepts behind branching]&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Git/Download&amp;diff=31152</id>
		<title>Documentation/Nightly/Developers/Git/Download</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Git/Download&amp;diff=31152"/>
		<updated>2013-04-14T13:53:25Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: Created page with '==Generic==  Visit the main Git [http://www.git-scm.com/download download site].  ==Windows==  Git comes in two flavors on Windows:  * A Windows native application installer * A …'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Generic==&lt;br /&gt;
&lt;br /&gt;
Visit the main Git [http://www.git-scm.com/download download site].&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
&lt;br /&gt;
Git comes in two flavors on Windows:&lt;br /&gt;
&lt;br /&gt;
* A Windows native application installer&lt;br /&gt;
* A Cygwin package&lt;br /&gt;
&lt;br /&gt;
Choose one and stick with it.&lt;br /&gt;
They do not get along well in a given work tree on disk&lt;br /&gt;
(the repository formats are compatible but the &amp;quot;stat cache&amp;quot; of the work tree is not unless &amp;lt;code&amp;gt;core.filemode&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
===MSysGit===&lt;br /&gt;
&lt;br /&gt;
Download the &amp;quot;Full installer for official Git&amp;quot; from [http://code.google.com/p/msysgit/downloads/list here]. You want to download the file that is named something like&lt;br /&gt;
 &lt;br /&gt;
 Git-1.7.10-preview20120409.exe&lt;br /&gt;
''If you notice that the filename has changed (because a new version was released or something similar), please update this wiki!''&lt;br /&gt;
&lt;br /&gt;
Run the installer.  When prompted, choose to ''not'' modify the &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; and choose the &amp;lt;code&amp;gt;core.autocrlf=true&amp;lt;/code&amp;gt; option.&lt;br /&gt;
Launch the &amp;quot;Git Bash&amp;quot; tool to get a command line shell with Git.&lt;br /&gt;
&lt;br /&gt;
===Cygwin===&lt;br /&gt;
&lt;br /&gt;
Install packages:&lt;br /&gt;
&lt;br /&gt;
* '''git''': Git command-line tool&lt;br /&gt;
* '''gitk''': Graphical history browser&lt;br /&gt;
* '''git-completion''': Bash shell completion rules&lt;br /&gt;
&lt;br /&gt;
Launch a Cygwin command prompt to get a command line shell with Git.&lt;br /&gt;
&lt;br /&gt;
==Mac==&lt;br /&gt;
&lt;br /&gt;
===Xcode 4===&lt;br /&gt;
&lt;br /&gt;
If you have Xcode 4 installed, you already have git installed.&lt;br /&gt;
&lt;br /&gt;
Verify with:&lt;br /&gt;
&lt;br /&gt;
 $ which git&lt;br /&gt;
 /usr/bin/git&lt;br /&gt;
&lt;br /&gt;
 $ git --version&lt;br /&gt;
 git version 1.7.4.4&lt;br /&gt;
&lt;br /&gt;
===OS X Installer===&lt;br /&gt;
&lt;br /&gt;
Download an installer from [http://code.google.com/p/git-osx-installer/ here].&lt;br /&gt;
&lt;br /&gt;
===MacPorts===&lt;br /&gt;
&lt;br /&gt;
Enter these commands:&lt;br /&gt;
&lt;br /&gt;
 $ sudo port selfupdate&lt;br /&gt;
 $ sudo port install git-core +doc&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
&lt;br /&gt;
Popular Linux distributions already come with packages for Git.&lt;br /&gt;
Typically the packages are called:&lt;br /&gt;
&lt;br /&gt;
* '''git-core''': Git command-line tool&lt;br /&gt;
* '''git-doc''': Git documentation&lt;br /&gt;
* '''gitk''': Graphical history browser&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31151</id>
		<title>Documentation/Nightly/Developers/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31151"/>
		<updated>2013-04-14T13:46:25Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Testing this setup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development with Git =&lt;br /&gt;
'''This page helps developers in the migration of Slicer4 from subversion to git.'''&lt;br /&gt;
&lt;br /&gt;
For now, see the [[Slicer:git-svn| instructions for setting up a git repository to interact with slicer's svn]].&lt;br /&gt;
&lt;br /&gt;
== Git ==&lt;br /&gt;
[http://www.paraview.org/Wiki/Git/Download Install Instructions]&lt;br /&gt;
&lt;br /&gt;
== Slicer Setup ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
1.&lt;br /&gt;
Follow instructions on [[Documentation/Nightly/Developers/StartHere|Start Here]] page to clone the Slicer repo from Github.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
2.&lt;br /&gt;
Run the developer setup script to set up your Slicer work tree&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./Utilities/SetupForDevelopment.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[https://github.com/sankhesh/Slicer/blob/2834-consolidate-svn-git-hooks/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
This script will setup git user info and git hooks.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Git Hooks ==&lt;br /&gt;
* Hooks are stored in the main Slicer4 repository under a separate branch called [https://github.com/sankhesh/Slicer/tree/hooks hooks].&lt;br /&gt;
* These hooks are pulled when the SetupForDevelopment script is run. They are placed in the .git/hooks directory to install them.&lt;br /&gt;
* The following local hooks are currently installed. See Git help on [http://www.kernel.org/pub/software/scm/git/docs/githooks.html githooks] for more details.&lt;br /&gt;
&lt;br /&gt;
=== pre-commit ===&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; before the commit message editor is fired up.  It checks the identity and content of changes:&lt;br /&gt;
&lt;br /&gt;
* Git &amp;lt;code&amp;gt;user.name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;user.email&amp;lt;/code&amp;gt; are set to something reasonable&lt;br /&gt;
* Git's standard whitespace checks (see help on &amp;lt;code&amp;gt;git diff --check&amp;lt;/code&amp;gt;)&lt;br /&gt;
* The staged changes do not introduce any leading TABs in source files (we indent with spaces)&lt;br /&gt;
* File modes look reasonable (no executable .cxx files, scripts with shebang lines are executable)&lt;br /&gt;
* File size is not too large (don't commit big data files; prints limit and instructions on rejection)&lt;br /&gt;
* Files do not have very long lines (longer than 160 characters).&lt;br /&gt;
&lt;br /&gt;
One of Git's standard whitespace checks is to reject ''trailing'' whitespace on lines that were added or modified.&lt;br /&gt;
Many people consider extra space characters at the end of a line to be an unprofessional style (including Git's own developers). NA-MIC/Slicer4 repository requires that all trailing whitespaces be removed before committing changes.&lt;br /&gt;
Text editors typically have a mode to highlight trailing whitespace:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Emacs&lt;br /&gt;
|&lt;br /&gt;
 (custom-set-variables '(show-trailing-whitespace t))&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Vim&lt;br /&gt;
|&lt;br /&gt;
 :highlight ExtraWhitespace ctermbg=red guibg=red&lt;br /&gt;
 :match ExtraWhitespace /\s\+$/&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Visual Studio&lt;br /&gt;
|&lt;br /&gt;
 To toggle viewing of white space characters, with a source&lt;br /&gt;
 file document active, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Advanced &amp;gt; View White Space'''&lt;br /&gt;
 &lt;br /&gt;
 (2-stroke keyboard shortcut: '''Ctrl+R, Ctrl+W''')&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Notepad++ (v5.6.7)&lt;br /&gt;
|&lt;br /&gt;
 To eliminate trailing white space, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Trim Trailing Space'''&lt;br /&gt;
 &lt;br /&gt;
 To toggle viewing of white space characters, choose from the&lt;br /&gt;
 menu items:&lt;br /&gt;
 &lt;br /&gt;
  '''View &amp;gt; Show Symbol &amp;gt;''' (multiple items, choose one...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== commit-msg ===&lt;br /&gt;
&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; after the commit message is saved.  It checks the commit message format:&lt;br /&gt;
&lt;br /&gt;
* The first line must be between 8 and 78 characters long.  If you were writing an email to describe the change, this would be the Subject line.&lt;br /&gt;
* The first line must not have leading or trailing whitespace.&lt;br /&gt;
* NA-MIC/Slicer4 requires commit messages to start with a commit type. Valid commit types are:&lt;br /&gt;
   BUG:   - a change made to fix a runtime issue&lt;br /&gt;
            (crash, segmentation fault, exception, or incorrect result,&lt;br /&gt;
   COMP:  - a fix for a compilation issue, error or warning,&lt;br /&gt;
   ENH:   - new functionality added to the project,&lt;br /&gt;
   PERF:  - a performance improvement,&lt;br /&gt;
   STYLE: - a change that does not impact the logic or execution of the code.&lt;br /&gt;
            (improve coding style, comments, documentation).&lt;br /&gt;
Note that the ':'(colon) directly follows the commit tag. For example, it is: &amp;quot;STYLE:&amp;quot; not &amp;quot;STYLE :&amp;quot;&lt;br /&gt;
* The second line must be blank, if present.&lt;br /&gt;
* The third line and below may be free-form.  Try to keep paragraph text formatted in 72 columns (this is not enforced).&lt;br /&gt;
&lt;br /&gt;
* GUI and text-based tools that help view history typically use the first line (Subject line) from the commit message to give a one-line summary of each commit.&lt;br /&gt;
This allows a medium-level view of history, but works well only if developers write good Subject lines for their commits.&lt;br /&gt;
&lt;br /&gt;
** Examples of ''improper'' commit messages:&lt;br /&gt;
&lt;br /&gt;
 Fixed&lt;br /&gt;
&lt;br /&gt;
This is too short and not informative at all. It does not name a commit type either.&lt;br /&gt;
&lt;br /&gt;
 ENH: I did a really complicated change and I am trying to describe the entire thing with a big message entered on the command line.&lt;br /&gt;
&lt;br /&gt;
This is too long and defeats the purpose of a Subject line.&lt;br /&gt;
&lt;br /&gt;
** A good commit message would look something like this:&lt;br /&gt;
&lt;br /&gt;
  BUG: Fixed improper referencing of pointers&lt;br /&gt;
&lt;br /&gt;
* Further adding the Mantis issue number to the commit message is good practice. This helps checking the history of the issue on Mantis and knowing why the change was done in the first place.&lt;br /&gt;
&lt;br /&gt;
* Many CVS users develop the habit of using the &amp;quot;-m&amp;quot; commit option to specify the whole message on the command line.&lt;br /&gt;
This is probably because in CVS it is hard to abort a commit if it already brought up the message editor.&lt;br /&gt;
In Git this is trivial.  Just leave the message blank and the whole commit will be aborted.&lt;br /&gt;
Furthermore, since commits are not published automatically it is easy to allow the commit to complete and then fix it with &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Further Work ==&lt;br /&gt;
* Setting up a master/next git development workflow similar to that followed by large open source projects such as [http://git.kernel.org/cgit/git/git.git/refs/?id=refs/heads/master git.git], [http://paraview.org/gitweb?p=ParaView.git;a=heads ParaView]. A good description on this model is provided here: http://nvie.com/posts/a-successful-git-branching-model/&lt;br /&gt;
* Setting up Git aliases for better management of push/pull requests&lt;br /&gt;
* Possible gerrit integration&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31150</id>
		<title>Documentation/Nightly/Developers/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=31150"/>
		<updated>2013-04-12T16:08:12Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Downloading Git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development with Git =&lt;br /&gt;
'''This page helps developers in the migration of Slicer4 from subversion to git.'''&lt;br /&gt;
&lt;br /&gt;
For now, see the [[Slicer:git-svn| instructions for setting up a git repository to interact with slicer's svn]].&lt;br /&gt;
&lt;br /&gt;
== Git ==&lt;br /&gt;
[http://www.paraview.org/Wiki/Git/Download Install Instructions]&lt;br /&gt;
&lt;br /&gt;
== Slicer Setup ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
1.&lt;br /&gt;
Follow instructions on [[Documentation/Nightly/Developers/StartHere|Start Here]] page to clone the Slicer repo from Github.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
2.&lt;br /&gt;
Run the developer setup script to set up your Slicer work tree&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./Utilities/SetupForDevelopment.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[https://github.com/sankhesh/Slicer/blob/2834-consolidate-svn-git-hooks/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
This script will setup git user info and git hooks.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Git Hooks ==&lt;br /&gt;
* Hooks are stored in the main Slicer4 repository under a separate branch called [https://github.com/sankhesh/Slicer/tree/hooks hooks].&lt;br /&gt;
* These hooks are pulled when the SetupForDevelopment script is run. They are placed in the .git/hooks directory to install them.&lt;br /&gt;
* The following local hooks are currently installed. See Git help on [http://www.kernel.org/pub/software/scm/git/docs/githooks.html githooks] for more details.&lt;br /&gt;
&lt;br /&gt;
=== pre-commit ===&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; before the commit message editor is fired up.  It checks the identity and content of changes:&lt;br /&gt;
&lt;br /&gt;
* Git &amp;lt;code&amp;gt;user.name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;user.email&amp;lt;/code&amp;gt; are set to something reasonable&lt;br /&gt;
* Git's standard whitespace checks (see help on &amp;lt;code&amp;gt;git diff --check&amp;lt;/code&amp;gt;)&lt;br /&gt;
* The staged changes do not introduce any leading TABs in source files (we indent with spaces)&lt;br /&gt;
* File modes look reasonable (no executable .cxx files, scripts with shebang lines are executable)&lt;br /&gt;
* File size is not too large (don't commit big data files; prints limit and instructions on rejection)&lt;br /&gt;
* Files do not have very long lines (longer than 160 characters).&lt;br /&gt;
&lt;br /&gt;
One of Git's standard whitespace checks is to reject ''trailing'' whitespace on lines that were added or modified.&lt;br /&gt;
Many people consider extra space characters at the end of a line to be an unprofessional style (including Git's own developers). NA-MIC/Slicer4 repository requires that all trailing whitespaces be removed before committing changes.&lt;br /&gt;
Text editors typically have a mode to highlight trailing whitespace:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Emacs&lt;br /&gt;
|&lt;br /&gt;
 (custom-set-variables '(show-trailing-whitespace t))&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Vim&lt;br /&gt;
|&lt;br /&gt;
 :highlight ExtraWhitespace ctermbg=red guibg=red&lt;br /&gt;
 :match ExtraWhitespace /\s\+$/&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Visual Studio&lt;br /&gt;
|&lt;br /&gt;
 To toggle viewing of white space characters, with a source&lt;br /&gt;
 file document active, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Advanced &amp;gt; View White Space'''&lt;br /&gt;
 &lt;br /&gt;
 (2-stroke keyboard shortcut: '''Ctrl+R, Ctrl+W''')&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Notepad++ (v5.6.7)&lt;br /&gt;
|&lt;br /&gt;
 To eliminate trailing white space, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Trim Trailing Space'''&lt;br /&gt;
 &lt;br /&gt;
 To toggle viewing of white space characters, choose from the&lt;br /&gt;
 menu items:&lt;br /&gt;
 &lt;br /&gt;
  '''View &amp;gt; Show Symbol &amp;gt;''' (multiple items, choose one...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== commit-msg ===&lt;br /&gt;
&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; after the commit message is saved.  It checks the commit message format:&lt;br /&gt;
&lt;br /&gt;
* The first line must be between 8 and 78 characters long.  If you were writing an email to describe the change, this would be the Subject line.&lt;br /&gt;
* The first line must not have leading or trailing whitespace.&lt;br /&gt;
* NA-MIC/Slicer4 requires commit messages to start with a commit type. Valid commit types are:&lt;br /&gt;
   BUG:   - a change made to fix a runtime issue&lt;br /&gt;
            (crash, segmentation fault, exception, or incorrect result,&lt;br /&gt;
   COMP:  - a fix for a compilation issue, error or warning,&lt;br /&gt;
   ENH:   - new functionality added to the project,&lt;br /&gt;
   PERF:  - a performance improvement,&lt;br /&gt;
   STYLE: - a change that does not impact the logic or execution of the code.&lt;br /&gt;
            (improve coding style, comments, documentation).&lt;br /&gt;
Note that the ':'(colon) directly follows the commit tag. For example, it is: &amp;quot;STYLE:&amp;quot; not &amp;quot;STYLE :&amp;quot;&lt;br /&gt;
* The second line must be blank, if present.&lt;br /&gt;
* The third line and below may be free-form.  Try to keep paragraph text formatted in 72 columns (this is not enforced).&lt;br /&gt;
&lt;br /&gt;
* GUI and text-based tools that help view history typically use the first line (Subject line) from the commit message to give a one-line summary of each commit.&lt;br /&gt;
This allows a medium-level view of history, but works well only if developers write good Subject lines for their commits.&lt;br /&gt;
&lt;br /&gt;
** Examples of ''improper'' commit messages:&lt;br /&gt;
&lt;br /&gt;
 Fixed&lt;br /&gt;
&lt;br /&gt;
This is too short and not informative at all. It does not name a commit type either.&lt;br /&gt;
&lt;br /&gt;
 ENH: I did a really complicated change and I am trying to describe the entire thing with a big message entered on the command line.&lt;br /&gt;
&lt;br /&gt;
This is too long and defeats the purpose of a Subject line.&lt;br /&gt;
&lt;br /&gt;
** A good commit message would look something like this:&lt;br /&gt;
&lt;br /&gt;
  BUG: Fixed improper referencing of pointers&lt;br /&gt;
&lt;br /&gt;
* Further adding the Mantis issue number to the commit message is good practice. This helps checking the history of the issue on Mantis and knowing why the change was done in the first place.&lt;br /&gt;
&lt;br /&gt;
* Many CVS users develop the habit of using the &amp;quot;-m&amp;quot; commit option to specify the whole message on the command line.&lt;br /&gt;
This is probably because in CVS it is hard to abort a commit if it already brought up the message editor.&lt;br /&gt;
In Git this is trivial.  Just leave the message blank and the whole commit will be aborted.&lt;br /&gt;
Furthermore, since commits are not published automatically it is easy to allow the commit to complete and then fix it with &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Testing this setup ==&lt;br /&gt;
* You can checkout my branch from [https://github.com/sankhesh/Slicer/tree/2834-consolidate-svn-git-hooks here].&lt;br /&gt;
* Once cloned, you can run the SetupForDevelopment script as described above to setup git hooks.&lt;br /&gt;
* Kindly review the changes, test the hooks and provide your valuable comments/suggestions.&lt;br /&gt;
&lt;br /&gt;
== Further Work ==&lt;br /&gt;
* Setting up a master/next git development workflow similar to that followed by large open source projects such as [http://git.kernel.org/cgit/git/git.git/refs/?id=refs/heads/master git.git], [http://paraview.org/gitweb?p=ParaView.git;a=heads ParaView]. A good description on this model is provided here: http://nvie.com/posts/a-successful-git-branching-model/&lt;br /&gt;
* Setting up Git aliases for better management of push/pull requests&lt;br /&gt;
* Possible gerrit integration&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Developer_Meetings/20130402&amp;diff=31045</id>
		<title>Developer Meetings/20130402</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Developer_Meetings/20130402&amp;diff=31045"/>
		<updated>2013-04-02T17:55:57Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* To discuss */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== To discuss ==&lt;br /&gt;
&lt;br /&gt;
* Build DCMTK shared? http://www.na-mic.org/Bug/view.php?id=3040&lt;br /&gt;
* Fiducials are written to a separate file with a &amp;quot;|&amp;quot; delimiter - http://slicer-devel.65872.n3.nabble.com/fcsv-files-tt4028175.html&lt;br /&gt;
* CLI's are broken: http://na-mic.org/Mantis/view.php?id=3042&lt;br /&gt;
* Take a decision for the Ohloh accounts: Slicer vs Slicer4&lt;br /&gt;
* Save/Restore tree state issue: http://www.na-mic.org/Bug/view.php?id=2557&lt;br /&gt;
* [[Documentation/Labs/DevelopmentWithGit | Git Development]]&lt;br /&gt;
* Screenshot based QtTesting support: http://www.na-mic.org/Bug/view.php?id=2567&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Developer_Meetings/20130326&amp;diff=31018</id>
		<title>Developer Meetings/20130326</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Developer_Meetings/20130326&amp;diff=31018"/>
		<updated>2013-03-27T14:20:07Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== To discuss ==&lt;br /&gt;
*the discussion about how to reorganize the modules in Slicer should continue.&lt;br /&gt;
http://wiki.slicer.org/slicerWiki/index.php/Developer_Meetings/20130226#Module_reorganization&lt;br /&gt;
&lt;br /&gt;
*installed extensions do not display their logos but a generic image. Why? &lt;br /&gt;
** Jc: See Issue [http://www.na-mic.org/Bug/view.php?id=1907 1907]&lt;br /&gt;
[[image:Screen Shot 2013-03-20 at 3.18.35 PM.png|200px|thumb|right|This generic logo is displayed for all installed extensions]]&lt;br /&gt;
&lt;br /&gt;
*the majority of the extensions do not have &amp;quot;advertising&amp;quot; information available. Where does this information come from?&lt;br /&gt;
[[image:Screen Shot 2013-03-20 at 3.19.05 PM.png|200px|thumb|right|This is an example of the lack of advertising information that should be provided. virtually none of the extensions have that information available.]]&lt;br /&gt;
&lt;br /&gt;
*The social media buttons do not work. What is their function?&lt;br /&gt;
** Jc: Waiting the functionality is implemented. Button will be hidden. See [https://github.com/midasplatform/slicerappstore/pull/38 slicerappstore/pull/38]  [[image:Screen Shot 2013-03-20 at 3.28.33 PM.png|200px|thumb|right|These buttons do not do anything right now. If they were functional, what would they accomplish?]]&lt;br /&gt;
[[image:Bad-aspect-ratio-Screen Shot 2013-03-26 at 7.59.29 AM.png|200px|thumb|right|The squashed images look terrible.  Also note that even the &lt;br /&gt;
social network icons are incorrectly resized so that google plus turns into google minus!  Fail.]]&lt;br /&gt;
&lt;br /&gt;
* Extension screenshots have the wrong aspect ratio &lt;br /&gt;
** appstore code should letterbox the images and not do a non-uniform scale&lt;br /&gt;
&lt;br /&gt;
* The locale issue - who will take this on?&lt;br /&gt;
** http://www.na-mic.org/Bug/view.php?id=3029&lt;br /&gt;
&lt;br /&gt;
* Release scheduling for 4.3, 4.4 ([http://www.na-mic.org/Bug/roadmap_page.php Roadmap])&lt;br /&gt;
** Remaining ITKv4 issues (broken CLIs, failing tests, win32 builds, others...?)&lt;br /&gt;
** Turning on SimpleITK&lt;br /&gt;
&lt;br /&gt;
*Ohloh presence:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
From Jc:&lt;br /&gt;
There are currently three results for &amp;quot;Slicer4. See http://www.ohloh.net/p?q=slicer4&lt;br /&gt;
 - Slicer4:  http://www.ohloh.net/p/slicer&lt;br /&gt;
 - pieper's Slicer4:  http://www.ohloh.net/p/piepers_Slicer4&lt;br /&gt;
 - Slicer: http://www.ohloh.net/p/3376&lt;br /&gt;
We should either have just &amp;quot;Slicer&amp;quot; / &amp;quot;3DSlicer&amp;quot;&lt;br /&gt;
or on project for each version:&lt;br /&gt;
  3DSlicer 2&lt;br /&gt;
  3DSlicer 3&lt;br /&gt;
  3DSlicer 4&lt;br /&gt;
I would suggest the first approach.&lt;br /&gt;
Hth&lt;br /&gt;
Jc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{pre2|&lt;br /&gt;
From Julien:&lt;br /&gt;
I don't think ohloh is meant to host multiple versions of the same project, I would advise against having multiple versions on ohloh. Especially because Slicer3 is not active anymore and Slicer4 is built on top of Slicer3, it contains all the Slicer3 information.&lt;br /&gt;
If you look at the top 50 projects in ohloh, none of them are related to a specific version.&lt;br /&gt;
Julien.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
*Model Hierarchies plus scene views&lt;br /&gt;
** Crash on restoring Visual System scene view in Brain Atlas only after going into Models module [http://www.na-mic.org/Bug/view.php?id=2557 2557]&lt;br /&gt;
&lt;br /&gt;
* CMake'ified python: https://github.com/jcfr/Slicer/tree/use-cmakeified-python&lt;br /&gt;
** Currently investigating:&lt;br /&gt;
*** Windows: Crash on start.&lt;br /&gt;
*** Linux: Failed to import some module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
* Discussed module re-organization&lt;br /&gt;
** The idea would be to move every &amp;quot;legacy&amp;quot; cli into an extension and create a &amp;quot;meta&amp;quot; extension allowing to install all these cli modules at ones.&lt;br /&gt;
** Andriy is clarifying with Andras and Tamas the move of MRIBiasFieldCorrection&amp;quot; into legacy category.&lt;br /&gt;
&lt;br /&gt;
* Ron asked where the extension description should be entered so that it appear on the extension catalog.&lt;br /&gt;
** Description of extension lives in the extension metadata specified in the CMakeLists.txt of the extension. For example: https://github.com/Slicer/SkullStripper/blob/master/CMakeLists.txt#L5-11&lt;br /&gt;
** Using the metadata from the CMakeLists, the extension description file is then generated and added to the ExtensionsIndex. See https://github.com/Slicer/ExtensionsIndex/blob/master/SkullStripper.s4ext#L37-38&lt;br /&gt;
&lt;br /&gt;
*Ohloh presence: All agree we should have on entry named &amp;quot;Slicer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Nicole, Sankhesh and Julien discussed the &amp;quot;Model Hierarchies&amp;quot; +  &amp;quot;scene views&amp;quot; issue&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=30980</id>
		<title>Documentation/Nightly/Developers/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=30980"/>
		<updated>2013-03-21T15:53:25Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Further Work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development with Git =&lt;br /&gt;
'''This page helps developers in the migration of Slicer4 from subversion to git.'''&lt;br /&gt;
&lt;br /&gt;
== Downloading Git ==&lt;br /&gt;
[http://www.paraview.org/Wiki/Git/Download| Download Instructions]&lt;br /&gt;
&lt;br /&gt;
== Slicer Setup ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
1.&lt;br /&gt;
Follow instructions on [[Documentation/Nightly/Developers/StartHere|Start Here]] page to clone the Slicer repo from Github.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
2.&lt;br /&gt;
Run the developer setup script to set up your Slicer work tree&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./Utilities/SetupForDevelopment.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[https://github.com/sankhesh/Slicer/blob/2834-consolidate-svn-git-hooks/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
This script will setup git user info and git hooks.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Git Hooks ==&lt;br /&gt;
* Hooks are stored in the main Slicer4 repository under a separate branch called [https://github.com/sankhesh/Slicer/tree/hooks hooks].&lt;br /&gt;
* These hooks are pulled when the SetupForDevelopment script is run. They are placed in the .git/hooks directory to install them.&lt;br /&gt;
* The following local hooks are currently installed. See Git help on [http://www.kernel.org/pub/software/scm/git/docs/githooks.html githooks] for more details.&lt;br /&gt;
&lt;br /&gt;
=== pre-commit ===&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; before the commit message editor is fired up.  It checks the identity and content of changes:&lt;br /&gt;
&lt;br /&gt;
* Git &amp;lt;code&amp;gt;user.name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;user.email&amp;lt;/code&amp;gt; are set to something reasonable&lt;br /&gt;
* Git's standard whitespace checks (see help on &amp;lt;code&amp;gt;git diff --check&amp;lt;/code&amp;gt;)&lt;br /&gt;
* The staged changes do not introduce any leading TABs in source files (we indent with spaces)&lt;br /&gt;
* File modes look reasonable (no executable .cxx files, scripts with shebang lines are executable)&lt;br /&gt;
* File size is not too large (don't commit big data files; prints limit and instructions on rejection)&lt;br /&gt;
* Files do not have very long lines (longer than 160 characters).&lt;br /&gt;
&lt;br /&gt;
One of Git's standard whitespace checks is to reject ''trailing'' whitespace on lines that were added or modified.&lt;br /&gt;
Many people consider extra space characters at the end of a line to be an unprofessional style (including Git's own developers). NA-MIC/Slicer4 repository requires that all trailing whitespaces be removed before committing changes.&lt;br /&gt;
Text editors typically have a mode to highlight trailing whitespace:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Emacs&lt;br /&gt;
|&lt;br /&gt;
 (custom-set-variables '(show-trailing-whitespace t))&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Vim&lt;br /&gt;
|&lt;br /&gt;
 :highlight ExtraWhitespace ctermbg=red guibg=red&lt;br /&gt;
 :match ExtraWhitespace /\s\+$/&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Visual Studio&lt;br /&gt;
|&lt;br /&gt;
 To toggle viewing of white space characters, with a source&lt;br /&gt;
 file document active, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Advanced &amp;gt; View White Space'''&lt;br /&gt;
 &lt;br /&gt;
 (2-stroke keyboard shortcut: '''Ctrl+R, Ctrl+W''')&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Notepad++ (v5.6.7)&lt;br /&gt;
|&lt;br /&gt;
 To eliminate trailing white space, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Trim Trailing Space'''&lt;br /&gt;
 &lt;br /&gt;
 To toggle viewing of white space characters, choose from the&lt;br /&gt;
 menu items:&lt;br /&gt;
 &lt;br /&gt;
  '''View &amp;gt; Show Symbol &amp;gt;''' (multiple items, choose one...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== commit-msg ===&lt;br /&gt;
&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; after the commit message is saved.  It checks the commit message format:&lt;br /&gt;
&lt;br /&gt;
* The first line must be between 8 and 78 characters long.  If you were writing an email to describe the change, this would be the Subject line.&lt;br /&gt;
* The first line must not have leading or trailing whitespace.&lt;br /&gt;
* NA-MIC/Slicer4 requires commit messages to start with a commit type. Valid commit types are:&lt;br /&gt;
   BUG:   - a change made to fix a runtime issue&lt;br /&gt;
            (crash, segmentation fault, exception, or incorrect result,&lt;br /&gt;
   COMP:  - a fix for a compilation issue, error or warning,&lt;br /&gt;
   ENH:   - new functionality added to the project,&lt;br /&gt;
   PERF:  - a performance improvement,&lt;br /&gt;
   STYLE: - a change that does not impact the logic or execution of the code.&lt;br /&gt;
            (improve coding style, comments, documentation).&lt;br /&gt;
Note that the ':'(colon) directly follows the commit tag. For example, it is: &amp;quot;STYLE:&amp;quot; not &amp;quot;STYLE :&amp;quot;&lt;br /&gt;
* The second line must be blank, if present.&lt;br /&gt;
* The third line and below may be free-form.  Try to keep paragraph text formatted in 72 columns (this is not enforced).&lt;br /&gt;
&lt;br /&gt;
* GUI and text-based tools that help view history typically use the first line (Subject line) from the commit message to give a one-line summary of each commit.&lt;br /&gt;
This allows a medium-level view of history, but works well only if developers write good Subject lines for their commits.&lt;br /&gt;
&lt;br /&gt;
** Examples of ''improper'' commit messages:&lt;br /&gt;
&lt;br /&gt;
 Fixed&lt;br /&gt;
&lt;br /&gt;
This is too short and not informative at all. It does not name a commit type either.&lt;br /&gt;
&lt;br /&gt;
 ENH: I did a really complicated change and I am trying to describe the entire thing with a big message entered on the command line.&lt;br /&gt;
&lt;br /&gt;
This is too long and defeats the purpose of a Subject line.&lt;br /&gt;
&lt;br /&gt;
** A good commit message would look something like this:&lt;br /&gt;
&lt;br /&gt;
  BUG: Fixed improper referencing of pointers&lt;br /&gt;
&lt;br /&gt;
* Further adding the Mantis issue number to the commit message is good practice. This helps checking the history of the issue on Mantis and knowing why the change was done in the first place.&lt;br /&gt;
&lt;br /&gt;
* Many CVS users develop the habit of using the &amp;quot;-m&amp;quot; commit option to specify the whole message on the command line.&lt;br /&gt;
This is probably because in CVS it is hard to abort a commit if it already brought up the message editor.&lt;br /&gt;
In Git this is trivial.  Just leave the message blank and the whole commit will be aborted.&lt;br /&gt;
Furthermore, since commits are not published automatically it is easy to allow the commit to complete and then fix it with &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Testing this setup ==&lt;br /&gt;
* You can checkout my branch from [https://github.com/sankhesh/Slicer/tree/2834-consolidate-svn-git-hooks here].&lt;br /&gt;
* Once cloned, you can run the SetupForDevelopment script as described above to setup git hooks.&lt;br /&gt;
* Kindly review the changes, test the hooks and provide your valuable comments/suggestions.&lt;br /&gt;
&lt;br /&gt;
== Further Work ==&lt;br /&gt;
* Setting up a master/next git development workflow similar to that followed by large open source projects such as [http://git.kernel.org/cgit/git/git.git/refs/?id=refs/heads/master git.git], [http://paraview.org/gitweb?p=ParaView.git;a=heads ParaView]. A good description on this model is provided here: http://nvie.com/posts/a-successful-git-branching-model/&lt;br /&gt;
* Setting up Git aliases for better management of push/pull requests&lt;br /&gt;
* Possible gerrit integration&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=30978</id>
		<title>Documentation/Nightly/Developers/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=30978"/>
		<updated>2013-03-21T14:00:52Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* pre-commit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development with Git =&lt;br /&gt;
'''This page helps developers in the migration of Slicer4 from subversion to git.'''&lt;br /&gt;
&lt;br /&gt;
== Downloading Git ==&lt;br /&gt;
[http://www.paraview.org/Wiki/Git/Download| Download Instructions]&lt;br /&gt;
&lt;br /&gt;
== Slicer Setup ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
1.&lt;br /&gt;
Follow instructions on [[Documentation/Nightly/Developers/StartHere|Start Here]] page to clone the Slicer repo from Github.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
2.&lt;br /&gt;
Run the developer setup script to set up your Slicer work tree&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./Utilities/SetupForDevelopment.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[https://github.com/sankhesh/Slicer/blob/2834-consolidate-svn-git-hooks/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
This script will setup git user info and git hooks.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Git Hooks ==&lt;br /&gt;
* Hooks are stored in the main Slicer4 repository under a separate branch called [https://github.com/sankhesh/Slicer/tree/hooks hooks].&lt;br /&gt;
* These hooks are pulled when the SetupForDevelopment script is run. They are placed in the .git/hooks directory to install them.&lt;br /&gt;
* The following local hooks are currently installed. See Git help on [http://www.kernel.org/pub/software/scm/git/docs/githooks.html githooks] for more details.&lt;br /&gt;
&lt;br /&gt;
=== pre-commit ===&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; before the commit message editor is fired up.  It checks the identity and content of changes:&lt;br /&gt;
&lt;br /&gt;
* Git &amp;lt;code&amp;gt;user.name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;user.email&amp;lt;/code&amp;gt; are set to something reasonable&lt;br /&gt;
* Git's standard whitespace checks (see help on &amp;lt;code&amp;gt;git diff --check&amp;lt;/code&amp;gt;)&lt;br /&gt;
* The staged changes do not introduce any leading TABs in source files (we indent with spaces)&lt;br /&gt;
* File modes look reasonable (no executable .cxx files, scripts with shebang lines are executable)&lt;br /&gt;
* File size is not too large (don't commit big data files; prints limit and instructions on rejection)&lt;br /&gt;
* Files do not have very long lines (longer than 160 characters).&lt;br /&gt;
&lt;br /&gt;
One of Git's standard whitespace checks is to reject ''trailing'' whitespace on lines that were added or modified.&lt;br /&gt;
Many people consider extra space characters at the end of a line to be an unprofessional style (including Git's own developers). NA-MIC/Slicer4 repository requires that all trailing whitespaces be removed before committing changes.&lt;br /&gt;
Text editors typically have a mode to highlight trailing whitespace:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Emacs&lt;br /&gt;
|&lt;br /&gt;
 (custom-set-variables '(show-trailing-whitespace t))&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Vim&lt;br /&gt;
|&lt;br /&gt;
 :highlight ExtraWhitespace ctermbg=red guibg=red&lt;br /&gt;
 :match ExtraWhitespace /\s\+$/&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Visual Studio&lt;br /&gt;
|&lt;br /&gt;
 To toggle viewing of white space characters, with a source&lt;br /&gt;
 file document active, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Advanced &amp;gt; View White Space'''&lt;br /&gt;
 &lt;br /&gt;
 (2-stroke keyboard shortcut: '''Ctrl+R, Ctrl+W''')&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Notepad++ (v5.6.7)&lt;br /&gt;
|&lt;br /&gt;
 To eliminate trailing white space, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Trim Trailing Space'''&lt;br /&gt;
 &lt;br /&gt;
 To toggle viewing of white space characters, choose from the&lt;br /&gt;
 menu items:&lt;br /&gt;
 &lt;br /&gt;
  '''View &amp;gt; Show Symbol &amp;gt;''' (multiple items, choose one...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== commit-msg ===&lt;br /&gt;
&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; after the commit message is saved.  It checks the commit message format:&lt;br /&gt;
&lt;br /&gt;
* The first line must be between 8 and 78 characters long.  If you were writing an email to describe the change, this would be the Subject line.&lt;br /&gt;
* The first line must not have leading or trailing whitespace.&lt;br /&gt;
* NA-MIC/Slicer4 requires commit messages to start with a commit type. Valid commit types are:&lt;br /&gt;
   BUG:   - a change made to fix a runtime issue&lt;br /&gt;
            (crash, segmentation fault, exception, or incorrect result,&lt;br /&gt;
   COMP:  - a fix for a compilation issue, error or warning,&lt;br /&gt;
   ENH:   - new functionality added to the project,&lt;br /&gt;
   PERF:  - a performance improvement,&lt;br /&gt;
   STYLE: - a change that does not impact the logic or execution of the code.&lt;br /&gt;
            (improve coding style, comments, documentation).&lt;br /&gt;
Note that the ':'(colon) directly follows the commit tag. For example, it is: &amp;quot;STYLE:&amp;quot; not &amp;quot;STYLE :&amp;quot;&lt;br /&gt;
* The second line must be blank, if present.&lt;br /&gt;
* The third line and below may be free-form.  Try to keep paragraph text formatted in 72 columns (this is not enforced).&lt;br /&gt;
&lt;br /&gt;
* GUI and text-based tools that help view history typically use the first line (Subject line) from the commit message to give a one-line summary of each commit.&lt;br /&gt;
This allows a medium-level view of history, but works well only if developers write good Subject lines for their commits.&lt;br /&gt;
&lt;br /&gt;
** Examples of ''improper'' commit messages:&lt;br /&gt;
&lt;br /&gt;
 Fixed&lt;br /&gt;
&lt;br /&gt;
This is too short and not informative at all. It does not name a commit type either.&lt;br /&gt;
&lt;br /&gt;
 ENH: I did a really complicated change and I am trying to describe the entire thing with a big message entered on the command line.&lt;br /&gt;
&lt;br /&gt;
This is too long and defeats the purpose of a Subject line.&lt;br /&gt;
&lt;br /&gt;
** A good commit message would look something like this:&lt;br /&gt;
&lt;br /&gt;
  BUG: Fixed improper referencing of pointers&lt;br /&gt;
&lt;br /&gt;
* Further adding the Mantis issue number to the commit message is good practice. This helps checking the history of the issue on Mantis and knowing why the change was done in the first place.&lt;br /&gt;
&lt;br /&gt;
* Many CVS users develop the habit of using the &amp;quot;-m&amp;quot; commit option to specify the whole message on the command line.&lt;br /&gt;
This is probably because in CVS it is hard to abort a commit if it already brought up the message editor.&lt;br /&gt;
In Git this is trivial.  Just leave the message blank and the whole commit will be aborted.&lt;br /&gt;
Furthermore, since commits are not published automatically it is easy to allow the commit to complete and then fix it with &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Testing this setup ==&lt;br /&gt;
* You can checkout my branch from [https://github.com/sankhesh/Slicer/tree/2834-consolidate-svn-git-hooks here].&lt;br /&gt;
* Once cloned, you can run the SetupForDevelopment script as described above to setup git hooks.&lt;br /&gt;
* Kindly review the changes, test the hooks and provide your valuable comments/suggestions.&lt;br /&gt;
&lt;br /&gt;
== Further Work ==&lt;br /&gt;
* Setting up a master/next git development workflow similar to that followed by large open source projects such as [http://git.kernel.org/cgit/git/git.git/refs/?id=refs/heads/master git.git], [http://paraview.org/gitweb?p=ParaView.git;a=heads ParaView]&lt;br /&gt;
* Setting up Git aliases for better management of push/pull requests&lt;br /&gt;
* Possible gerrit integration&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=30977</id>
		<title>Documentation/Nightly/Developers/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=30977"/>
		<updated>2013-03-20T20:02:16Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Git Hooks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development with Git =&lt;br /&gt;
'''This page helps developers in the migration of Slicer4 from subversion to git.'''&lt;br /&gt;
&lt;br /&gt;
== Downloading Git ==&lt;br /&gt;
[http://www.paraview.org/Wiki/Git/Download| Download Instructions]&lt;br /&gt;
&lt;br /&gt;
== Slicer Setup ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
1.&lt;br /&gt;
Follow instructions on [[Documentation/Nightly/Developers/StartHere|Start Here]] page to clone the Slicer repo from Github.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
2.&lt;br /&gt;
Run the developer setup script to set up your Slicer work tree&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./Utilities/SetupForDevelopment.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[https://github.com/sankhesh/Slicer/blob/2834-consolidate-svn-git-hooks/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
This script will setup git user info and git hooks.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Git Hooks ==&lt;br /&gt;
* Hooks are stored in the main Slicer4 repository under a separate branch called [https://github.com/sankhesh/Slicer/tree/hooks hooks].&lt;br /&gt;
* These hooks are pulled when the SetupForDevelopment script is run. They are placed in the .git/hooks directory to install them.&lt;br /&gt;
* The following local hooks are currently installed. See Git help on [http://www.kernel.org/pub/software/scm/git/docs/githooks.html githooks] for more details.&lt;br /&gt;
&lt;br /&gt;
=== pre-commit ===&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; before the commit message editor is fired up.  It checks the identity and content of changes:&lt;br /&gt;
&lt;br /&gt;
* Git &amp;lt;code&amp;gt;user.name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;user.email&amp;lt;/code&amp;gt; are set to something reasonable&lt;br /&gt;
* Git's standard whitespace checks (see help on &amp;lt;code&amp;gt;git diff --check&amp;lt;/code&amp;gt;)&lt;br /&gt;
* The staged changes do not introduce any leading TABs in source files (we indent with spaces)&lt;br /&gt;
* File modes look reasonable (no executable .cxx files, scripts with shebang lines are executable)&lt;br /&gt;
* File size is not too large (don't commit big data files; prints limit and instructions on rejection)&lt;br /&gt;
* Files do not contain lines longer than 80 characters&lt;br /&gt;
&lt;br /&gt;
One of Git's standard whitespace checks is to reject ''trailing'' whitespace on lines that were added or modified.&lt;br /&gt;
Many people consider extra space characters at the end of a line to be an unprofessional style (including Git's own developers). NA-MIC/Slicer4 repository requires that all trailing whitespaces be removed before committing changes.&lt;br /&gt;
Text editors typically have a mode to highlight trailing whitespace:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Emacs&lt;br /&gt;
|&lt;br /&gt;
 (custom-set-variables '(show-trailing-whitespace t))&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Vim&lt;br /&gt;
|&lt;br /&gt;
 :highlight ExtraWhitespace ctermbg=red guibg=red&lt;br /&gt;
 :match ExtraWhitespace /\s\+$/&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Visual Studio&lt;br /&gt;
|&lt;br /&gt;
 To toggle viewing of white space characters, with a source&lt;br /&gt;
 file document active, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Advanced &amp;gt; View White Space'''&lt;br /&gt;
 &lt;br /&gt;
 (2-stroke keyboard shortcut: '''Ctrl+R, Ctrl+W''')&lt;br /&gt;
|-&lt;br /&gt;
|width=20%|Notepad++ (v5.6.7)&lt;br /&gt;
|&lt;br /&gt;
 To eliminate trailing white space, choose the menu item:&lt;br /&gt;
 &lt;br /&gt;
  '''Edit &amp;gt; Trim Trailing Space'''&lt;br /&gt;
 &lt;br /&gt;
 To toggle viewing of white space characters, choose from the&lt;br /&gt;
 menu items:&lt;br /&gt;
 &lt;br /&gt;
  '''View &amp;gt; Show Symbol &amp;gt;''' (multiple items, choose one...)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== commit-msg ===&lt;br /&gt;
&lt;br /&gt;
This runs during &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; after the commit message is saved.  It checks the commit message format:&lt;br /&gt;
&lt;br /&gt;
* The first line must be between 8 and 78 characters long.  If you were writing an email to describe the change, this would be the Subject line.&lt;br /&gt;
* The first line must not have leading or trailing whitespace.&lt;br /&gt;
* NA-MIC/Slicer4 requires commit messages to start with a commit type. Valid commit types are:&lt;br /&gt;
   BUG:   - a change made to fix a runtime issue&lt;br /&gt;
            (crash, segmentation fault, exception, or incorrect result,&lt;br /&gt;
   COMP:  - a fix for a compilation issue, error or warning,&lt;br /&gt;
   ENH:   - new functionality added to the project,&lt;br /&gt;
   PERF:  - a performance improvement,&lt;br /&gt;
   STYLE: - a change that does not impact the logic or execution of the code.&lt;br /&gt;
            (improve coding style, comments, documentation).&lt;br /&gt;
Note that the ':'(colon) directly follows the commit tag. For example, it is: &amp;quot;STYLE:&amp;quot; not &amp;quot;STYLE :&amp;quot;&lt;br /&gt;
* The second line must be blank, if present.&lt;br /&gt;
* The third line and below may be free-form.  Try to keep paragraph text formatted in 72 columns (this is not enforced).&lt;br /&gt;
&lt;br /&gt;
* GUI and text-based tools that help view history typically use the first line (Subject line) from the commit message to give a one-line summary of each commit.&lt;br /&gt;
This allows a medium-level view of history, but works well only if developers write good Subject lines for their commits.&lt;br /&gt;
&lt;br /&gt;
** Examples of ''improper'' commit messages:&lt;br /&gt;
&lt;br /&gt;
 Fixed&lt;br /&gt;
&lt;br /&gt;
This is too short and not informative at all. It does not name a commit type either.&lt;br /&gt;
&lt;br /&gt;
 ENH: I did a really complicated change and I am trying to describe the entire thing with a big message entered on the command line.&lt;br /&gt;
&lt;br /&gt;
This is too long and defeats the purpose of a Subject line.&lt;br /&gt;
&lt;br /&gt;
** A good commit message would look something like this:&lt;br /&gt;
&lt;br /&gt;
  BUG: Fixed improper referencing of pointers&lt;br /&gt;
&lt;br /&gt;
* Further adding the Mantis issue number to the commit message is good practice. This helps checking the history of the issue on Mantis and knowing why the change was done in the first place.&lt;br /&gt;
&lt;br /&gt;
* Many CVS users develop the habit of using the &amp;quot;-m&amp;quot; commit option to specify the whole message on the command line.&lt;br /&gt;
This is probably because in CVS it is hard to abort a commit if it already brought up the message editor.&lt;br /&gt;
In Git this is trivial.  Just leave the message blank and the whole commit will be aborted.&lt;br /&gt;
Furthermore, since commits are not published automatically it is easy to allow the commit to complete and then fix it with &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Testing this setup ==&lt;br /&gt;
* You can checkout my branch from [https://github.com/sankhesh/Slicer/tree/2834-consolidate-svn-git-hooks here].&lt;br /&gt;
* Once cloned, you can run the SetupForDevelopment script as described above to setup git hooks.&lt;br /&gt;
* Kindly review the changes, test the hooks and provide your valuable comments/suggestions.&lt;br /&gt;
&lt;br /&gt;
== Further Work ==&lt;br /&gt;
* Setting up a master/next git development workflow similar to that followed by large open source projects such as [http://git.kernel.org/cgit/git/git.git/refs/?id=refs/heads/master git.git], [http://paraview.org/gitweb?p=ParaView.git;a=heads ParaView]&lt;br /&gt;
* Setting up Git aliases for better management of push/pull requests&lt;br /&gt;
* Possible gerrit integration&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=30966</id>
		<title>Documentation/Nightly/Developers/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=30966"/>
		<updated>2013-03-20T19:09:11Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Development with Git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development with Git =&lt;br /&gt;
'''This page helps developers in the migration of Slicer4 from subversion to git.'''&lt;br /&gt;
&lt;br /&gt;
== Downloading Git ==&lt;br /&gt;
[http://www.paraview.org/Wiki/Git/Download| Download Instructions]&lt;br /&gt;
&lt;br /&gt;
== Slicer Setup ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
1.&lt;br /&gt;
Follow instructions on [[Documentation/Nightly/Developers/StartHere|Start Here]] page to clone the Slicer repo from Github.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
2.&lt;br /&gt;
Run the developer setup script to set up your Slicer work tree&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./Utilities/SetupForDevelopment.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[https://github.com/sankhesh/Slicer/blob/2834-consolidate-svn-git-hooks/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
This script will setup git user info and git hooks.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Git Hooks ==&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=30965</id>
		<title>Documentation/Nightly/Developers/DevelopmentWithGit</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/DevelopmentWithGit&amp;diff=30965"/>
		<updated>2013-03-20T19:07:59Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: Created page with '= Development with Git = '''This page is about the migration of Slicer4 from subversion to git.'''  == Downloading Git == [http://www.paraview.org/Wiki/Git/Download| Download Ins…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Development with Git =&lt;br /&gt;
'''This page is about the migration of Slicer4 from subversion to git.'''&lt;br /&gt;
&lt;br /&gt;
== Downloading Git ==&lt;br /&gt;
[http://www.paraview.org/Wiki/Git/Download| Download Instructions]&lt;br /&gt;
&lt;br /&gt;
== Slicer Setup ==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
1.&lt;br /&gt;
Follow instructions on [[Documentation/Nightly/Developers/StartHere|Start Here]] page to clone the Slicer repo from Github.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
2.&lt;br /&gt;
Run the developer setup script to set up your Slicer work tree&lt;br /&gt;
:&amp;lt;code&amp;gt;$ ./Utilities/SetupForDevelopment.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[https://github.com/sankhesh/Slicer/blob/2834-consolidate-svn-git-hooks/Utilities/SetupForDevelopment.sh &amp;lt;code&amp;gt;SetupForDevelopment.sh&amp;lt;/code&amp;gt;]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
This script will setup git user info and git hooks.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Git Hooks ==&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs&amp;diff=30962</id>
		<title>Documentation/Labs</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs&amp;diff=30962"/>
		<updated>2013-03-20T18:42:37Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the place where we will keep track of our experiments.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/DeprecatedModules|DeprecatedModules extension]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/DevelopmentWithGit|Development with Git]]&lt;br /&gt;
&lt;br /&gt;
== Libraries ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/ITKv4|ITKv4]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/Qt484|Qt484]]&lt;br /&gt;
&lt;br /&gt;
== SlicerExecutionModel ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/SlicerExecutionModel_Serialization|SlicerExecutionModel Serialization]]&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/CMake-ified Python|CMake-ified Python]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/CallingPythonMethodsFromCpp|Calling Python methods from Cpp]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/IPython|IPython]]&lt;br /&gt;
&lt;br /&gt;
== Compilers &amp;amp; IDE ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/Ninja|Ninja]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/VS2010|VS2010]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/VS2012|VS2012]]&lt;br /&gt;
&lt;br /&gt;
== Virtual Machines ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/GPU Virtualization|GPU Virtualization]]&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs&amp;diff=30961</id>
		<title>Documentation/Labs</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs&amp;diff=30961"/>
		<updated>2013-03-20T18:42:06Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the place where we will keep track of our experiments.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/DeprecatedModules|DeprecatedModules extension]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/Git|Development with Git]]&lt;br /&gt;
&lt;br /&gt;
== Libraries ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/ITKv4|ITKv4]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/Qt484|Qt484]]&lt;br /&gt;
&lt;br /&gt;
== SlicerExecutionModel ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/SlicerExecutionModel_Serialization|SlicerExecutionModel Serialization]]&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/CMake-ified Python|CMake-ified Python]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/CallingPythonMethodsFromCpp|Calling Python methods from Cpp]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/IPython|IPython]]&lt;br /&gt;
&lt;br /&gt;
== Compilers &amp;amp; IDE ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/Ninja|Ninja]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/VS2010|VS2010]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/VS2012|VS2012]]&lt;br /&gt;
&lt;br /&gt;
== Virtual Machines ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/GPU Virtualization|GPU Virtualization]]&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Developer_Meetings/20130312&amp;diff=30928</id>
		<title>Developer Meetings/20130312</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Developer_Meetings/20130312&amp;diff=30928"/>
		<updated>2013-03-12T17:24:42Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* To discuss */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== To discuss ==&lt;br /&gt;
* Discuss Nrrd file loading issue on non american workstation. See http://slicer-devel.65872.n3.nabble.com/Re-Rounding-to-integer-tt4027985.html&lt;br /&gt;
* Demo of screenshot based testing See http://na-mic.org/Mantis/view.php?id=2567&lt;br /&gt;
** Topic pushed to : https://github.com/sankhesh/Slicer/tree/2567-screenshot-based-testing&lt;br /&gt;
** Improvements to ctkScreenshotDialog : https://github.com/sankhesh/CTK/tree/screeshot-resolution&lt;br /&gt;
** Baseline Images (data) :&lt;br /&gt;
*** http://slicer.kitware.com/midas3/folder/889 &lt;br /&gt;
*** https://github.com/sankhesh/Slicer/tree/2567-screenshot-based-testing/Applications/SlicerApp/Data/Baseline&lt;br /&gt;
** CMake macro - slicer_add_qttesting_test (https://github.com/sankhesh/Slicer/blob/2567-screenshot-based-testing/CMake/SlicerMacroQtTesting.cmake)&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Developer_Meetings/20130312&amp;diff=30927</id>
		<title>Developer Meetings/20130312</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Developer_Meetings/20130312&amp;diff=30927"/>
		<updated>2013-03-12T17:22:19Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* To discuss */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== To discuss ==&lt;br /&gt;
* Discuss Nrrd file loading issue on non american workstation. See http://slicer-devel.65872.n3.nabble.com/Re-Rounding-to-integer-tt4027985.html&lt;br /&gt;
* Demo of screenshot based testing See http://na-mic.org/Mantis/view.php?id=2567&lt;br /&gt;
** Topic pushed to : https://github.com/sankhesh/Slicer/tree/2567-screenshot-based-testing&lt;br /&gt;
** Improvements to ctkScreenshotDialog : https://github.com/sankhesh/CTK/tree/screeshot-resolution&lt;br /&gt;
** Baseline Images (data) :&lt;br /&gt;
*** http://slicer.kitware.com/midas3/folder/889 &lt;br /&gt;
*** https://github.com/sankhesh/Slicer/tree/2567-screenshot-based-testing/Applications/SlicerApp/Data/Baseline&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Ninja&amp;diff=30263</id>
		<title>Documentation/Labs/Ninja</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Ninja&amp;diff=30263"/>
		<updated>2013-02-04T18:28:04Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Ninja =&lt;br /&gt;
&lt;br /&gt;
Ninja is a small build system written with the goal of reducing build time of large projects like Slicer.&lt;br /&gt;
&lt;br /&gt;
Ninja currently works well on linux and mac. It also works on windows, but that's very new and may have issues. It works as an alternative to more commonly known '''make''' or '''GNU Make (gmake)''' build systems. &lt;br /&gt;
&lt;br /&gt;
For more details, head on to http://martine.github.com/ninja/&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Building from source ==&lt;br /&gt;
=== Linux / MacOSX ===&lt;br /&gt;
&lt;br /&gt;
Open up a terminal and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://github.com/martine/ninja.git&lt;br /&gt;
cd ninja&lt;br /&gt;
./bootstrap.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure ''git'' is in the path.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
Open up a Visual Studio command prompt and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://github.com/martine/ninja.git&lt;br /&gt;
cd ninja&lt;br /&gt;
.\bootstrap.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure ''git'' is in the path.&lt;br /&gt;
&lt;br /&gt;
== Linux packages ==&lt;br /&gt;
There are packaged versions available for Ninja on various Linux flavors.&lt;br /&gt;
&lt;br /&gt;
For example, installing the ninja package on Ubuntu can be done using:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install ninja-build&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Using it =&lt;br /&gt;
*CMake has Ninja generator support beginning version 2.8.8&lt;br /&gt;
&lt;br /&gt;
All one needs to do is choose ''Ninja'' as the generator for the project in ''cmake-gui'' (GUI for CMake)&lt;br /&gt;
&lt;br /&gt;
OR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd Slicer/bld&lt;br /&gt;
ccmake ../src -GNinja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Once configured using CMake, simply run the &amp;lt;code&amp;gt;ninja&amp;lt;/code&amp;gt; in the build directory.&lt;br /&gt;
&lt;br /&gt;
*QtCreator has Ninja support beginning version 2.6&lt;br /&gt;
&lt;br /&gt;
= Test =&lt;br /&gt;
I was able to use Ninja to build Slicer on Mac OSX and Linux Ubuntu.&lt;br /&gt;
&lt;br /&gt;
All the dependencies of Slicer built fine and build time was reduced considerably.&lt;br /&gt;
&lt;br /&gt;
The following table shows time statistics for a normal Slicer build on [http://www.slicer.org/slicerWiki/index.php/Documentation/4.2/Developers/Factory Factory] machine on MacOSX.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Build Type !! Command Used !! Time taken(seconds)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; | Fresh Build || align=&amp;quot;center&amp;quot; | &amp;lt;code&amp;gt;make all -j9&amp;lt;/code&amp;gt; || align=&amp;quot;center&amp;quot; style=&amp;quot;color:blue&amp;quot; | 1681&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;code&amp;gt;ninja -j9&amp;lt;/code&amp;gt; || align=&amp;quot;center&amp;quot; style=&amp;quot;color:blue&amp;quot; | 1671&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; | Re-Build without editing source || align=&amp;quot;center&amp;quot; | &amp;lt;code&amp;gt;make all -j9&amp;lt;/code&amp;gt; || align=&amp;quot;center&amp;quot; style=&amp;quot;color:red&amp;quot; | 102&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;code&amp;gt;ninja -j9&amp;lt;/code&amp;gt; || align=&amp;quot;center&amp;quot; style=&amp;quot;color:green&amp;quot; | 2&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; | Re-Build with minor edit || align=&amp;quot;center&amp;quot; | &amp;lt;code&amp;gt;make all -j9&amp;lt;/code&amp;gt; || align=&amp;quot;center&amp;quot; style=&amp;quot;color:red&amp;quot; | 1108&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;code&amp;gt;ninja -j9&amp;lt;/code&amp;gt; || align=&amp;quot;center&amp;quot; style=&amp;quot;color:green&amp;quot; | 5&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As observed, a fresh build takes approximately the same amount of time using both make and ninja. However, successive builds are much faster.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Ninja uses all CPU cores by default but for comparison purposes I use the same number of cores for both the build systems.&lt;br /&gt;
&lt;br /&gt;
I have tried using VS compiler on Windows for building Slicer using the above method. However, it was an unsuccessful attempt.&lt;br /&gt;
There were errors reported in building Python and ITK.&lt;br /&gt;
&lt;br /&gt;
I will soon post my results of using QtCreator on Windows for building Slicer.&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Ninja&amp;diff=30262</id>
		<title>Documentation/Labs/Ninja</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Ninja&amp;diff=30262"/>
		<updated>2013-02-04T18:27:33Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Ninja =&lt;br /&gt;
&lt;br /&gt;
Ninja is a small build system written with the goal of reducing build time of large projects like Slicer.&lt;br /&gt;
&lt;br /&gt;
Ninja currently works well on linux and mac. It also works on windows, but that's very new and may have issues. It works as an alternative to more commonly known '''make''' or '''GNU Make (gmake)''' build systems. &lt;br /&gt;
&lt;br /&gt;
For more details, head on to http://martine.github.com/ninja/&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Building from source ==&lt;br /&gt;
=== Linux / MacOSX ===&lt;br /&gt;
&lt;br /&gt;
Open up a terminal and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://github.com/martine/ninja.git&lt;br /&gt;
cd ninja&lt;br /&gt;
./bootstrap.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure ''git'' is in the path.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
Open up a Visual Studio command prompt and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://github.com/martine/ninja.git&lt;br /&gt;
cd ninja&lt;br /&gt;
.\bootstrap.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure ''git'' is in the path.&lt;br /&gt;
&lt;br /&gt;
== Linux packages ==&lt;br /&gt;
There are packaged versions available for Ninja on various Linux flavors.&lt;br /&gt;
&lt;br /&gt;
For example, installing the ninja package on Ubuntu can be done using:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install ninja-build&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Using it =&lt;br /&gt;
*CMake has Ninja generator support beginning version 2.8.8&lt;br /&gt;
&lt;br /&gt;
All one needs to do is choose ''Ninja'' as the generator for the project in ''cmake-gui'' (GUI for CMake)&lt;br /&gt;
&lt;br /&gt;
OR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd Slicer/bld&lt;br /&gt;
ccmake ../src -GNinja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Once configured using CMake, simply run the &amp;lt;code&amp;gt;ninja&amp;lt;/code&amp;gt; in the build directory.&lt;br /&gt;
&lt;br /&gt;
*QtCreator has Ninja support beginning version 2.6&lt;br /&gt;
&lt;br /&gt;
= Test =&lt;br /&gt;
I was able to use Ninja to build Slicer on Mac OSX and Linux Ubuntu.&lt;br /&gt;
&lt;br /&gt;
All the dependencies of Slicer built fine and build time was reduced considerably.&lt;br /&gt;
&lt;br /&gt;
The following table shows time statistics for a normal Slicer build on [http://www.slicer.org/slicerWiki/index.php/Documentation/4.2/Developers/Factory Factory] machine on MacOSX.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Build Type !! Command Used !! Time taken(seconds)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; | Fresh Build || align=&amp;quot;center&amp;quot; | &amp;lt;code&amp;gt;make all -j9&amp;lt;/code&amp;gt; || align=&amp;quot;center&amp;quot; style=&amp;quot;color:blue&amp;quot; | 1681&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;code&amp;gt;ninja -j9&amp;lt;/code&amp;gt; || align=&amp;quot;center&amp;quot; style=&amp;quot;color:blue&amp;quot; | 1671&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; | Re-Build without editing source || align=&amp;quot;center&amp;quot; | &amp;lt;code&amp;gt;make all -j9&amp;lt;/code&amp;gt; || align=&amp;quot;center&amp;quot; style=&amp;quot;color:red&amp;quot; | 102&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;code&amp;gt;ninja -j9&amp;lt;/code&amp;gt; || align=&amp;quot;center&amp;quot; style=&amp;quot;color:green&amp;quot; | 2&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; | Re-Build with minor edit || align=&amp;quot;center&amp;quot; | &amp;lt;code&amp;gt;make all -j9&amp;lt;/code&amp;gt; || align=&amp;quot;center&amp;quot; style=&amp;quot;color:red&amp;quot; | 1108&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;lt;code&amp;gt;ninja -j9&amp;lt;/code&amp;gt; || align=&amp;quot;center&amp;quot; style=&amp;quot;color:green&amp;quot; | 5&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As observed, a fresh build takes approximately the same amount of time using both make and ninja. However, successive builds are much faster.&lt;br /&gt;
&lt;br /&gt;
NOTE: Ninja uses all CPU cores by default but for comparison purposes I use the same number of cores for both the build systems.&lt;br /&gt;
&lt;br /&gt;
I have tried using VS compiler on Windows for building Slicer using the above method. However, it was an unsuccessful attempt.&lt;br /&gt;
There were errors reported in building Python and ITK.&lt;br /&gt;
&lt;br /&gt;
I will soon post my results of using QtCreator on Windows for building Slicer.&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Ninja&amp;diff=30250</id>
		<title>Documentation/Labs/Ninja</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Ninja&amp;diff=30250"/>
		<updated>2013-02-03T21:11:28Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Using it */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Ninja =&lt;br /&gt;
&lt;br /&gt;
Ninja is a small build system written with the goal of reducing build time of large projects like Slicer.&lt;br /&gt;
&lt;br /&gt;
Ninja currently works well on linux and mac. It also works on windows, but that's very new and may have issues. It works as an alternative to more commonly known '''make''' or '''GNU Make (gmake)''' build systems. &lt;br /&gt;
&lt;br /&gt;
For more details, head on to http://martine.github.com/ninja/&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Building from source ==&lt;br /&gt;
=== Linux / MacOSX ===&lt;br /&gt;
&lt;br /&gt;
Open up a terminal and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://github.com/martine/ninja.git&lt;br /&gt;
cd ninja&lt;br /&gt;
./bootstrap.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure ''git'' is in the path.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
Open up a Visual Studio command prompt and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://github.com/martine/ninja.git&lt;br /&gt;
cd ninja&lt;br /&gt;
.\bootstrap.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure ''git'' is in the path.&lt;br /&gt;
&lt;br /&gt;
== Linux packages ==&lt;br /&gt;
There are packaged versions available for Ninja on various Linux flavors.&lt;br /&gt;
&lt;br /&gt;
For example, installing the ninja package on Ubuntu can be done using:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install ninja-build&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Using it =&lt;br /&gt;
*CMake has Ninja generator support beginning version 2.8.8&lt;br /&gt;
&lt;br /&gt;
All one needs to do is choose ''Ninja'' as the generator for the project in ''cmake-gui'' (GUI for CMake)&lt;br /&gt;
&lt;br /&gt;
OR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd Slicer/bld&lt;br /&gt;
ccmake ../src -GNinja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Once configured using CMake, simply run the &amp;lt;code&amp;gt;ninja&amp;lt;/code&amp;gt; in the build directory.&lt;br /&gt;
&lt;br /&gt;
*QtCreator has Ninja support beginning version 2.6&lt;br /&gt;
&lt;br /&gt;
= Test =&lt;br /&gt;
I was able to use Ninja to build Slicer on Mac OSX and Linux Ubuntu.&lt;br /&gt;
&lt;br /&gt;
All the dependencies of Slicer built fine and build time was reduced considerably. Time statistics will soon follow.&lt;br /&gt;
&lt;br /&gt;
I have tried using VS compiler on Windows for building Slicer using the above method. However, it was an unsuccessful attempt.&lt;br /&gt;
There were errors reported in building Python and ITK.&lt;br /&gt;
&lt;br /&gt;
I will soon post my results of using QtCreator on Windows for building Slicer.&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Ninja&amp;diff=30249</id>
		<title>Documentation/Labs/Ninja</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Ninja&amp;diff=30249"/>
		<updated>2013-02-03T21:05:49Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Using it */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Ninja =&lt;br /&gt;
&lt;br /&gt;
Ninja is a small build system written with the goal of reducing build time of large projects like Slicer.&lt;br /&gt;
&lt;br /&gt;
Ninja currently works well on linux and mac. It also works on windows, but that's very new and may have issues. It works as an alternative to more commonly known '''make''' or '''GNU Make (gmake)''' build systems. &lt;br /&gt;
&lt;br /&gt;
For more details, head on to http://martine.github.com/ninja/&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Building from source ==&lt;br /&gt;
=== Linux / MacOSX ===&lt;br /&gt;
&lt;br /&gt;
Open up a terminal and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://github.com/martine/ninja.git&lt;br /&gt;
cd ninja&lt;br /&gt;
./bootstrap.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure ''git'' is in the path.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
Open up a Visual Studio command prompt and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://github.com/martine/ninja.git&lt;br /&gt;
cd ninja&lt;br /&gt;
.\bootstrap.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure ''git'' is in the path.&lt;br /&gt;
&lt;br /&gt;
== Linux packages ==&lt;br /&gt;
There are packaged versions available for Ninja on various Linux flavors.&lt;br /&gt;
&lt;br /&gt;
For example, installing the ninja package on Ubuntu can be done using:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install ninja-build&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Using it =&lt;br /&gt;
*CMake has Ninja generator support beginning version 2.8.8&lt;br /&gt;
&lt;br /&gt;
All one needs to do is choose ''Ninja'' as the generator for the project in ''cmake-gui'' (GUI for CMake)&lt;br /&gt;
&lt;br /&gt;
OR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd Slicer/bld&lt;br /&gt;
ccmake ../src -GNinja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux / MacOSX ==&lt;br /&gt;
*Once configured using CMake, simply run the &amp;lt;code&amp;gt;ninja&amp;lt;/code&amp;gt; in the build directory.&lt;br /&gt;
*QtCreator has Ninja support beginning version 2.6&lt;br /&gt;
&lt;br /&gt;
= Test =&lt;br /&gt;
I was able to use Ninja to build Slicer on Mac OSX and Linux Ubuntu.&lt;br /&gt;
&lt;br /&gt;
All the dependencies of Slicer built fine and build time was reduced considerably. Time statistics will soon follow.&lt;br /&gt;
&lt;br /&gt;
I have tried using VS compiler on Windows for building Slicer using the above method. However, it was an unsuccessful attempt.&lt;br /&gt;
There were errors reported in building Python and ITK.&lt;br /&gt;
&lt;br /&gt;
I will soon post my results of using QtCreator on Windows for building Slicer.&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Ninja&amp;diff=30248</id>
		<title>Documentation/Labs/Ninja</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Ninja&amp;diff=30248"/>
		<updated>2013-02-03T20:54:30Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Linux packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Ninja =&lt;br /&gt;
&lt;br /&gt;
Ninja is a small build system written with the goal of reducing build time of large projects like Slicer.&lt;br /&gt;
&lt;br /&gt;
Ninja currently works well on linux and mac. It also works on windows, but that's very new and may have issues. It works as an alternative to more commonly known '''make''' or '''GNU Make (gmake)''' build systems. &lt;br /&gt;
&lt;br /&gt;
For more details, head on to http://martine.github.com/ninja/&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Building from source ==&lt;br /&gt;
=== Linux / MacOSX ===&lt;br /&gt;
&lt;br /&gt;
Open up a terminal and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://github.com/martine/ninja.git&lt;br /&gt;
cd ninja&lt;br /&gt;
./bootstrap.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure ''git'' is in the path.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
Open up a Visual Studio command prompt and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://github.com/martine/ninja.git&lt;br /&gt;
cd ninja&lt;br /&gt;
.\bootstrap.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure ''git'' is in the path.&lt;br /&gt;
&lt;br /&gt;
== Linux packages ==&lt;br /&gt;
There are packaged versions available for Ninja on various Linux flavors.&lt;br /&gt;
&lt;br /&gt;
For example, installing the ninja package on Ubuntu can be done using:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install ninja-build&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Using it =&lt;br /&gt;
*CMake has Ninja generator support beginning version 2.8.8&lt;br /&gt;
&lt;br /&gt;
All one needs to do is choose ''Ninja'' as the generator for the project in ''cmake-gui'' (GUI for CMake)&lt;br /&gt;
&lt;br /&gt;
OR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd Slicer/bld&lt;br /&gt;
ccmake ../src -GNinja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*QtCreator has Ninja support beginning version 2.6&lt;br /&gt;
&lt;br /&gt;
= Test =&lt;br /&gt;
I was able to use Ninja to build Slicer on Mac OSX and Linux Ubuntu.&lt;br /&gt;
&lt;br /&gt;
All the dependencies of Slicer built fine and build time was reduced considerably. Time statistics will soon follow.&lt;br /&gt;
&lt;br /&gt;
I have tried using VS compiler on Windows for building Slicer using the above method. However, it was an unsuccessful attempt.&lt;br /&gt;
There were errors reported in building Python and ITK.&lt;br /&gt;
&lt;br /&gt;
I will soon post my results of using QtCreator on Windows for building Slicer.&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/Ninja&amp;diff=30247</id>
		<title>Documentation/Labs/Ninja</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/Ninja&amp;diff=30247"/>
		<updated>2013-02-03T20:52:01Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: Created page with '__TOC__  = Ninja =  Ninja is a small build system written with the goal of reducing build time of large projects like Slicer.  Ninja currently works well on linux and mac. It als…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= Ninja =&lt;br /&gt;
&lt;br /&gt;
Ninja is a small build system written with the goal of reducing build time of large projects like Slicer.&lt;br /&gt;
&lt;br /&gt;
Ninja currently works well on linux and mac. It also works on windows, but that's very new and may have issues. It works as an alternative to more commonly known '''make''' or '''GNU Make (gmake)''' build systems. &lt;br /&gt;
&lt;br /&gt;
For more details, head on to http://martine.github.com/ninja/&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
== Building from source ==&lt;br /&gt;
=== Linux / MacOSX ===&lt;br /&gt;
&lt;br /&gt;
Open up a terminal and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://github.com/martine/ninja.git&lt;br /&gt;
cd ninja&lt;br /&gt;
./bootstrap.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure ''git'' is in the path.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
Open up a Visual Studio command prompt and execute the following commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://github.com/martine/ninja.git&lt;br /&gt;
cd ninja&lt;br /&gt;
.\bootstrap.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure ''git'' is in the path.&lt;br /&gt;
&lt;br /&gt;
== Linux packages ==&lt;br /&gt;
There are packaged versions available for Ninja on various Linux flavors.&lt;br /&gt;
&lt;br /&gt;
For example, installing the ninja package on Ubuntu can be done using:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;sudo apt-get install ninja-build&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Using it =&lt;br /&gt;
*CMake has Ninja generator support beginning version 2.8.8&lt;br /&gt;
&lt;br /&gt;
All one needs to do is choose ''Ninja'' as the generator for the project in ''cmake-gui'' (GUI for CMake)&lt;br /&gt;
&lt;br /&gt;
OR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd Slicer/bld&lt;br /&gt;
ccmake ../src -GNinja&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*QtCreator has Ninja support beginning version 2.6&lt;br /&gt;
&lt;br /&gt;
= Test =&lt;br /&gt;
I was able to use Ninja to build Slicer on Mac OSX and Linux Ubuntu.&lt;br /&gt;
&lt;br /&gt;
All the dependencies of Slicer built fine and build time was reduced considerably. Time statistics will soon follow.&lt;br /&gt;
&lt;br /&gt;
I have tried using VS compiler on Windows for building Slicer using the above method. However, it was an unsuccessful attempt.&lt;br /&gt;
There were errors reported in building Python and ITK.&lt;br /&gt;
&lt;br /&gt;
I will soon post my results of using QtCreator on Windows for building Slicer.&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Developer_Meetings/20130122&amp;diff=29851</id>
		<title>Developer Meetings/20130122</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Developer_Meetings/20130122&amp;diff=29851"/>
		<updated>2013-01-18T16:20:03Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* To discuss */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== To discuss ==&lt;br /&gt;
* Displayable Manager architecture with Laurent Chauvin - See http://slicer-devel.65872.n3.nabble.com/LightBoxManagerProxy-tp4027181p4027191.html&lt;br /&gt;
* Build issue on OpenSuse with Shireen Elhabian  - See http://slicer-devel.65872.n3.nabble.com/Building-Slicer-on-OpenSUSE-tt4027139.html&lt;br /&gt;
* Transformation matrix pre-multiply vs post-multiply issue (ask Alex Yarmarkovich) - See http://na-mic.org/Mantis/view.php?id=2579&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Developer_Meetings/20121030&amp;diff=28592</id>
		<title>Developer Meetings/20121030</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Developer_Meetings/20121030&amp;diff=28592"/>
		<updated>2012-10-30T20:37:31Z</updated>

		<summary type="html">&lt;p&gt;Sankhesh.jhaveri: /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Attendees: &lt;br /&gt;
&lt;br /&gt;
== To discuss ==&lt;br /&gt;
&lt;br /&gt;
* Sync expectation regarding the CLI used to read DICOM&lt;br /&gt;
&lt;br /&gt;
* Discuss how tutorials testing could be improved.&lt;br /&gt;
&lt;br /&gt;
* Discuss [http://slicer.cdash.org/testDetails.php?test=3082872&amp;amp;build=45528 failing RSNA tutorial test.]&lt;br /&gt;
&lt;br /&gt;
* Mailing List questions&lt;br /&gt;
** [http://slicer-devel.65872.n3.nabble.com/ijk-to-sliceoffset-on-a-slice-widget-tt4026548.html ijk to sliceoffset on a slice widget]&lt;br /&gt;
** [http://slicer-devel.65872.n3.nabble.com/Textured-models-tc4026535.html Texture Models]&lt;br /&gt;
** [http://slicer-users.65878.n3.nabble.com/loading-raw-data-on-Slicer4-td4025479.html Loading raw data in Slicer4]&lt;br /&gt;
** [http://slicer-users.65878.n3.nabble.com/Can-t-load-Dicom-data-td4025481.html Can't load DICOM data]&lt;br /&gt;
** [http://slicer-users.65878.n3.nabble.com/Installation-issues-td4025482.html Installation issue]&lt;br /&gt;
** [http://slicer-devel.65872.n3.nabble.com/Add-external-library-slicer-module-tt4026564.html Add external library to slicer module bundled within extension]&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
* PETStandardUptakeValueComputation would need to be changed to accommodate new data. Two days before the release, it's not reasonable to change the module.&lt;br /&gt;
** Question: How the process could be improved to anticipate such issue early on ?&lt;br /&gt;
** Workaround: The data will be modified. Steve.&lt;br /&gt;
* Discuss failing test [http://slicer.cdash.org/testDetails.php?test=3082872&amp;amp;build=45528 py_RSNA2012Quant]&lt;br /&gt;
** Probably be related to the redesigned associated with ROI node&lt;br /&gt;
* Tutorial 6 - ABC extension&lt;br /&gt;
** Alex will talk with Marcel so that he recreate the tutorial for Slicer4&lt;br /&gt;
** Dataset also need to be updated to include updated atlas data&lt;br /&gt;
* Tutorial 0&lt;br /&gt;
** MacOSX - Last night build - OK [tested by Sonia]&lt;br /&gt;
* Tutorial 1&lt;br /&gt;
** No notes on the mantis issue. Jim will provide an update.&lt;br /&gt;
* Tutorial 2&lt;br /&gt;
** MacOSX - Last night build - OK [tested by Ron]&lt;br /&gt;
* Tutorial 3, 4, 5&lt;br /&gt;
** Works&lt;br /&gt;
*** Expect for VTK GPU RayCast method on old MacOSx&lt;br /&gt;
*** Method &amp;quot;OpenGL Texture raycaster&amp;quot; also have problem. See [http://na-mic.org/Mantis/view.php?id=2711 2711]&lt;br /&gt;
* Tutorial 7&lt;br /&gt;
** Csaba will be at RSNA&lt;br /&gt;
* Tutorial 8&lt;br /&gt;
** Ron will try&lt;br /&gt;
* Tutorial 9&lt;br /&gt;
** MacOSX - r21280 - OK&lt;br /&gt;
* Tutorial 10&lt;br /&gt;
* Tutorial 11&lt;br /&gt;
** See [http://www.na-mic.org/Bug/view.php?id=2513 2513]&lt;br /&gt;
** Mariana and Nicole are working on the data.&lt;br /&gt;
* Tutorial 12&lt;br /&gt;
** MacOSX - r21280 - OK&lt;br /&gt;
* Tutorial 13&lt;br /&gt;
** MacOSX - r21280 - segmentation volume color table is all black&lt;br /&gt;
** Linux - r21280 - segmentation volume color table is all black&lt;br /&gt;
*** Seems to be an issue specific to MRB files&lt;/div&gt;</summary>
		<author><name>Sankhesh.jhaveri</name></author>
		
	</entry>
</feed>