====== 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 [[devel:git-commit-guidelines|Git Commit Guidelines]] and the [[git:commit-into-master|Git Push into master HOWTO]]. If this is the first time you contribute code to the project then please read also [[:coding_style|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