Table of Contents

Hacking Kamailio with Git

Development version

Since version 3.0.0, the development version of Kamailio is the master branch of sip-router.org GIT repository. Therefore is the same source code for Kamailio (OpenSER) and SIP Express Router (SER).

Fetch the GIT master branch as usual:

git clone --depth 1 git://git.sip-router.org/sip-router kamailio
cd kamailio

If you have a developer account, then you can use:

git clone --depth 1 ssh://account@git.sip-router.org/sip-router kamailio
cd kamailio

To compile and install the Kamailio flavour, do:

make FLAVOUR=kamailio cfg
make all
make install

Kamailio 3.0.x

The version 3.0.x resides as branch kamailio_3.0 in sip-router.org GIT repository.

Fetch it via:

git clone --depth 1 git://git.sip-router.org/sip-router kamailio-3.0
cd kamailio-3.0
git checkout -b kamailio_3.0 origin/kamailio_3.0

If you have a developer account, then you can use:

git clone --depth 1 ssh://account@git.sip-router.org/sip-router kamailio-3.0
cd kamailio-3.0
git checkout -b kamailio_3.0 origin/kamailio_3.0

Installation is straightforward, the flavour is by default kamailio:

make all
make install

Backport patches to Kamailio 3.0.x

Fetch the development (master) branch with your developer account.

Update the code, then do the local commit. Note that small commits are preferred (more smaller commits are better then a huge commit touching multiple modules or adding multiple features or fixes). Please make sure you read first the Git Commit Guidelines and the Git Push into master HOWTO. If this is the first time you contribute code to the project then please read also Coding Style.

git add files_that_you changes # use git status or git diff to see them
git commit

Upload to remote repository:

git push origin master:master

If git push fails it usually means someone updated master in the meantime and you should rebase on the latest version and retry the push:

git fetch origin
git rebase origin/master
git push origin master:master  # if it fails repeast from git fetch

Fetch in your kamailio 3.0 branch, in case you have two directories (otherwise, you can just check out the kamailio_3.0 branch):

cd /../kamailio-3.0
git checkout kamailio-3.0
git pull --rebase origin kamailio-3.0

Use cherry pick to get the commit from master applied to kamailio_3.0 branch:

git cherry-pick -x [commit_to_master_hash_id]

For example:

git cherry-pick -x 7b8b6f647365655afa210f5e95baef06398ef612

A quick way to check for the master hash id is:

git fetch origin # if you are using a different directory for kamilio-3.0
git log --oneline origin/master

Then upload to remote repository in kamailio_3.0 branch:

git push origin kamailio_3.0:kamailio_3.0

If push fails, rebase and try again:

git fetch origin
git checkout kamailio_3.0
git rebase origin/kamailio_3.0
git push origin kamailio_3.0:kamailio_3.0