Contributing to CTK: Difference between revisions

From Commontk
Jump to navigationJump to search
No edit summary
Line 8: Line 8:
** '''master''' Release preparation; starting point for new features (default)  
** '''master''' Release preparation; starting point for new features (default)  
** '''next''' Development; new features published here first  
** '''next''' Development; new features published here first  


= PreRequisites =
= PreRequisites =
Line 47: Line 45:
  git checkout -b awesome_feature refs/remotes/jcfr/awesome_feature
  git checkout -b awesome_feature refs/remotes/jcfr/awesome_feature
* You should now have a local branch named awesome_feature. You can now add, commit and publish your work.
* You should now have a local branch named awesome_feature. You can now add, commit and publish your work.
= Integrate your new feature =
* Initially, your feature should be integrated to '''next'''.
* To integrate your change to '''next'''. See [http://public.kitware.com/Wiki/Git/Workflow/Topic#New_Topic]
git fetch upstream                            # Retrieve change from upstream repository
git checkout next                              # Checkout your local "next" branch
git merge upstream                            # Make sure your local branch is up-to-date.
git merge new_feature                          # Merge locally to "next" - Your changes are now integrated
git push upstream                              # Publish your change on the official repository
git push origin                                # Publish your change on your fork
* After it has been validated and tested, it will be integrated to '''master'''
Repeat the command listed above changing "next" into "master"

Revision as of 16:01, 13 July 2010

Home < Contributing to CTK

The present document aims at describing how a developer should contribute to CTK.

  • It's also assumed the developer is familiar with git. There are countless amount of resources available online. A good start point could the list presented on CMake/git page [2].
  • We use a topic-based workflow as documented here and thus define integration branches:
    • master Release preparation; starting point for new features (default)
    • next Development; new features published here first

PreRequisites

$ git config --global user.name "Your Name"
$ git config --global user.email "you@yourdomain.com"

Checkout your fork

cd MyProject
git clone git@github.com:<MYACCOUNT>/CTK.git
git remote add origin git@github.com:<MYACCOUNT>/CTK.git
git remote add upstream git@github.com/commontk/CTK.git

Publishing your branch

  • Having your own fork CTK allows you to backup and publish your work avoiding the hurge to merge [3]
git checkout -b new_feature
hack, hack, hack, add, commit
git push origin topic1:refs/heads/topic1
  • As a shortcut, you could also enter the following. Some useful script are also available here:
git config branch.topic1.remote origin
git config branch.topic1.merge refs/heads/topic1
  • Then, from the branch new_feature, you could just enter the following to backup/publish your work:
git push
  • To delete a branch from your fork:
git push origin :new_feature

Checkout a branch from a different fork

  • You may want to collaborate with an other developer and work conjointly on a feature.
  • Let's say, jcfr published the branch awesome_feature on his fork. You should do the following to check out his branch:
git remote add jcfr git://github.com/jcfr/CTK.git
git fetch jcfr
git checkout -b awesome_feature refs/remotes/jcfr/awesome_feature
  • You should now have a local branch named awesome_feature. You can now add, commit and publish your work.

Integrate your new feature

  • Initially, your feature should be integrated to next.
  • To integrate your change to next. See [4]
git fetch upstream                             # Retrieve change from upstream repository
git checkout next                              # Checkout your local "next" branch
git merge upstream                             # Make sure your local branch is up-to-date.
git merge new_feature                          # Merge locally to "next" - Your changes are now integrated
git push upstream                              # Publish your change on the official repository
git push origin                                # Publish your change on your fork
  • After it has been validated and tested, it will be integrated to master
Repeat the command listed above changing "next" into "master"