Skip to content
ghalliday edited this page Jul 21, 2011 · 2 revisions

Say we're going to work on bug 1234, and the only file that needs to be changed is system/jlib/jfile.cpp

###(0). Set up and configuration

0a: Install git and fork the hpcc-systems/HPCC-Platform project following the help.git guidelines:

http://help.github.com/win-set-up-git/
http://help.github.com/fork-a-repo/

0b: Assuming git was installed and git remotes are setup:

$ git remote -v
origin  git@github.com:<user>/HPCC-Platform.git (fetch)
origin  git@github.com:<user>/HPCC-Platform.git (push)
upstream        git@github.com:hpcc-systems/HPCC-Platform.git (fetch)
upstream        git@github.com:hpcc-systems/HPCC-Platform.git (push)

0c: Your .gitconfig file (in ~/ for linux or \Users<user> for windows 7) should contain the following:

[core]
   autocrlf = true
   whitespace = trailing-space,tab-in-indent
[apply]
   whitespace = error

And you should rename the file .git/hooks/pre-commit.sample in each of your local repository directory to pre-commit.

Comments: 1 - with the steps in 0c the rules for trailing spaces and tabs will be checked before committing. You can also use git diff --check to do this explicitly before committing. 2 - please refer to the wiki page Preferred Git Settings

###(1) Resync

Before making any changes, switch to master locally and download the latest from upstream

git checkout master
git fetch upstream
git merge --ff-only upstream/master
git push origin master	

###(2) Branch

Create branch for the bug and switch to it

git checkout -b bug1234

Comment: You can alternatively use those 2 commands:

git branch bug1234
git checkout bug1234

And, if the branch bug1234 already exists, simply:

git checkout bug1234

###...Make changes to the file....

###(3) Stage

Stage the file locally

git add system/jlib/jfile.cpp

Comment: If you add -a option to the commit command in step 4 below, this step is not necessary except for new files.

###(4) Commit Commit the file locally, sign the commit message with your username with the -s option

git commit -s -m "Bug: 1234 - pretend bug"

###(5) (Optional but recommended) Rebase

If you have been working on the bug for a while and master is likely to have changed you should rebase your branch before pushing. This is optional, but is recommended to always do it before submitting a pull request because this will make it much more likely the branch will merge without problems.

5a. First resync your master with upstream by executing step 1 above.

5b. Then rebase your branch:

git checkout bug1234
git rebase master

###(6) Push

Push the committed change to the remote fork

git push origin bug1234

Comment: If you have already pushed some of your changes to origin, and the rebase on master brought in some extra commits, you will get a fast forward error when you try to push. If that happens you need to add a plus sign to the push command:

git push origin +bug1234	

###(7) Generate Pull request

Generate and Send out the pull request from github.com