5.4 Developing New Features

Developing a new feature can be easier once you have commit access to the repo. First, create a new branch to hold your feature:

$ git checkout master                     Start from master
$ git pull                                Be sure to be up to date
$ git checkout -b feature/python          Create and switch to a new branch

Now, you can develop as normal, adding new files if necessary (such as new tests), modifying code, updating the ChangeLog and documentation, and so on.

You can share changes with the mailing list as diffs, as usual. However, especially for a large feature, it would be better to push your branch up to Savannah. Then, everyone else can simply pull it down to their local systems and review your changes at their leisure.

To push your branch up initially:

$ git diff                                Review your changes
$ git add …                             Add any files for committing
$ git commit                              Commit the files with a commit message
$ git push -u origin feature/python       Push the branch up to the repo

When you use ‘push -u origin’, Git helpfully converts your purely local branch into a tracking branch. It becomes as if the branch had originated from the upstream repo and you checked it out locally.

You only need to do ‘git push -u origin’ once. As you continue to work on your branch, the workflow simplifies into this:

$ git diff                Review your changes
$ git add …             Add any files for committing
$ git commit              Commit the files
$ git push                Push your changes to the branch upstream