====== GIT Quick Start Guide ======
The document tries to collect useful information to make life easier working with the GIT repository of SIP Router Project.
===== GIT URLs =====
* %%git://git.sip-router.org/sip-router%% - (read only)
* http://git.sip-router.org/sip-router - (read only, slower, %%git://...%% recommended)
* %%ssh://git.sip-router.org/sip-router%% - (read/write, developer account needed on git.sip-router.org)
===== Web interface =====
* http://git.sip-router.org/cgi-bin/gitweb.cgi
===== Local GIT settings: global and per-repository settings =====
GIT allows setting global configuration parameters by using the command ''git config --global''. These settings are stored into ''$HOME/.gitconfig'' and are global for all our local GIT repositories.
''git config'' without ''--global'' option must be executed in the root directory of a local GIT repository. Such settings are stored in ''.git/config'' within the repository and are just specific for current GIT repository. They take preference over global settings (in case the same configuration parameter exists in both ''$HOME/.gitconfig'' and ''REPOSITORY/.git/config'').
===== First config options =====
* Recommended git version: >= 1.5.6.1
* First of all, set your name and email address:
git config --global user.name 'your_name'
git config --global user.email 'your email address'
Some other recommended git config setting:
* include summaries of merged commits in commit merge messages (a **MUST**)
git config --global merge.log true
git config --global merge.summary true # same as above, for older git versions
* behave as if --track is added to every git-pull
git config --global branch.autosetupmerge always
* by default perform a rebase instead of a merge when pulling into the local master branch (highly recommended, it gets rid of a lot of confusing merge origin/master messages). It's equivalent to adding **--rebase** to git pull command line. (**recommended**)
git config branch.master.rebase true
* by default setup all new local branches to perform rebase (like above) when pull-ing (so that you don't have to run //git config branch.%%%%.rebase true// for each of them).
git config branch.autosetuprebase always # or remote
* (**not recommended**) by default use --no-ff when merging into master (this means that a merge commit message will be generated for all merges; without it fast-forward merges will not generate a merge message). **Note**: --no-ff will generate merge logs even when updating master from origin (git pull origin master), which is not what you want. You should either use "-**-no-ff**" by default like described below, but then make sure to add "**--ff**" every time you update your local master version (git pull **--ff** origin master), or you don't use it, but then always remember to add "-**-no-ff**" when merging some other branch into master (e.g.: git merge **--no-ff** origin/foo).
# _not_ recommended, use _only_ if you do a _lot_ of merges between public
# branches (see Note: above), otherwise you're better off without it
# git config branch.master.mergeoptions "--no-ff"
===== GIT commit into master howto =====
Please see [[git:commit-into-master|GIT commit into master howto]]
===== GIT merge into master howto =====
Please see [[git:merge-into-master|GIT merge into master howto]]