====== 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