Git Usage Windows
Clone the XBMC main repository
XBMC now uses git for as its main scm. The main repo is located at github In this guide we're using msysgit and Tortoisegit as frontend.
Command line
For read only access
$ git clone git://github.com/xbmc/xbmc.git
For read/write access (Devs only) via ssh keys (your account needs to be added to the xbmc project on github)
$ git clone [email protected]:xbmc/xbmc.git
For read/write access (Devs only) via user/pass (yourname needs to be added to the xbmc project on github)
$ git https://[email protected]/xbmc/xbmc.git
TortoiseGit
- right click in your directory tree
- choose "Git Clone"
- replace yourname with your github user account
- when asking for the password type in your github password.
- you can also use ssh keys for authentication.
Fetch old branches and extra history
The following is ONLY useful for developers who wish to see extended XBMC history. Everyone else should stop here. Run this command from your tree. It requires git 1.6.5 or higher:
$ git fetch origin refs/old/heads/*:refs/remotes/svn-migration/* refs/replace/*:refs/replace/*
(Is this possible in gui too?)
Platform Settings
Case Insensitive File Systems
Git wants to run under a case sensitive file system but under OSX and Windows, the file system might be case insensitive. Make sure that core.ignorecase is properly set. Check with:
$ git config --list
if not set:
$ git config --global core.ignorecase true
Line Endings
Windows users MUST use the git autocrlf feature. This is set by default by tortoise. If it's not set, you can do so manually:
$ git config --system core.autocrlf true
Linux and OSX users should set autocrlf to 'input'
$ git config --global core.autocrlf input
Updating
When updating from the main git repo (by default git will call this 'origin'), you should always rebase on top of your history, unless you know what you're doing.
Linux/OSX
Always use
git pull --rebase
A safe bet is to set this to be done automatically.
$ git config branch.master.rebase true
Pushing
Please use
git log
to look at the log before committing. If there are merge commits that you don't understand, please ask for help before pushing.
Never EVER force a push (non-fast-forward commit) to mainline. Ever. Doing so will result in your push privileges being revoked.