Contribute code

From CenterIM
Revision as of 21:44, 24 April 2017 by Setupji (talk | contribs) (Setupji moved page Contribute Code to Contribute code without leaving a redirect)
Jump to: navigation, search

Note that these notes are targeted at the CenterIM4 development. They were not yet updated to reflect CenterIM5 changes.

The CenterIM git repository has a branch called mob which may be changed by anyone using the user mob without requiring any authentication. This means that the branch is effectively world-writable and you can use it to commit changes without asking anyone for permission.

1. Getting the Code

Using git:

Clone the CenterIM git repository using mob as user name. The mob user doesn't require any password.

The RSA key fingerprint can be found on the write-protected side Security Codes

git clone git+ssh://

Enter the directory and create a new local branch mob tracking the remote mob branch.

cd centerim && git checkout -b mob origin/mob

Make sure it builds BEFORE you make any changes. It always makes sense to have a baseline for the sake of sanity.

./ && ./configure && make

2. Changing the files

Now you can make changes to the files locally.

Test your patch:

  1. Run make and CenterIM itself and make sure you did not introduce other bugs!
  2. Optionally, run git diff to see what you modified, run git checkout <filename> to revert your changes
  3. If everything works fine and when you're satisfied, proceed to the next step.

3. Preparing to commit changes to the server

Step 1: Identify

To make sure that your commits have your name and email address, create the file ~/.gitconfig

name = "Your Name"
email = "your@email.address.xz"

Step 2: Commit your changes locally

On the command line

First review what files you have changed.

git status

Add the files you want to commit

git add <filename> #To add one file
git add -u         #To add all the files changed locally (visible with 'git status')

Then create the commit itself. This launches a text editor to allow you to enter a commit message. Please try to describe what your patch changes exactly without being overly verbose. A useful commit message increases chances that you patch will be merged to the master branch.

git commit

With the help of a GUI

Git also allows you to commit with the help of a GUI. Among other things this has the advantage that you can also select which individual hunks you'd like to commit.


Step 3: Merge upstream changes

If you got the code of the mob branch and before you upload your patch, somebody else committed a patch to the same branch, you should try to get and merge the updates first. Otherwise the changes already in the repository will be committed twice.

git pull              # retrieve updates from server
git merge origin/mob  # merge changes into local mob-branch

If your local changes conflict with the newest source code, it will tell you and refuse to apply the remote patch.

4. Upload changes to server

Uploading your patches:

git push -v origin mob

Now you are done, and the patch is visible to the world at [1]

5. Inform the developers

It might be a good idea that the other developers know you just committed a patch. Please send an email to the "developers mailing list" to inform them, describing your patch. Thanks!

Other useful GIT stuff

You can see what you modified by doing:

git status

To see the differences:

git diff <somefile> # differences within a file 
git diff # all differences in the current map of the branch

And to restore the file to its original version:

git checkout <filename> # restore a file
git checkout -f # restore everything

[Summary: forget to change two occurences of cg to git]