Differences between revisions 7 and 25 (spanning 18 versions)
Revision 7 as of 2015-08-13 12:47:50
Size: 1097
Editor: ZekeKaufman
Comment:
Revision 25 as of 2016-12-07 18:05:51
Size: 2545
Editor: ZekeKaufman
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
Checkout out the main branch:
||'''cvs'''||{{{cvs checkout dev}}}||
||'''git'''||{{{git clone /space/freesurfer/repo/freesurfer}}}||
#acl LcnGroup:read,write,delete,revert All:


This page is provided for !FreeSurfer developers to assist in the CVS -> git transition. Git is a feature loaded version control system which at times can be a bit of a hurdle to learn. However, when used in its simplest form it is very similar to most all other version control systems, including CVS. This page will give the basic CVS commands used by most !FreeSurfer developers the git equivalent of that command.

== Initial Git Setup ==

When we start out using git we want to set a few of our configuration settings. We only need to do this one time:
{{{
$> cd ~
$> git config --global user.name "Zeke Kaufman"
$> git config --global user.email zkaufman@nmr.mgh.harvard.edu
}}}
For additional examples of git specifics setting (e.g. default editor, color settings), see the following page: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

== Checkout out the main branch ==
When working with CVS, we would checkout out the !FreeSurfer repository using the {{{cvs checkout dev}}} command. In git we 'clone' repositories. This gives us a local version of the repository which we can work with.

{{{
$> git clone /space/freesurfer/repo/freesurfer
}}}
Line 7: Line 26:
||'''cvs'''||{{{cvs checkout -r stable6 dev}}}||
||'''git'''||{{{
git clone -b stable6 /space/freesurfer/repo/freesurfer}}}||
{{{
$>
git clone -b stable6 /space/freesurfer/repo/freesurfer

$> cvs checkout -r stable6 dev
}}}

== Daily Workflow ==
Line 13: Line 38:
||{{{git push .}}}|| ||{{{git push}}}||
Line 15: Line 40:
Commit a modified data file: Modify and commit a data file:
Line 17: Line 42:
||<|3>'''git'''||{{{git annex unlock <file_name>}}}|| ||<|5>'''git'''||{{{git annex unlock <file_name>}}}||
||{{{git annex add <file_name>}}}||
Line 19: Line 45:
||{{{git push}}}||
Line 21: Line 48:
Add a data file:
||<|2>'''cvs'''||{{{cvs add <file_name>}}}||
||{{{cvs commit <file_name>}}}||
||<|4>'''git'''||{{{git annex add <file_name>}}}||
||{{{git commit <file_name>}}}||
||{{{git push}}}||
||{{{git annex copy --to origin <file_name>}}}||

Line 22: Line 58:
||<|2>'''cvs'''||{{{cvs rm <file_name>}}}|| ||<|3>'''cvs'''||{{{rm <file_name>}}}||
||{{{cvs rm <file_name>}}}||

This page is provided for FreeSurfer developers to assist in the CVS -> git transition. Git is a feature loaded version control system which at times can be a bit of a hurdle to learn. However, when used in its simplest form it is very similar to most all other version control systems, including CVS. This page will give the basic CVS commands used by most FreeSurfer developers the git equivalent of that command.

Initial Git Setup

When we start out using git we want to set a few of our configuration settings. We only need to do this one time:

$> cd ~
$> git config --global user.name "Zeke Kaufman"
$> git config --global user.email zkaufman@nmr.mgh.harvard.edu

For additional examples of git specifics setting (e.g. default editor, color settings), see the following page: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

Checkout out the main branch

When working with CVS, we would checkout out the FreeSurfer repository using the cvs checkout dev command. In git we 'clone' repositories. This gives us a local version of the repository which we can work with.

$> git clone /space/freesurfer/repo/freesurfer

Checkout the stable branch:

$> git clone -b stable6 /space/freesurfer/repo/freesurfer

$> cvs checkout -r stable6 dev

Daily Workflow

Commit a modified source code file:

cvs

cvs commit -m "Added new capabilities." <file_name>

git

git commit -m "Added new capabilities." <file_name>

git push

Modify and commit a data file:

cvs

cvs commit <file_name>

git

git annex unlock <file_name>

git annex add <file_name>

git commit <file_name>

git push

git annex copy --to origin <file_name>

Add a data file:

cvs

cvs add <file_name>

cvs commit <file_name>

git

git annex add <file_name>

git commit <file_name>

git push

git annex copy --to origin <file_name>

Remove data file:

cvs

rm <file_name>

cvs rm <file_name>

cvs commit -m "Removing <file_name>" <file_name>

git

git rm <file_name>

git commit -m "Removing <file_name>" <file_name>

Undo 1 commit (before push):

git

git reset --soft HEAD~1

Undo 2 commits:

git

git reset --soft HEAD~2