Obsolete:Tutorial on using git in Moodle development
Note: You are currently viewing documentation for Moodle 1.9. Up-to-date documentation for the latest stable version is available here: Tutorial on using git in Moodle development.
Disclaimer: this tutorial is based on my personal experience with using git in Moodle development process. There are other (and almost certainly better) ways of doing it. See the references at the bottom of the page. Please use the talk page to add/fix something, I will merge it into the tutorial text. --David Mudrak 12:11, 26 October 2009 (UTC)
Preparing the environment
In this tutorial, you are expected to use the following environment. Check the diagram. At the moment, there are two source code repositories you can use: the main Moodle CVS server cvs.moodle.org and its git mirror at git.moodle.org. While the CVS contains both Moodle core code and the contributed code, the git mirrors the core code only yet (this may be changed in the near future). We also expect you have some server (we will call it "nostromo") that you and your team members use and that you do the actual developing at the localhost machines.
Later in this tutorial, you will see how
git fetchcan be used to get the recent changes from upstream to nostromo
git cvsimportcan be used to create your own git mirror of a contributed code (we do not do this yet for you)
git clonecan be used to create a mirror of your nostromo repos at you local machines
git pushcan be used to backup your own work and to share it with your friend
git pullcan be used regularly to fetch and merge the work done by your friend
git cvsexportcommitcan be used to send your commits for the upstream (and you will, right? ;-)
Get the core Moodle branchesMake sure you and your team friends have write access to
/pub/scm/gitat your nostromo server.
$ ssh nostromo $ cd /pub/scm/git $ mkdir moodle.git $ cd moodle.git $ git init --bare
This will create a bare repository in the current directory
A big thank you to Penny, Dan and Nigel for helping me with my first steps with git.