<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/500/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Marc-robin</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/500/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Marc-robin"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/500/en/Special:Contributions/Marc-robin"/>
	<updated>2026-04-22T22:50:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101409</id>
		<title>Moodle Production Server with GIT</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101409"/>
		<updated>2012-10-19T15:22:30Z</updated>

		<summary type="html">&lt;p&gt;Marc-robin: correct statistics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GIT Repository scheme ==&lt;br /&gt;
&lt;br /&gt;
This is the description of how we maintain our Moodle2 code at [http://www.isis.tu-berlin.de/2.0/ TU Berlin]. Our Moodle 1.9 has ca. 30000 active user with average 500 online user 24/7 (based on active users the last 15 minutes). This moves slowly to Moodle 2 now. We have a lot of code changes and plugins, so it&#039;s essential for us to maintain the code as automated as possible.&lt;br /&gt;
&lt;br /&gt;
Our Moodle is called ISIS. So further on everything what is named ISIS belongs to us, everything what is called MOODLE belongs to moodle.org.&lt;br /&gt;
&lt;br /&gt;
We use several GIT-repositories. The scheme with branches looks like this&lt;br /&gt;
&lt;br /&gt;
[[File:ISIS_GIT_schema.png]]&lt;br /&gt;
&lt;br /&gt;
The main purpose for the ISIS remote repository is for backups. One can imagine a scenario without this remote server only with local repositories involved. If you use [https://github.com/sitaramc/gitolite/wiki gitolite] for your remote repository, it&#039;s even more comfortable to keep the code clean, because you are able the restrict access to branches for developer and integration manager individually. &lt;br /&gt;
&lt;br /&gt;
The puzzle about the isis_rebase branch will be explained, when we come to a new moodle release.&lt;br /&gt;
&lt;br /&gt;
== Install the repositories ==&lt;br /&gt;
&lt;br /&gt;
We start with the original moodle code. For orientation we suggest to read the very useful description [[Git_for_Administrators]] first.&lt;br /&gt;
Instead of the advise there we won&#039;t clone the moodle.org-repository in the first place. We start over with creating an empty repository at the ISIS Integration server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; mkdir isis&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; cd isis/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git init&lt;br /&gt;
 Initialized empty Git repository in /home/wendt/isis/.git/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we add moodle.org as remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git fetch &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;&lt;br /&gt;
 remote: Counting objects: 597378, done.&lt;br /&gt;
 remote: Compressing objects: 100% (141938/141938), done.&lt;br /&gt;
 remote: Total 597378 (delta 442383), reused 597378 (delta 442383)&lt;br /&gt;
 Receiving objects: 100% (597378/597378), 223.38 MiB | 11.16 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (442383/442383), done.&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_13_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_13_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_22_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_22_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;master&amp;lt;/span&amp;gt;     -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/master&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new tag]         v1.3.5     -&amp;gt; v1.3.5&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 . &lt;br /&gt;
  * [new tag]         v2.3.2     -&amp;gt; v2.3.2&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we create a local branch of the moodle 2.3 code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this we fork our initial ISIS code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout -b &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to a new branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point we expect an empty ISIS remote repository, where we can initially push the ISIS code. First we add it as a remote repository to our local git-repository. then we push the isis_contrib branch into the different branches of the remote repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Counting objects: 472320, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (117914/117914), done.&lt;br /&gt;
 Writing objects: 100% (472320/472320), 199.01 MiB | 17.92 MiB/s, done.&lt;br /&gt;
 Total 472320 (delta 347911), reused 464510 (delta 342938)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To stay in sync with the remote ISIS repository we track the remote branches to local ones now.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Already on &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --set-upstream &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt; set up to track local branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we are ready to bring the code to the productive Server. You can pull the code from the remote ISIS repository, but you will have a lot of overhead this way. So we simply rsync the code to the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; cd ..&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; rsync -a --delete --exclude=config.php --exclude=.htaccess --exclude=.git/ isis &amp;lt;nowiki&amp;gt;admin@www.isis.tu-berlin.de:/var/www/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 admin@www.isis.tu-berlin.de&#039;s password: &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This rsync command will reappear later updating the production code as well. At this point you can start using your moodle and follow the [[Installing_Moodle|install procedure]] of moodle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Develop and change local code ==&lt;br /&gt;
&lt;br /&gt;
Our developers clone the ISIS remote repository to their local home directories, prepare and test their changes and push the results back to &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; branch of the ISIS remote repository. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~$&amp;lt;/span&amp;gt; git clone &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Cloning into &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;...&lt;br /&gt;
 remote: Counting objects: 472320, done.&lt;br /&gt;
 remote: Compressing objects: 100% (112942/112942), done.&lt;br /&gt;
 remote: Total 472320 (delta 347910), reused 472320 (delta 347910)&lt;br /&gt;
 Receiving objects: 100% (472320/472320), 199.03 MiB | 23.88 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (347910/347910), done.&lt;br /&gt;
 warning: remote HEAD refers to nonexistent ref, unable to checkout.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To be aware of changes we track the remote &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; branch to a local branch. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~$&amp;lt;/span&amp;gt; cd isis/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git branch -av&lt;br /&gt;
   &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/origin/isis_contrib&amp;lt;/span&amp;gt;    562dbe4 weekly release 2.3.2+&lt;br /&gt;
   &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/origin/isis_productive&amp;lt;/span&amp;gt; 562dbe4 weekly release 2.3.2+&lt;br /&gt;
   &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/origin/isis_rebase&amp;lt;/span&amp;gt;     562dbe4 weekly release 2.3.2+&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/origin/isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;origin&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Lets fork a branch, where we put and test our code changes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git checkout -b &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_my_code1&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to a new branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_my_code1&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Make code changes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; emacs theme/base/style/pagelayout.css &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
After commiting it, we can push it to the ISIS remote repository. Of course there are 1000 ways of using git to develop and change code and to push it to remote repositories. This is just one of it. Feel free to use, whatever you are used to.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git commit -a -m &amp;quot;base theme updated&amp;quot;&lt;br /&gt;
 [&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_my_code1&amp;lt;/span&amp;gt; b5ec6cc] base theme updated&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;origin&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_my_code1&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Counting objects: 11, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (6/6), done.&lt;br /&gt;
 Writing objects: 100% (6/6), 511 bytes, done.&lt;br /&gt;
 Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    562dbe4..b5ec6cc  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_my_code1&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to update your &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; branch before the next code change.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 Your branch is behind &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;origin/isis_contrib&amp;lt;/span&amp;gt;&#039; by 1 commit, and can be fast-forwarded.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git pull&lt;br /&gt;
 Updating 562dbe4..b5ec6cc&lt;br /&gt;
 Fast-forward&lt;br /&gt;
  theme/base/style/pagelayout.css |    2 +-&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integrate code changes to productive ==&lt;br /&gt;
&lt;br /&gt;
Back on the integration server, the integration manager has to review and test the new code contributions. So lets get the new code changes from the ISIS remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git pull&lt;br /&gt;
 remote: Counting objects: 11, done.&lt;br /&gt;
 remote: Compressing objects: 100% (6/6), done.&lt;br /&gt;
 remote: Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 Unpacking objects: 100% (6/6), done.&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;isis.remote.tu-berlin.de/isis&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    562dbe4..b5ec6cc  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis/isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Updating 562dbe4..b5ec6cc&lt;br /&gt;
 Fast-forward&lt;br /&gt;
  theme/base/style/pagelayout.css |    2 +-&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
If you go for the code changes, you can merge them into the production branch and cherry-pick it on top of the rebase branch. I prefer cherry-picking the code, because it gives more awareness of what I do. Although there exists more ways of merging the code on top of the &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;-branch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git merge &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Updating 562dbe4..b5ec6cc&lt;br /&gt;
 Fast-forward&lt;br /&gt;
  theme/base/style/pagelayout.css |    2 +-&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git cherry-pick b5ec6cc&lt;br /&gt;
 Finished one cherry-pick.&lt;br /&gt;
 [isis_rebase ed9bd24] base theme updated&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we push our changes to the ISIS remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push&lt;br /&gt;
 Counting objects: 11, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (6/6), done.&lt;br /&gt;
 Writing objects: 100% (6/6), 517 bytes, done.&lt;br /&gt;
 Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    562dbe4..b5ec6cc  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
    562dbe4..ed9bd24  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally we apply the rsync again to copy the source code to the ISIS productive server. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; cd ..&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; rsync -a --delete --exclude=config.php --exclude=.htaccess --exclude=.git/ isis &amp;lt;nowiki&amp;gt;admin@www.isis.tu-berlin.de:/var/www/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 admin@www.isis.tu-berlin.de&#039;s password: &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Merge the weekly moodle release ==&lt;br /&gt;
&lt;br /&gt;
Now, having a working Moodle instance running at the Server, we have to merge the weekly Moodle releases, To be on the safe side, you can always fork new test branches and test the merging process there, before you apply these to your productive branches. After practising it for several month everything still merges smoothly without any conflicts.&lt;br /&gt;
&lt;br /&gt;
First we get the recent Moodle release in our tracked Moodle-branch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git pull &lt;br /&gt;
  remote: Counting objects: 4304, done.&lt;br /&gt;
  remote: Compressing objects: 100% (776/776), done.&lt;br /&gt;
  remote: Total 3014 (delta 2310), reused 2841 (delta 2155)&lt;br /&gt;
  Receiving objects: 100% (3014/3014), 733.24 KiB | 276 KiB/s, done.&lt;br /&gt;
  Resolving deltas: 100% (2310/2310), completed with 532 local objects.&lt;br /&gt;
  From &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    a8d6719..9fa159e  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_21_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_21_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
    a8ce907..10c3c37  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_22_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_22_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
    562dbe4..b1c5155  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
    ccd90e7..7e8ae12  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;master&amp;lt;/span&amp;gt;     -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/master&amp;lt;/span&amp;gt;&lt;br /&gt;
  Updating 562dbe4..b1c5155&lt;br /&gt;
  Fast-forward&lt;br /&gt;
   admin/cli/install.php                             |   14 +-&lt;br /&gt;
   admin/renderer.php                                |    2 +-&lt;br /&gt;
   admin/tool/customlang/locallib.php                |    2 +-&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
   version.php                                       |    4 +-&lt;br /&gt;
   webservice/lib.php                                |    2 +-&lt;br /&gt;
  104 files changed, 2211 insertions(+), 1248 deletions(-)&lt;br /&gt;
  create mode 100644 install/lang/ms/admin.php&lt;br /&gt;
  create mode 100644 install/lang/ms/install.php&lt;br /&gt;
  create mode 100644 install/lang/ms/moodle.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importppt.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importpptlib.php&lt;br /&gt;
  create mode 100644 pix/f/epub.png&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we merge the new release into our isis branches.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git merge &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &lt;br /&gt;
 Removing mod/lesson/importppt.php&lt;br /&gt;
 Removing mod/lesson/importpptlib.php&lt;br /&gt;
 Merge made by recursive.&lt;br /&gt;
  admin/cli/install.php                             |   14 +-&lt;br /&gt;
  admin/renderer.php                                |    2 +-&lt;br /&gt;
  admin/tool/customlang/locallib.php                |    2 +-&lt;br /&gt;
  admin/tool/customlang/styles.css                  |    4 +&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  user/selector/search.php                          |   13 +-&lt;br /&gt;
  version.php                                       |    4 +-&lt;br /&gt;
  webservice/lib.php                                |    2 +-&lt;br /&gt;
  104 files changed, 2211 insertions(+), 1248 deletions(-)&lt;br /&gt;
  create mode 100644 install/lang/ms/admin.php&lt;br /&gt;
  create mode 100644 install/lang/ms/install.php&lt;br /&gt;
  create mode 100644 install/lang/ms/moodle.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importppt.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importpptlib.php&lt;br /&gt;
  create mode 100644 pix/f/epub.png&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git merge &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &lt;br /&gt;
 Removing mod/lesson/importppt.php&lt;br /&gt;
 Removing mod/lesson/importpptlib.php&lt;br /&gt;
 Merge made by recursive.&lt;br /&gt;
  admin/cli/install.php                             |   14 +-&lt;br /&gt;
  admin/renderer.php                                |    2 +-&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .  &lt;br /&gt;
  user/selector/search.php                          |   13 +-&lt;br /&gt;
  version.php                                       |    4 +-&lt;br /&gt;
  webservice/lib.php                                |    2 +-&lt;br /&gt;
  104 files changed, 2211 insertions(+), 1248 deletions(-)&lt;br /&gt;
  create mode 100644 install/lang/ms/admin.php&lt;br /&gt;
  create mode 100644 install/lang/ms/install.php&lt;br /&gt;
  create mode 100644 install/lang/ms/moodle.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importppt.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importpptlib.php&lt;br /&gt;
  create mode 100644 pix/f/epub.png&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
As the name suggests, we rebase our code changes from the &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; branch on top of the &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git rebase &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &lt;br /&gt;
 First, rewinding head to replay your work on top of it...&lt;br /&gt;
 Applying: base theme updated&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Finally we push everything to the ISIS remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push&lt;br /&gt;
 Counting objects: 1062, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (159/159), done.&lt;br /&gt;
 Writing objects: 100% (661/661), 151.24 KiB, done.&lt;br /&gt;
 Total 661 (delta 501), reused 623 (delta 488)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    b5ec6cc..df8a1ca  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
    b5ec6cc..7b75c8e  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
  ! [rejected]        &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; (non-fast-forward)&lt;br /&gt;
 error: failed to push some refs to &#039;&amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&#039;&lt;br /&gt;
 To prevent you from losing history, non-fast-forward updates were rejected&lt;br /&gt;
 Merge the remote changes (e.g. &#039;git pull&#039;) before pushing again.  See the&lt;br /&gt;
 &#039;Note about fast-forwards&#039; section of &#039;git push --help&#039; for details.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Of course pushing the &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; branch fails, so we push it with force.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push --force &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Counting objects: 11, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (6/6), done.&lt;br /&gt;
 Writing objects: 100% (6/6), 515 bytes, done.&lt;br /&gt;
 Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  + ed9bd24...eeeb43f &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; (forced update)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Rebase on new Moodle version ==&lt;br /&gt;
&lt;br /&gt;
Because the developing branches of Moodle 2.4 are forked from Moodle 2.3.0 every merge from our recent productive branch with the new developing branch will fail because of conflicts. This is, why we collect all of our code changes on top of the &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; branch. Once a new Moodle-release is there, we can simply put our code changes again on top of this release and have hopefully less work with conflicts.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch -v&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;     e6aac11 weekly release 2.3.3+&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_24_dev&amp;lt;/span&amp;gt;        87e9331 weekly release 2.4dev&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;     6cc7e47 Ver-/Entschlüsselung der Backup-Archive @author: Jan Eberhardt, 10/08/2012&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git rebase --onto &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_24_dev MOODLE_23_STABLE isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Marc-robin</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101408</id>
		<title>Moodle Production Server with GIT</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101408"/>
		<updated>2012-10-19T14:58:11Z</updated>

		<summary type="html">&lt;p&gt;Marc-robin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GIT Repository scheme ==&lt;br /&gt;
&lt;br /&gt;
This is the description of how we maintain our Moodle2 code at [http://www.isis.tu-berlin.de/2.0/ TU Berlin]. Our Moodle 1.9 has ca. 30000 active user with average 2000 online user 24/7. This moves slowly to Moodle 2 now. We have a lot of code changes and plugins, so it&#039;s essential for us to maintain the code as automated as possible.&lt;br /&gt;
&lt;br /&gt;
Our Moodle is called ISIS. So further on everything what is named ISIS belongs to us, everything what is called MOODLE belongs to moodle.org.&lt;br /&gt;
&lt;br /&gt;
We use several GIT-repositories. The scheme with branches looks like this&lt;br /&gt;
&lt;br /&gt;
[[File:ISIS_GIT_schema.png]]&lt;br /&gt;
&lt;br /&gt;
The main purpose for the ISIS remote repository is for backups. One can imagine a scenario without this remote server only with local repositories involved. If you use [https://github.com/sitaramc/gitolite/wiki gitolite] for your remote repository, it&#039;s even more comfortable to keep the code clean, because you are able the restrict access to branches for developer and integration manager individually. &lt;br /&gt;
&lt;br /&gt;
The puzzle about the isis_rebase branch will be explained, when we come to a new moodle release.&lt;br /&gt;
&lt;br /&gt;
== Install the repositories ==&lt;br /&gt;
&lt;br /&gt;
We start with the original moodle code. For orientation we suggest to read the very useful description [[Git_for_Administrators]] first.&lt;br /&gt;
Instead of the advise there we won&#039;t clone the moodle.org-repository in the first place. We start over with creating an empty repository at the ISIS Integration server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; mkdir isis&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; cd isis/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git init&lt;br /&gt;
 Initialized empty Git repository in /home/wendt/isis/.git/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we add moodle.org as remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git fetch &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;&lt;br /&gt;
 remote: Counting objects: 597378, done.&lt;br /&gt;
 remote: Compressing objects: 100% (141938/141938), done.&lt;br /&gt;
 remote: Total 597378 (delta 442383), reused 597378 (delta 442383)&lt;br /&gt;
 Receiving objects: 100% (597378/597378), 223.38 MiB | 11.16 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (442383/442383), done.&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_13_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_13_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_22_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_22_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;master&amp;lt;/span&amp;gt;     -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/master&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new tag]         v1.3.5     -&amp;gt; v1.3.5&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 . &lt;br /&gt;
  * [new tag]         v2.3.2     -&amp;gt; v2.3.2&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we create a local branch of the moodle 2.3 code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this we fork our initial ISIS code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout -b &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to a new branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point we expect an empty ISIS remote repository, where we can initially push the ISIS code. First we add it as a remote repository to our local git-repository. then we push the isis_contrib branch into the different branches of the remote repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Counting objects: 472320, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (117914/117914), done.&lt;br /&gt;
 Writing objects: 100% (472320/472320), 199.01 MiB | 17.92 MiB/s, done.&lt;br /&gt;
 Total 472320 (delta 347911), reused 464510 (delta 342938)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To stay in sync with the remote ISIS repository we track the remote branches to local ones now.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Already on &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --set-upstream &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt; set up to track local branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we are ready to bring the code to the productive Server. You can pull the code from the remote ISIS repository, but you will have a lot of overhead this way. So we simply rsync the code to the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; cd ..&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; rsync -a --delete --exclude=config.php --exclude=.htaccess --exclude=.git/ isis &amp;lt;nowiki&amp;gt;admin@www.isis.tu-berlin.de:/var/www/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 admin@www.isis.tu-berlin.de&#039;s password: &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This rsync command will reappear later updating the production code as well. At this point you can start using your moodle and follow the [[Installing_Moodle|install procedure]] of moodle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Develop and change local code ==&lt;br /&gt;
&lt;br /&gt;
Our developers clone the ISIS remote repository to their local home directories, prepare and test their changes and push the results back to &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; branch of the ISIS remote repository. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~$&amp;lt;/span&amp;gt; git clone &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Cloning into &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;...&lt;br /&gt;
 remote: Counting objects: 472320, done.&lt;br /&gt;
 remote: Compressing objects: 100% (112942/112942), done.&lt;br /&gt;
 remote: Total 472320 (delta 347910), reused 472320 (delta 347910)&lt;br /&gt;
 Receiving objects: 100% (472320/472320), 199.03 MiB | 23.88 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (347910/347910), done.&lt;br /&gt;
 warning: remote HEAD refers to nonexistent ref, unable to checkout.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To be aware of changes we track the remote &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; branch to a local branch. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~$&amp;lt;/span&amp;gt; cd isis/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git branch -av&lt;br /&gt;
   &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/origin/isis_contrib&amp;lt;/span&amp;gt;    562dbe4 weekly release 2.3.2+&lt;br /&gt;
   &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/origin/isis_productive&amp;lt;/span&amp;gt; 562dbe4 weekly release 2.3.2+&lt;br /&gt;
   &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/origin/isis_rebase&amp;lt;/span&amp;gt;     562dbe4 weekly release 2.3.2+&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/origin/isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;origin&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Lets fork a branch, where we put and test our code changes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git checkout -b &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_my_code1&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to a new branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_my_code1&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Make code changes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; emacs theme/base/style/pagelayout.css &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
After commiting it, we can push it to the ISIS remote repository. Of course there are 1000 ways of using git to develop and change code and to push it to remote repositories. This is just one of it. Feel free to use, whatever you are used to.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git commit -a -m &amp;quot;base theme updated&amp;quot;&lt;br /&gt;
 [&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_my_code1&amp;lt;/span&amp;gt; b5ec6cc] base theme updated&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;origin&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_my_code1&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Counting objects: 11, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (6/6), done.&lt;br /&gt;
 Writing objects: 100% (6/6), 511 bytes, done.&lt;br /&gt;
 Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    562dbe4..b5ec6cc  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_my_code1&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to update your &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; branch before the next code change.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 Your branch is behind &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;origin/isis_contrib&amp;lt;/span&amp;gt;&#039; by 1 commit, and can be fast-forwarded.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git pull&lt;br /&gt;
 Updating 562dbe4..b5ec6cc&lt;br /&gt;
 Fast-forward&lt;br /&gt;
  theme/base/style/pagelayout.css |    2 +-&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integrate code changes to productive ==&lt;br /&gt;
&lt;br /&gt;
Back on the integration server, the integration manager has to review and test the new code contributions. So lets get the new code changes from the ISIS remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git pull&lt;br /&gt;
 remote: Counting objects: 11, done.&lt;br /&gt;
 remote: Compressing objects: 100% (6/6), done.&lt;br /&gt;
 remote: Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 Unpacking objects: 100% (6/6), done.&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;isis.remote.tu-berlin.de/isis&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    562dbe4..b5ec6cc  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis/isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Updating 562dbe4..b5ec6cc&lt;br /&gt;
 Fast-forward&lt;br /&gt;
  theme/base/style/pagelayout.css |    2 +-&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
If you go for the code changes, you can merge them into the production branch and cherry-pick it on top of the rebase branch. I prefer cherry-picking the code, because it gives more awareness of what I do. Although there exists more ways of merging the code on top of the &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;-branch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git merge &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Updating 562dbe4..b5ec6cc&lt;br /&gt;
 Fast-forward&lt;br /&gt;
  theme/base/style/pagelayout.css |    2 +-&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git cherry-pick b5ec6cc&lt;br /&gt;
 Finished one cherry-pick.&lt;br /&gt;
 [isis_rebase ed9bd24] base theme updated&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we push our changes to the ISIS remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push&lt;br /&gt;
 Counting objects: 11, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (6/6), done.&lt;br /&gt;
 Writing objects: 100% (6/6), 517 bytes, done.&lt;br /&gt;
 Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    562dbe4..b5ec6cc  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
    562dbe4..ed9bd24  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally we apply the rsync again to copy the source code to the ISIS productive server. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; cd ..&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; rsync -a --delete --exclude=config.php --exclude=.htaccess --exclude=.git/ isis &amp;lt;nowiki&amp;gt;admin@www.isis.tu-berlin.de:/var/www/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 admin@www.isis.tu-berlin.de&#039;s password: &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Merge the weekly moodle release ==&lt;br /&gt;
&lt;br /&gt;
Now, having a working Moodle instance running at the Server, we have to merge the weekly Moodle releases, To be on the safe side, you can always fork new test branches and test the merging process there, before you apply these to your productive branches. After practising it for several month everything still merges smoothly without any conflicts.&lt;br /&gt;
&lt;br /&gt;
First we get the recent Moodle release in our tracked Moodle-branch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git pull &lt;br /&gt;
  remote: Counting objects: 4304, done.&lt;br /&gt;
  remote: Compressing objects: 100% (776/776), done.&lt;br /&gt;
  remote: Total 3014 (delta 2310), reused 2841 (delta 2155)&lt;br /&gt;
  Receiving objects: 100% (3014/3014), 733.24 KiB | 276 KiB/s, done.&lt;br /&gt;
  Resolving deltas: 100% (2310/2310), completed with 532 local objects.&lt;br /&gt;
  From &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    a8d6719..9fa159e  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_21_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_21_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
    a8ce907..10c3c37  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_22_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_22_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
    562dbe4..b1c5155  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
    ccd90e7..7e8ae12  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;master&amp;lt;/span&amp;gt;     -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/master&amp;lt;/span&amp;gt;&lt;br /&gt;
  Updating 562dbe4..b1c5155&lt;br /&gt;
  Fast-forward&lt;br /&gt;
   admin/cli/install.php                             |   14 +-&lt;br /&gt;
   admin/renderer.php                                |    2 +-&lt;br /&gt;
   admin/tool/customlang/locallib.php                |    2 +-&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
   version.php                                       |    4 +-&lt;br /&gt;
   webservice/lib.php                                |    2 +-&lt;br /&gt;
  104 files changed, 2211 insertions(+), 1248 deletions(-)&lt;br /&gt;
  create mode 100644 install/lang/ms/admin.php&lt;br /&gt;
  create mode 100644 install/lang/ms/install.php&lt;br /&gt;
  create mode 100644 install/lang/ms/moodle.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importppt.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importpptlib.php&lt;br /&gt;
  create mode 100644 pix/f/epub.png&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we merge the new release into our isis branches.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git merge &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &lt;br /&gt;
 Removing mod/lesson/importppt.php&lt;br /&gt;
 Removing mod/lesson/importpptlib.php&lt;br /&gt;
 Merge made by recursive.&lt;br /&gt;
  admin/cli/install.php                             |   14 +-&lt;br /&gt;
  admin/renderer.php                                |    2 +-&lt;br /&gt;
  admin/tool/customlang/locallib.php                |    2 +-&lt;br /&gt;
  admin/tool/customlang/styles.css                  |    4 +&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  user/selector/search.php                          |   13 +-&lt;br /&gt;
  version.php                                       |    4 +-&lt;br /&gt;
  webservice/lib.php                                |    2 +-&lt;br /&gt;
  104 files changed, 2211 insertions(+), 1248 deletions(-)&lt;br /&gt;
  create mode 100644 install/lang/ms/admin.php&lt;br /&gt;
  create mode 100644 install/lang/ms/install.php&lt;br /&gt;
  create mode 100644 install/lang/ms/moodle.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importppt.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importpptlib.php&lt;br /&gt;
  create mode 100644 pix/f/epub.png&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git merge &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &lt;br /&gt;
 Removing mod/lesson/importppt.php&lt;br /&gt;
 Removing mod/lesson/importpptlib.php&lt;br /&gt;
 Merge made by recursive.&lt;br /&gt;
  admin/cli/install.php                             |   14 +-&lt;br /&gt;
  admin/renderer.php                                |    2 +-&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .  &lt;br /&gt;
  user/selector/search.php                          |   13 +-&lt;br /&gt;
  version.php                                       |    4 +-&lt;br /&gt;
  webservice/lib.php                                |    2 +-&lt;br /&gt;
  104 files changed, 2211 insertions(+), 1248 deletions(-)&lt;br /&gt;
  create mode 100644 install/lang/ms/admin.php&lt;br /&gt;
  create mode 100644 install/lang/ms/install.php&lt;br /&gt;
  create mode 100644 install/lang/ms/moodle.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importppt.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importpptlib.php&lt;br /&gt;
  create mode 100644 pix/f/epub.png&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
As the name suggests, we rebase our code changes from the &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; branch on top of the &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git rebase &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &lt;br /&gt;
 First, rewinding head to replay your work on top of it...&lt;br /&gt;
 Applying: base theme updated&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Finally we push everything to the ISIS remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push&lt;br /&gt;
 Counting objects: 1062, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (159/159), done.&lt;br /&gt;
 Writing objects: 100% (661/661), 151.24 KiB, done.&lt;br /&gt;
 Total 661 (delta 501), reused 623 (delta 488)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    b5ec6cc..df8a1ca  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
    b5ec6cc..7b75c8e  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
  ! [rejected]        &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; (non-fast-forward)&lt;br /&gt;
 error: failed to push some refs to &#039;&amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&#039;&lt;br /&gt;
 To prevent you from losing history, non-fast-forward updates were rejected&lt;br /&gt;
 Merge the remote changes (e.g. &#039;git pull&#039;) before pushing again.  See the&lt;br /&gt;
 &#039;Note about fast-forwards&#039; section of &#039;git push --help&#039; for details.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Of course pushing the &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; branch fails, so we push it with force.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push --force &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Counting objects: 11, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (6/6), done.&lt;br /&gt;
 Writing objects: 100% (6/6), 515 bytes, done.&lt;br /&gt;
 Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  + ed9bd24...eeeb43f &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; (forced update)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Rebase on new Moodle version ==&lt;br /&gt;
&lt;br /&gt;
Because the developing branches of Moodle 2.4 are forked from Moodle 2.3.0 every merge from our recent productive branch with the new developing branch will fail because of conflicts. This is, why we collect all of our code changes on top of the &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; branch. Once a new Moodle-release is there, we can simply put our code changes again on top of this release and have hopefully less work with conflicts.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch -v&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;     e6aac11 weekly release 2.3.3+&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_24_dev&amp;lt;/span&amp;gt;        87e9331 weekly release 2.4dev&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;     6cc7e47 Ver-/Entschlüsselung der Backup-Archive @author: Jan Eberhardt, 10/08/2012&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git rebase --onto &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_24_dev MOODLE_23_STABLE isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Marc-robin</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/500/en/index.php?title=Git_for_Administrators&amp;diff=101407</id>
		<title>Git for Administrators</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/500/en/index.php?title=Git_for_Administrators&amp;diff=101407"/>
		<updated>2012-10-19T13:45:40Z</updated>

		<summary type="html">&lt;p&gt;Marc-robin: link to case study TU Berlin added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Installing Moodle}}&lt;br /&gt;
The recommended way (now all Moodle development has moved to this versioning system) is Git. This page describes how to maintain a copy of Moodle on your production server which can easily be upgraded using Git. If you have customisations of Moodle core code, you are advised to follow the instructions in the [[Development:Quick Git start guide for Moodle development|Quick Git start guide for Moodle development]].&lt;br /&gt;
&lt;br /&gt;
To get the most of of Git it is worth making the effort to understand its basic concepts - see the See also section below. It can be a bit of a learning curve, especially if you are used to CVS or Subversion. &lt;br /&gt;
&lt;br /&gt;
== Getting hold of Git (Windows, OSX, Linux and others) ==&lt;br /&gt;
&lt;br /&gt;
Support for Git was, up until recently, mostly confined to Linux but builds are now available for most popular operating systems:&lt;br /&gt;
&lt;br /&gt;
* List of downloads from Git site - http://git-scm.com/download&lt;br /&gt;
&lt;br /&gt;
Once you have downloaded and installed your OS relevant git installation, the git commands in this document should work with your operating system.&lt;br /&gt;
&lt;br /&gt;
== Obtaining the code from Git ==&lt;br /&gt;
&lt;br /&gt;
The command line version of Git is discussed here. Graphical clients are little more than wrappers around the command line version, so you should be able to deduce the correct parameters quite easily. &lt;br /&gt;
&lt;br /&gt;
You can find the official Moodle git repository at git://git.moodle.org/moodle.git (with an official clone at git://github.com/moodle/moodle.git). To initialize your local checkout, use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ git clone git://git.moodle.org/moodle.git                       (1)&lt;br /&gt;
$ cd moodle&lt;br /&gt;
$ git branch -a                                                   (2)&lt;br /&gt;
$ git branch --track MOODLE_23_STABLE origin/MOODLE_23_STABLE      (3)&lt;br /&gt;
$ git checkout MOODLE_23_STABLE                                    (4)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* The command (1) initializes the new local repository as a clone of the &#039;upstream&#039; (i.e. the remote server based) moodle.git repository. The upstream repository is called &#039;origin&#039; by default. It creates a new directory named &#039;&#039;moodle&#039;&#039;, where it downloads all the files. This operation can take a while as it is actually getting the entire history of all Moodle versions&lt;br /&gt;
* The command (2) lists all available branches.&lt;br /&gt;
* Use the command (3) to create a new local branch called MOODLE_23_STABLE and set it to track the remote branch MOODLE_23_STABLE from the upstream repository.&lt;br /&gt;
* The command (4) actually switches to the newly created local branch. &lt;br /&gt;
&lt;br /&gt;
Note that Git has a huge number of options for each command and it&#039;s actually possible to do the above process with a single command (left as an exercise!!).&lt;br /&gt;
&lt;br /&gt;
==Git from behind a firewall==&lt;br /&gt;
&lt;br /&gt;
Git uses a proprietary protocol and it may be blocked by your firewall (port 9418). If this is a problem, you can use Github&#039;s http version &amp;lt;nowiki&amp;gt;https://github.com/moodle/moodle.git&amp;lt;/nowiki&amp;gt;. It&#039;s a bit slower, so use the Git protocol if you can.&lt;br /&gt;
&lt;br /&gt;
== Updating your installation ==&lt;br /&gt;
&lt;br /&gt;
The Moodle development team performs integration and testing of fixed bugs every Monday and Tuesday. On Wednesday you can install all patches by updating your code. Check the [http://git.moodle.org/gw?p=moodle.git;a=summary shortlog] to see if the official repository has been already updated or not.&lt;br /&gt;
&lt;br /&gt;
To update your code to the latest version (on the MOODLE_22_STABLE branch) &#039;&#039;&#039;all&#039;&#039;&#039; you have to do is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/your/moodle/&lt;br /&gt;
$ git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If this is a production site you should still consider the [[Upgrade]] instructions (e.g. take backups).&lt;br /&gt;
&lt;br /&gt;
== Installing a contributed extension from its Git repository ==&lt;br /&gt;
&lt;br /&gt;
This is one way to handle adding plugins from other Git repositories into your Moodle repository. Another way is to use Git Submodules. However, at the time of writing, this is one of Git&#039;s rougher features and should be regarded as an advanced option. &lt;br /&gt;
&lt;br /&gt;
For example, let us say we want to install the [[Book module]] from its Git repository into our Moodle 2.2.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/your/moodle/&lt;br /&gt;
$ cd mod                                                          (1)&lt;br /&gt;
$ git clone git://github.com/skodak/moodle-mod_book.git book      (2)&lt;br /&gt;
$ cd book&lt;br /&gt;
$ git checkout -b MOODLE_22_STABLE origin/MOODLE_22_STABLE        (3)&lt;br /&gt;
$ git branch -d master                                            (4)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The command (1) changes the current directory into the &#039;&#039;mod&#039;&#039; folder of your local Moodle clone. The command (2) creates a new subdirectory &#039;&#039;book&#039;&#039; and makes a local clone of Petr Škoda&#039;s vanilla Book repository. The command (3) creates a new local branch that will track the remote branch with a Book version for Moodle 2.1. The command (4) deletes the &#039;&#039;master&#039;&#039; that was created automatically by git-clone in (2) as we do not want it in this production checkout.&lt;br /&gt;
&lt;br /&gt;
Now it is wise to put the new directory mod/book/ to the list of ignored files of the main Moodle clone, otherwise a status of the main clone will keep reminding you that the new code has not been checked in.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/your/moodle/&lt;br /&gt;
$ echo /mod/book/ &amp;gt;&amp;gt; .git/info/exclude&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To update your Moodle installation now, you must visit both Git repositories and pull changes from upstream.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/your/moodle/&lt;br /&gt;
$ git pull&lt;br /&gt;
$ cd mod/book&lt;br /&gt;
$ git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Writing a shell script with these lines in the root of Moodle installation is a very good idea. Otherwise it is easy to forget what Git repositories are there within the main Moodle repository.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
; Moodle Docs&lt;br /&gt;
* [[Git FAQ]]&lt;br /&gt;
* [[Windows installation using Git]]&lt;br /&gt;
* [[Moodle versions]]&lt;br /&gt;
* For some screenshots see [[User:Frank_Ralf/Git]] (still work in progress)&lt;br /&gt;
* For fixing a Tracker Issue (MDL) / Forking Moodle / CONTRIButing code ... [[User:Sam_Hemelryk/My_Moodle_Git_workflow]]&lt;br /&gt;
* [[Moodle_Production_Server_with_GIT|Case study Git + Moodle from Technical University Berlin]]&lt;br /&gt;
&lt;br /&gt;
; Moodle forum discussions&lt;br /&gt;
* [https://moodle.org/mod/forum/discuss.php?d=213695 Got GIT installed on my site- here&#039;s how!]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=168094 GIT help needed]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=165236 Best way to manage CONTRIB code with GIT]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=167063 Handy Git tip for tracking 3rd-party modules and plugins]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=167730 Moodle Git repositories]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=183693 Git and CVS]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=208904 GIT for dummies]&lt;br /&gt;
* [http://moodle.org/mod/forum/discuss.php?d=211930 Git and upgrading misunderstanding]&lt;br /&gt;
&lt;br /&gt;
; External resources &lt;br /&gt;
* [http://www.kernel.org/pub/software/scm/git/docs/everyday.html Everyday GIT With 20 Commands Or So]&lt;br /&gt;
* [http://gitref.org/ Git Reference]&lt;br /&gt;
* [http://progit.org/book/ Pro Git book]&lt;br /&gt;
* [http://eigenjoy.com/2008/05/15/git-from-the-bottom-up/ Git from the bottom up]&lt;br /&gt;
&lt;br /&gt;
[[ja:管理者用Git]]&lt;br /&gt;
[[fr:Git_pour_administrateurs]]&lt;/div&gt;</summary>
		<author><name>Marc-robin</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101406</id>
		<title>Moodle Production Server with GIT</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101406"/>
		<updated>2012-10-19T13:36:11Z</updated>

		<summary type="html">&lt;p&gt;Marc-robin: bring more colors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GIT Repository scheme ==&lt;br /&gt;
&lt;br /&gt;
This is the description of how we maintain our Moodle2 code at [http://www.isis.tu-berlin.de/2.0/ TU Berlin]. Our Moodle 1.9 has ca. 30000 active user with average 2000 online user 24/7. This moves slowly to Moodle 2 now. We have a lot of code changes and plugins, so it&#039;s essential for us to maintain the code as automated as possible.&lt;br /&gt;
&lt;br /&gt;
Our Moodle is called ISIS. So further on everything what is named ISIS belongs to us, everything what is called MOODLE belongs to moodle.org.&lt;br /&gt;
&lt;br /&gt;
We use several GIT-repositories. The scheme with branches looks like this&lt;br /&gt;
&lt;br /&gt;
[[File:ISIS_GIT_schema.png]]&lt;br /&gt;
&lt;br /&gt;
The main purpose for the ISIS remote repository is for backups. One can imagine a scenario without this remote server only with local repositories involved. If you use [https://github.com/sitaramc/gitolite/wiki gitolite] for your remote repository, it&#039;s even more comfortable to keep the code clean, because you are able the restrict access to branches for developer and integration manager individually. &lt;br /&gt;
&lt;br /&gt;
The puzzle about the isis_rebase branch will be explained, when we come to a new moodle release.&lt;br /&gt;
&lt;br /&gt;
== Install the repositories ==&lt;br /&gt;
&lt;br /&gt;
We start with the original moodle code. For orientation we suggest to read the very useful description [[Git_for_Administrators]] first.&lt;br /&gt;
Instead of the advise there we won&#039;t clone the moodle.org-repository in the first place. We start over with creating an empty repository at the ISIS Integration server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; mkdir isis&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; cd isis/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git init&lt;br /&gt;
 Initialized empty Git repository in /home/wendt/isis/.git/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we add moodle.org as remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git fetch &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;&lt;br /&gt;
 remote: Counting objects: 597378, done.&lt;br /&gt;
 remote: Compressing objects: 100% (141938/141938), done.&lt;br /&gt;
 remote: Total 597378 (delta 442383), reused 597378 (delta 442383)&lt;br /&gt;
 Receiving objects: 100% (597378/597378), 223.38 MiB | 11.16 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (442383/442383), done.&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_13_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_13_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_22_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_22_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;master&amp;lt;/span&amp;gt;     -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/master&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new tag]         v1.3.5     -&amp;gt; v1.3.5&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 . &lt;br /&gt;
  * [new tag]         v2.3.2     -&amp;gt; v2.3.2&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we create a local branch of the moodle 2.3 code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this we fork our initial ISIS code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout -b &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to a new branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point we expect an empty ISIS remote repository, where we can initially push the ISIS code. First we add it as a remote repository to our local git-repository. then we push the isis_contrib branch into the different branches of the remote repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Counting objects: 472320, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (117914/117914), done.&lt;br /&gt;
 Writing objects: 100% (472320/472320), 199.01 MiB | 17.92 MiB/s, done.&lt;br /&gt;
 Total 472320 (delta 347911), reused 464510 (delta 342938)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To stay in sync with the remote ISIS repository we track the remote branches to local ones now.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Already on &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --set-upstream &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt; set up to track local branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we are ready to bring the code to the productive Server. You can pull the code from the remote ISIS repository, but you will have a lot of overhead this way. So we simply rsync the code to the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; cd ..&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; rsync -a --delete --exclude=config.php --exclude=.htaccess --exclude=.git/ isis &amp;lt;nowiki&amp;gt;admin@www.isis.tu-berlin.de:/var/www/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 admin@www.isis.tu-berlin.de&#039;s password: &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This rsync command will reappear later updating the production code as well. At this point you can start using your moodle and follow the [[Installing_Moodle|install procedure]] of moodle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Develop and change local code ==&lt;br /&gt;
&lt;br /&gt;
Our developers clone the ISIS remote repository to their local home directories, prepare and test their changes and push the results back to &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; branch of the ISIS remote repository. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~$&amp;lt;/span&amp;gt; git clone &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Cloning into &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;...&lt;br /&gt;
 remote: Counting objects: 472320, done.&lt;br /&gt;
 remote: Compressing objects: 100% (112942/112942), done.&lt;br /&gt;
 remote: Total 472320 (delta 347910), reused 472320 (delta 347910)&lt;br /&gt;
 Receiving objects: 100% (472320/472320), 199.03 MiB | 23.88 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (347910/347910), done.&lt;br /&gt;
 warning: remote HEAD refers to nonexistent ref, unable to checkout.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To be aware of changes we track the remote &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; branch to a local branch. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~$&amp;lt;/span&amp;gt; cd isis/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git branch -av&lt;br /&gt;
   &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/origin/isis_contrib&amp;lt;/span&amp;gt;    562dbe4 weekly release 2.3.2+&lt;br /&gt;
   &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/origin/isis_productive&amp;lt;/span&amp;gt; 562dbe4 weekly release 2.3.2+&lt;br /&gt;
   &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/origin/isis_rebase&amp;lt;/span&amp;gt;     562dbe4 weekly release 2.3.2+&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/origin/isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; from origin.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Lets fork a branch, where we put and test our code changes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git checkout -b &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_my_code1&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to a new branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_my_code1&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Make code changes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; emacs theme/base/style/pagelayout.css &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
After commiting it, we can push it to the ISIS remote repository. Of course there are 1000 ways of using git to develop and change code and to push it to remote repositories. This is just one of it. Feel free to use, whatever you are used to.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git commit -a -m &amp;quot;base theme updated&amp;quot;&lt;br /&gt;
 [&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_my_code1&amp;lt;/span&amp;gt; b5ec6cc] base theme updated&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git push origin &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_my_code1&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Counting objects: 11, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (6/6), done.&lt;br /&gt;
 Writing objects: 100% (6/6), 511 bytes, done.&lt;br /&gt;
 Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    562dbe4..b5ec6cc  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_my_code1&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to update your &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; branch before the next code change.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 Your branch is behind &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;origin/isis_contrib&amp;lt;/span&amp;gt;&#039; by 1 commit, and can be fast-forwarded.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git pull&lt;br /&gt;
 Updating 562dbe4..b5ec6cc&lt;br /&gt;
 Fast-forward&lt;br /&gt;
  theme/base/style/pagelayout.css |    2 +-&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integrate code changes to productive ==&lt;br /&gt;
&lt;br /&gt;
Back on the integration server, the integration manager has to review and test the new code contributions. So lets get the new code changes from the ISIS remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git pull&lt;br /&gt;
 remote: Counting objects: 11, done.&lt;br /&gt;
 remote: Compressing objects: 100% (6/6), done.&lt;br /&gt;
 remote: Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 Unpacking objects: 100% (6/6), done.&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;isis.remote.tu-berlin.de/isis&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    562dbe4..b5ec6cc  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis/isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Updating 562dbe4..b5ec6cc&lt;br /&gt;
 Fast-forward&lt;br /&gt;
  theme/base/style/pagelayout.css |    2 +-&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
If you go for the code changes, you can merge them into the production branch and cherry-pick it on top of the rebase branch. I prefer cherry-picking the code, because it gives more awareness of what I do. Although there exists more ways of merging the code on top of the &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;-branch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git merge &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Updating 562dbe4..b5ec6cc&lt;br /&gt;
 Fast-forward&lt;br /&gt;
  theme/base/style/pagelayout.css |    2 +-&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git cherry-pick b5ec6cc&lt;br /&gt;
 Finished one cherry-pick.&lt;br /&gt;
 [isis_rebase ed9bd24] base theme updated&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we push our changes to the ISIS remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push&lt;br /&gt;
 Counting objects: 11, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (6/6), done.&lt;br /&gt;
 Writing objects: 100% (6/6), 517 bytes, done.&lt;br /&gt;
 Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    562dbe4..b5ec6cc  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
    562dbe4..ed9bd24  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally we apply the rsync again to copy the source code to the ISIS productive server. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; cd ..&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; rsync -a --delete --exclude=config.php --exclude=.htaccess --exclude=.git/ isis &amp;lt;nowiki&amp;gt;admin@www.isis.tu-berlin.de:/var/www/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 admin@www.isis.tu-berlin.de&#039;s password: &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Merge the weekly moodle release ==&lt;br /&gt;
&lt;br /&gt;
Now, having a working Moodle instance running at the Server, we have to merge the weekly Moodle releases, To be on the safe side, you can always fork new test branches and test the merging process there, before you apply these to you productive branches. After practising it for several month everything still merges smoothly without any conflicts.&lt;br /&gt;
&lt;br /&gt;
First we get the recent Moodle release in our tracked Moodle-branch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git pull &lt;br /&gt;
  remote: Counting objects: 4304, done.&lt;br /&gt;
  remote: Compressing objects: 100% (776/776), done.&lt;br /&gt;
  remote: Total 3014 (delta 2310), reused 2841 (delta 2155)&lt;br /&gt;
  Receiving objects: 100% (3014/3014), 733.24 KiB | 276 KiB/s, done.&lt;br /&gt;
  Resolving deltas: 100% (2310/2310), completed with 532 local objects.&lt;br /&gt;
  From &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    a8d6719..9fa159e  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_21_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_21_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
    a8ce907..10c3c37  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_22_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_22_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
    562dbe4..b1c5155  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
    ccd90e7..7e8ae12  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;master&amp;lt;/span&amp;gt;     -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/master&amp;lt;/span&amp;gt;&lt;br /&gt;
  Updating 562dbe4..b1c5155&lt;br /&gt;
  Fast-forward&lt;br /&gt;
   admin/cli/install.php                             |   14 +-&lt;br /&gt;
   admin/renderer.php                                |    2 +-&lt;br /&gt;
   admin/tool/customlang/locallib.php                |    2 +-&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
   version.php                                       |    4 +-&lt;br /&gt;
   webservice/lib.php                                |    2 +-&lt;br /&gt;
  104 files changed, 2211 insertions(+), 1248 deletions(-)&lt;br /&gt;
  create mode 100644 install/lang/ms/admin.php&lt;br /&gt;
  create mode 100644 install/lang/ms/install.php&lt;br /&gt;
  create mode 100644 install/lang/ms/moodle.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importppt.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importpptlib.php&lt;br /&gt;
  create mode 100644 pix/f/epub.png&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we merge the new release into our isis branches.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git merge &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &lt;br /&gt;
 Removing mod/lesson/importppt.php&lt;br /&gt;
 Removing mod/lesson/importpptlib.php&lt;br /&gt;
 Merge made by recursive.&lt;br /&gt;
  admin/cli/install.php                             |   14 +-&lt;br /&gt;
  admin/renderer.php                                |    2 +-&lt;br /&gt;
  admin/tool/customlang/locallib.php                |    2 +-&lt;br /&gt;
  admin/tool/customlang/styles.css                  |    4 +&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  user/selector/search.php                          |   13 +-&lt;br /&gt;
  version.php                                       |    4 +-&lt;br /&gt;
  webservice/lib.php                                |    2 +-&lt;br /&gt;
  104 files changed, 2211 insertions(+), 1248 deletions(-)&lt;br /&gt;
  create mode 100644 install/lang/ms/admin.php&lt;br /&gt;
  create mode 100644 install/lang/ms/install.php&lt;br /&gt;
  create mode 100644 install/lang/ms/moodle.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importppt.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importpptlib.php&lt;br /&gt;
  create mode 100644 pix/f/epub.png&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git merge &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &lt;br /&gt;
 Removing mod/lesson/importppt.php&lt;br /&gt;
 Removing mod/lesson/importpptlib.php&lt;br /&gt;
 Merge made by recursive.&lt;br /&gt;
  admin/cli/install.php                             |   14 +-&lt;br /&gt;
  admin/renderer.php                                |    2 +-&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .  &lt;br /&gt;
  user/selector/search.php                          |   13 +-&lt;br /&gt;
  version.php                                       |    4 +-&lt;br /&gt;
  webservice/lib.php                                |    2 +-&lt;br /&gt;
  104 files changed, 2211 insertions(+), 1248 deletions(-)&lt;br /&gt;
  create mode 100644 install/lang/ms/admin.php&lt;br /&gt;
  create mode 100644 install/lang/ms/install.php&lt;br /&gt;
  create mode 100644 install/lang/ms/moodle.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importppt.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importpptlib.php&lt;br /&gt;
  create mode 100644 pix/f/epub.png&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
As the name suggests, we rebase our code changes from the &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; branch on top of the &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; &lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git rebase &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &lt;br /&gt;
 First, rewinding head to replay your work on top of it...&lt;br /&gt;
 Applying: base theme updated&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Finally we push everything to the ISIS remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push&lt;br /&gt;
 Counting objects: 1062, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (159/159), done.&lt;br /&gt;
 Writing objects: 100% (661/661), 151.24 KiB, done.&lt;br /&gt;
 Total 661 (delta 501), reused 623 (delta 488)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    b5ec6cc..df8a1ca  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
    b5ec6cc..7b75c8e  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
  ! [rejected]        &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; (non-fast-forward)&lt;br /&gt;
 error: failed to push some refs to &#039;&amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&#039;&lt;br /&gt;
 To prevent you from losing history, non-fast-forward updates were rejected&lt;br /&gt;
 Merge the remote changes (e.g. &#039;git pull&#039;) before pushing again.  See the&lt;br /&gt;
 &#039;Note about fast-forwards&#039; section of &#039;git push --help&#039; for details.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Of course pushing the &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; branch fails, so we push it with force.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push --force &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Counting objects: 11, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (6/6), done.&lt;br /&gt;
 Writing objects: 100% (6/6), 515 bytes, done.&lt;br /&gt;
 Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  + ed9bd24...eeeb43f &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; (forced update)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Rebase on new Moodle version ==&lt;br /&gt;
&lt;br /&gt;
Because the developing branches of Moodle 2.4 are forked from Moodle 2.3.0 every merge from our recent productive branch with the new developing branch will fail because of conflicts. This is, why we collect all of our code changes on top of the &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; branch. Once a new Moodle-release is there, we can simply put our code changes again on top of this release and have hopefully less work with conflicts.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch -v&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;     e6aac11 weekly release 2.3.3+&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_24_dev&amp;lt;/span&amp;gt;        87e9331 weekly release 2.4dev&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;     6cc7e47 Ver-/Entschlüsselung der Backup-Archive @author: Jan Eberhardt, 10/08/2012&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git rebase --onto &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_24_dev MOODLE_23_STABLE isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Marc-robin</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101405</id>
		<title>Moodle Production Server with GIT</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101405"/>
		<updated>2012-10-19T13:11:57Z</updated>

		<summary type="html">&lt;p&gt;Marc-robin: all chapters finished&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GIT Repository scheme ==&lt;br /&gt;
&lt;br /&gt;
This is the description of how we maintain our Moodle2 code at [http://www.isis.tu-berlin.de/2.0/ TU Berlin]. Our Moodle has ca. 30000 active user with average 2000 online user 24/7. We have a lot of code changes and plugins, so it&#039;s essential for us to maintain the code as automated as possible.&lt;br /&gt;
&lt;br /&gt;
Our Moodle is called ISIS. So further on everything what is named ISIS belongs to us, everything what is called MOODLE belongs to moodle.org.&lt;br /&gt;
&lt;br /&gt;
We use several GIT-repositories. The scheme with branches looks like this&lt;br /&gt;
&lt;br /&gt;
[[File:ISIS_GIT_schema.png]]&lt;br /&gt;
&lt;br /&gt;
The main purpose for the ISIS remote repository is for backups. One can imagine a scenario without this remote server only with local repositories involved. If you use [https://github.com/sitaramc/gitolite/wiki gitolite] for your remote repository, it&#039;s even more comfortable to keep the code clean, because you are able the restrict access to branches for developer and integration manager individually. &lt;br /&gt;
&lt;br /&gt;
The puzzle about the isis_rebase branch will be explained, when we come to a new moodle release.&lt;br /&gt;
&lt;br /&gt;
== Install the repositories ==&lt;br /&gt;
&lt;br /&gt;
We start with the original moodle code. For orientation we suggest to read the very useful description [[Git_for_Administrators]] first.&lt;br /&gt;
Instead of the advise there we won&#039;t clone the moodle.org-repository in the first place. We start over with creating an empty repository at the ISIS Integration server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; mkdir isis&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; cd isis/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git init&lt;br /&gt;
 Initialized empty Git repository in /home/wendt/isis/.git/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we add moodle.org as remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git fetch &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;&lt;br /&gt;
 remote: Counting objects: 597378, done.&lt;br /&gt;
 remote: Compressing objects: 100% (141938/141938), done.&lt;br /&gt;
 remote: Total 597378 (delta 442383), reused 597378 (delta 442383)&lt;br /&gt;
 Receiving objects: 100% (597378/597378), 223.38 MiB | 11.16 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (442383/442383), done.&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_13_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_13_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_22_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_22_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;master&amp;lt;/span&amp;gt;     -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/master&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new tag]         v1.3.5     -&amp;gt; v1.3.5&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 . &lt;br /&gt;
  * [new tag]         v2.3.2     -&amp;gt; v2.3.2&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we create a local branch of the moodle 2.3 code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this we fork our initial ISIS code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout -b &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to a new branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point we expect an empty ISIS remote repository, where we can initially push the ISIS code. First we add it as a remote repository to our local git-repository. then we push the isis_contrib branch into the different branches of the remote repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Counting objects: 472320, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (117914/117914), done.&lt;br /&gt;
 Writing objects: 100% (472320/472320), 199.01 MiB | 17.92 MiB/s, done.&lt;br /&gt;
 Total 472320 (delta 347911), reused 464510 (delta 342938)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To stay in sync with the remote ISIS repository we track the remote branches to local ones now.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Already on &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --set-upstream &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt; set up to track local branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we are ready to bring the code to the productive Server. You can pull the code from the remote ISIS repository, but you will have a lot of overhead this way. So we simply rsync the code to the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; cd ..&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; rsync -a --delete --exclude=config.php --exclude=.htaccess --exclude=.git/ isis &amp;lt;nowiki&amp;gt;admin@www.isis.tu-berlin.de:/var/www/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 admin@www.isis.tu-berlin.de&#039;s password: &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This rsync command will reappear later updating the production code as well. At this point you can start using your moodle and follow the [[Installing_Moodle|install procedure]] of moodle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Develop and change local code ==&lt;br /&gt;
&lt;br /&gt;
Our developers clone the ISIS remote repository to their local home directories, prepare and test their changes and push the results back to isis_contrib branch of the ISIS remote repository. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~$&amp;lt;/span&amp;gt; git clone &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Cloning into isis...&lt;br /&gt;
 remote: Counting objects: 472320, done.&lt;br /&gt;
 remote: Compressing objects: 100% (112942/112942), done.&lt;br /&gt;
 remote: Total 472320 (delta 347910), reused 472320 (delta 347910)&lt;br /&gt;
 Receiving objects: 100% (472320/472320), 199.03 MiB | 23.88 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (347910/347910), done.&lt;br /&gt;
 warning: remote HEAD refers to nonexistent ref, unable to checkout.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To be aware of changes we track the remote isis_contrib branch to a local branch. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~$&amp;lt;/span&amp;gt; cd isis/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git branch -av&lt;br /&gt;
   remotes/origin/isis_contrib    562dbe4 weekly release 2.3.2+&lt;br /&gt;
   remotes/origin/isis_productive 562dbe4 weekly release 2.3.2+&lt;br /&gt;
   remotes/origin/isis_rebase     562dbe4 weekly release 2.3.2+&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git branch --track isis_contrib remotes/origin/isis_contrib &lt;br /&gt;
 Branch isis_contrib set up to track remote branch isis_contrib from origin.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Lets fork a branch, where we put and test our code changes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git checkout isis_contrib &lt;br /&gt;
 Switched to branch &#039;isis_contrib&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git checkout -b isis_my_code1&lt;br /&gt;
 Switched to a new branch &#039;isis_my_code1&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Make code changes.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; emacs theme/base/style/pagelayout.css &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
After commiting it, we can push it to the ISIS remote repository. Of course there are 1000 ways of using git to develop and change code and to push it to remote repositories. This is just one of it. Feel free to use, whatever you are used to.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git commit -a -m &amp;quot;base theme updated&amp;quot;&lt;br /&gt;
 [isis_my_code1 b5ec6cc] base theme updated&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git push origin isis_my_code1:isis_contrib &lt;br /&gt;
 Counting objects: 11, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (6/6), done.&lt;br /&gt;
 Writing objects: 100% (6/6), 511 bytes, done.&lt;br /&gt;
 Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    562dbe4..b5ec6cc  isis_my_code1 -&amp;gt; isis_contrib&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to update your isis_contrib branch before the next code change.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git checkout isis_contrib &lt;br /&gt;
 Switched to branch &#039;isis_contrib&#039;&lt;br /&gt;
 Your branch is behind &#039;origin/isis_contrib&#039; by 1 commit, and can be fast-forwarded.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt; git pull&lt;br /&gt;
 Updating 562dbe4..b5ec6cc&lt;br /&gt;
 Fast-forward&lt;br /&gt;
  theme/base/style/pagelayout.css |    2 +-&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;develop1@mylaptop:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integrate code changes to productive ==&lt;br /&gt;
&lt;br /&gt;
Back on the integration server, the integration manager has to review and test the new code contributions. So lets get the new code changes from the ISIS remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout isis_contrib &lt;br /&gt;
 Switched to branch &#039;isis_contrib&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git pull&lt;br /&gt;
 remote: Counting objects: 11, done.&lt;br /&gt;
 remote: Compressing objects: 100% (6/6), done.&lt;br /&gt;
 remote: Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 Unpacking objects: 100% (6/6), done.&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;isis.remote.tu-berlin.de/isis&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    562dbe4..b5ec6cc  isis_contrib -&amp;gt; isis/isis_contrib&lt;br /&gt;
 Updating 562dbe4..b5ec6cc&lt;br /&gt;
 Fast-forward&lt;br /&gt;
  theme/base/style/pagelayout.css |    2 +-&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
If you go for the code changes, you can merge them into the production branch and cherry-pick it on top of the rebase branch. I prefer cherry-picking the code, because it gives more awareness of what I do. Although there exists more ways of merging the code on top of the isis_rebase-branch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout isis_productive &lt;br /&gt;
 Switched to branch &#039;isis_productive&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git merge isis_contrib &lt;br /&gt;
 Updating 562dbe4..b5ec6cc&lt;br /&gt;
 Fast-forward&lt;br /&gt;
  theme/base/style/pagelayout.css |    2 +-&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout isis_rebase &lt;br /&gt;
 Switched to branch &#039;isis_rebase&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git cherry-pick b5ec6cc&lt;br /&gt;
 Finished one cherry-pick.&lt;br /&gt;
 [isis_rebase ed9bd24] base theme updated&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we push our changes to the ISIS remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push&lt;br /&gt;
 Counting objects: 11, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (6/6), done.&lt;br /&gt;
 Writing objects: 100% (6/6), 517 bytes, done.&lt;br /&gt;
 Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    562dbe4..b5ec6cc  isis_productive -&amp;gt; isis_productive&lt;br /&gt;
    562dbe4..ed9bd24  isis_rebase -&amp;gt; isis_rebase&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally we apply the rsync again to copy the source code to the ISIS productive server. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; cd ..&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; rsync -a --delete --exclude=config.php --exclude=.htaccess --exclude=.git/ isis &amp;lt;nowiki&amp;gt;admin@www.isis.tu-berlin.de:/var/www/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 admin@www.isis.tu-berlin.de&#039;s password: &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Merge the weekly moodle release ==&lt;br /&gt;
&lt;br /&gt;
Now, having a working Moodle instance running at the Server, we have to merge the weekly Moodle releases, To be on the save side, you can always fork new test branches and test the merging process there, before you apply these to you productive branches. After practising it for several month everything still merges smoothly without any conflicts.&lt;br /&gt;
&lt;br /&gt;
First we get the recent Moodle release in our tracked Moodle-branch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout MOODLE_23_STABLE &lt;br /&gt;
 Switched to branch &#039;MOODLE_23_STABLE&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git pull &lt;br /&gt;
  remote: Counting objects: 4304, done.&lt;br /&gt;
  remote: Compressing objects: 100% (776/776), done.&lt;br /&gt;
  remote: Total 3014 (delta 2310), reused 2841 (delta 2155)&lt;br /&gt;
  Receiving objects: 100% (3014/3014), 733.24 KiB | 276 KiB/s, done.&lt;br /&gt;
  Resolving deltas: 100% (2310/2310), completed with 532 local objects.&lt;br /&gt;
  From &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    a8d6719..9fa159e  MOODLE_21_STABLE -&amp;gt; moodle/MOODLE_21_STABLE&lt;br /&gt;
    a8ce907..10c3c37  MOODLE_22_STABLE -&amp;gt; moodle/MOODLE_22_STABLE&lt;br /&gt;
    562dbe4..b1c5155  MOODLE_23_STABLE -&amp;gt; moodle/MOODLE_23_STABLE&lt;br /&gt;
    ccd90e7..7e8ae12  master     -&amp;gt; moodle/master&lt;br /&gt;
  Updating 562dbe4..b1c5155&lt;br /&gt;
  Fast-forward&lt;br /&gt;
   admin/cli/install.php                             |   14 +-&lt;br /&gt;
   admin/renderer.php                                |    2 +-&lt;br /&gt;
   admin/tool/customlang/locallib.php                |    2 +-&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
   version.php                                       |    4 +-&lt;br /&gt;
   webservice/lib.php                                |    2 +-&lt;br /&gt;
  104 files changed, 2211 insertions(+), 1248 deletions(-)&lt;br /&gt;
  create mode 100644 install/lang/ms/admin.php&lt;br /&gt;
  create mode 100644 install/lang/ms/install.php&lt;br /&gt;
  create mode 100644 install/lang/ms/moodle.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importppt.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importpptlib.php&lt;br /&gt;
  create mode 100644 pix/f/epub.png&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we merge the new release into our isis branches.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout isis_contrib &lt;br /&gt;
 Switched to branch &#039;isis_contrib&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git merge MOODLE_23_STABLE &lt;br /&gt;
 Removing mod/lesson/importppt.php&lt;br /&gt;
 Removing mod/lesson/importpptlib.php&lt;br /&gt;
 Merge made by recursive.&lt;br /&gt;
  admin/cli/install.php                             |   14 +-&lt;br /&gt;
  admin/renderer.php                                |    2 +-&lt;br /&gt;
  admin/tool/customlang/locallib.php                |    2 +-&lt;br /&gt;
  admin/tool/customlang/styles.css                  |    4 +&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  user/selector/search.php                          |   13 +-&lt;br /&gt;
  version.php                                       |    4 +-&lt;br /&gt;
  webservice/lib.php                                |    2 +-&lt;br /&gt;
  104 files changed, 2211 insertions(+), 1248 deletions(-)&lt;br /&gt;
  create mode 100644 install/lang/ms/admin.php&lt;br /&gt;
  create mode 100644 install/lang/ms/install.php&lt;br /&gt;
  create mode 100644 install/lang/ms/moodle.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importppt.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importpptlib.php&lt;br /&gt;
  create mode 100644 pix/f/epub.png&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout isis_productive &lt;br /&gt;
 Switched to branch &#039;isis_productive&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git merge MOODLE_23_STABLE &lt;br /&gt;
 Removing mod/lesson/importppt.php&lt;br /&gt;
 Removing mod/lesson/importpptlib.php&lt;br /&gt;
 Merge made by recursive.&lt;br /&gt;
  admin/cli/install.php                             |   14 +-&lt;br /&gt;
  admin/renderer.php                                |    2 +-&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .  &lt;br /&gt;
  user/selector/search.php                          |   13 +-&lt;br /&gt;
  version.php                                       |    4 +-&lt;br /&gt;
  webservice/lib.php                                |    2 +-&lt;br /&gt;
  104 files changed, 2211 insertions(+), 1248 deletions(-)&lt;br /&gt;
  create mode 100644 install/lang/ms/admin.php&lt;br /&gt;
  create mode 100644 install/lang/ms/install.php&lt;br /&gt;
  create mode 100644 install/lang/ms/moodle.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importppt.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importpptlib.php&lt;br /&gt;
  create mode 100644 pix/f/epub.png&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
As the name suggests, we rebase our code changes from the isis_rebase branch on top of the MOODLE_23_STABLE branch.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout isis_rebase &lt;br /&gt;
 Switched to branch &#039;isis_rebase&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git rebase MOODLE_23_STABLE &lt;br /&gt;
 First, rewinding head to replay your work on top of it...&lt;br /&gt;
 Applying: base theme updated&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Finally we push everything to the ISIS remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push&lt;br /&gt;
 Counting objects: 1062, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (159/159), done.&lt;br /&gt;
 Writing objects: 100% (661/661), 151.24 KiB, done.&lt;br /&gt;
 Total 661 (delta 501), reused 623 (delta 488)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    b5ec6cc..df8a1ca  isis_contrib -&amp;gt; isis_contrib&lt;br /&gt;
    b5ec6cc..7b75c8e  isis_productive -&amp;gt; isis_productive&lt;br /&gt;
  ! [rejected]        isis_rebase -&amp;gt; isis_rebase (non-fast-forward)&lt;br /&gt;
 error: failed to push some refs to &#039;&amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&#039;&lt;br /&gt;
 To prevent you from losing history, non-fast-forward updates were rejected&lt;br /&gt;
 Merge the remote changes (e.g. &#039;git pull&#039;) before pushing again.  See the&lt;br /&gt;
 &#039;Note about fast-forwards&#039; section of &#039;git push --help&#039; for details.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Of course pushing the isis_rebase branch fails, so we push it with force.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push --force isis isis_rebase:isis_rebase&lt;br /&gt;
 Counting objects: 11, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (6/6), done.&lt;br /&gt;
 Writing objects: 100% (6/6), 515 bytes, done.&lt;br /&gt;
 Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  + ed9bd24...eeeb43f isis_rebase -&amp;gt; isis_rebase (forced update)&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Rebase on new Moodle version ==&lt;br /&gt;
&lt;br /&gt;
Because the developing branches of Moodle 2.4 are forked from Moodle 2.3.0 every merge from our recent productive branch with the new developing branch will fail because of conflicts. This is, why we collect all of our code changes on top of the isis_rebase-branch. Once a new Moodle-release is there, we can simply put our code changes again on top of this release and have hopefully less work with conflicts.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch -v&lt;br /&gt;
    MOODLE_23_STABLE     e6aac11 weekly release 2.3.3+&lt;br /&gt;
    MOODLE_24_dev        87e9331 weekly release 2.4dev&lt;br /&gt;
    isis_rebase     6cc7e47 Ver-/Entschlüsselung der Backup-Archive @author: Jan Eberhardt, 10/08/2012&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout isis_rebase&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git rebase --onto MOODLE_24_dev MOODLE_23_STABLE isis_rebase&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Marc-robin</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101389</id>
		<title>Moodle Production Server with GIT</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101389"/>
		<updated>2012-10-18T18:09:28Z</updated>

		<summary type="html">&lt;p&gt;Marc-robin: /* Develop and change local code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GIT Repository scheme ==&lt;br /&gt;
&lt;br /&gt;
This is the description of how we maintain our Moodle2 code at [http://www.isis.tu-berlin.de/2.0/ TU Berlin]. Our Moodle has ca. 30000 active user with average 2000 online user 24/7. We have a lot of code changes and plugins, so it&#039;s essential for us to maintain the code as automated as possible.&lt;br /&gt;
&lt;br /&gt;
Our Moodle is called ISIS. So further on everything what is named ISIS belongs to us, everything what is called MOODLE belongs to moodle.org.&lt;br /&gt;
&lt;br /&gt;
We use several GIT-repositories. The scheme with branches looks like this&lt;br /&gt;
&lt;br /&gt;
[[File:ISIS_GIT_schema.png]]&lt;br /&gt;
&lt;br /&gt;
The main purpose for the ISIS remote repository is for backups. One can imagine a scenario without this remote server only with local repositories involved. If you use [https://github.com/sitaramc/gitolite/wiki gitolite] for your remote repository, it&#039;s even more comfortable to keep the code clean, because you are able the restrict access to branches for developer and integration manager individually. &lt;br /&gt;
&lt;br /&gt;
The puzzle about the isis_rebase branch will be explained, when we come to a new moodle release.&lt;br /&gt;
&lt;br /&gt;
== Install the repositories ==&lt;br /&gt;
&lt;br /&gt;
We start with the original moodle code. For orientation we suggest to read the very useful description [[Git_for_Administrators]] first.&lt;br /&gt;
Instead of the advise there we won&#039;t clone the moodle.org-repository in the first place. We start over with creating an empty repository at the ISIS Integration server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; mkdir isis&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; cd isis/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git init&lt;br /&gt;
 Initialized empty Git repository in /home/wendt/isis/.git/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we add moodle.org as remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git fetch &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;&lt;br /&gt;
 remote: Counting objects: 597378, done.&lt;br /&gt;
 remote: Compressing objects: 100% (141938/141938), done.&lt;br /&gt;
 remote: Total 597378 (delta 442383), reused 597378 (delta 442383)&lt;br /&gt;
 Receiving objects: 100% (597378/597378), 223.38 MiB | 11.16 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (442383/442383), done.&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_13_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_13_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_22_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_22_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;master&amp;lt;/span&amp;gt;     -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/master&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new tag]         v1.3.5     -&amp;gt; v1.3.5&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 . &lt;br /&gt;
  * [new tag]         v2.3.2     -&amp;gt; v2.3.2&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we create a local branch of the moodle 2.3 code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this we fork our initial ISIS code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout -b &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to a new branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point we expect an empty ISIS remote repository, where we can initially push the ISIS code. First we add it as a remote repository to our local git-repository. then we push the isis_contrib branch into the different branches of the remote repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Counting objects: 472320, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (117914/117914), done.&lt;br /&gt;
 Writing objects: 100% (472320/472320), 199.01 MiB | 17.92 MiB/s, done.&lt;br /&gt;
 Total 472320 (delta 347911), reused 464510 (delta 342938)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To stay in sync with the remote ISIS repository we track the remote branches to local ones now.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Already on &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --set-upstream &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt; set up to track local branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we are ready to bring the code to the productive Server. You can pull the code from the remote ISIS repository, but you will have a lot of overhead this way. So we simply rsync the code to the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; cd ..&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; rsync -a --delete --exclude=config.php --exclude=.htaccess --exclude=.git/ isis &amp;lt;nowiki&amp;gt;admin@www.isis.tu-berlin.de:/var/www/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 admin@www.isis.tu-berlin.de&#039;s password: &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This rsync command will reappear later updating the production code as well. At this point you can start using your moodle and follow the [[Installing_Moodle|install procedure]] of moodle.&lt;br /&gt;
&lt;br /&gt;
== Merge the weekly moodle release ==&lt;br /&gt;
&lt;br /&gt;
Now, having a working Moodle instance running at the Server, we have to merge the weekly Moodle releases, To be on the save side, you can always fork new test branches and test the merging process there, before you apply these to you productive branches. After practising it for 11 weeks everything still merges smoothly without any conflicts.&lt;br /&gt;
&lt;br /&gt;
First we get the recent Moodle release in our tracked Moodle-branch.&lt;br /&gt;
&lt;br /&gt;
 wendt@bastet:~/isis$ git checkout MOODLE_23_STABLE &lt;br /&gt;
 Switched to branch &#039;MOODLE_23_STABLE&#039;&lt;br /&gt;
 wendt@bastet:~/isis$ git pull &lt;br /&gt;
  remote: Counting objects: 4304, done.&lt;br /&gt;
  remote: Compressing objects: 100% (776/776), done.&lt;br /&gt;
  remote: Total 3014 (delta 2310), reused 2841 (delta 2155)&lt;br /&gt;
  Receiving objects: 100% (3014/3014), 733.24 KiB | 276 KiB/s, done.&lt;br /&gt;
  Resolving deltas: 100% (2310/2310), completed with 532 local objects.&lt;br /&gt;
  From git://git.moodle.org/moodle&lt;br /&gt;
    a8d6719..9fa159e  MOODLE_21_STABLE -&amp;gt; moodle/MOODLE_21_STABLE&lt;br /&gt;
    a8ce907..10c3c37  MOODLE_22_STABLE -&amp;gt; moodle/MOODLE_22_STABLE&lt;br /&gt;
    562dbe4..b1c5155  MOODLE_23_STABLE -&amp;gt; moodle/MOODLE_23_STABLE&lt;br /&gt;
    ccd90e7..7e8ae12  master     -&amp;gt; moodle/master&lt;br /&gt;
  Updating 562dbe4..b1c5155&lt;br /&gt;
  Fast-forward&lt;br /&gt;
   admin/cli/install.php                             |   14 +-&lt;br /&gt;
   admin/renderer.php                                |    2 +-&lt;br /&gt;
   admin/tool/customlang/locallib.php                |    2 +-&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
   version.php                                       |    4 +-&lt;br /&gt;
   webservice/lib.php                                |    2 +-&lt;br /&gt;
  104 files changed, 2211 insertions(+), 1248 deletions(-)&lt;br /&gt;
  create mode 100644 install/lang/ms/admin.php&lt;br /&gt;
  create mode 100644 install/lang/ms/install.php&lt;br /&gt;
  create mode 100644 install/lang/ms/moodle.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importppt.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importpptlib.php&lt;br /&gt;
  create mode 100644 pix/f/epub.png&lt;br /&gt;
 wendt@bastet:~/isis$ &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Develop and change local code ==&lt;br /&gt;
&lt;br /&gt;
Our developers clone the ISIS remote repository to their local home directories, prepare and test their changes and push the results back to isis_contrib branch of the ISIS remote server. &lt;br /&gt;
&lt;br /&gt;
 develop1@mylaptop:~$ git clone &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Cloning into isis...&lt;br /&gt;
 remote: Counting objects: 472320, done.&lt;br /&gt;
 remote: Compressing objects: 100% (112942/112942), done.&lt;br /&gt;
 remote: Total 472320 (delta 347910), reused 472320 (delta 347910)&lt;br /&gt;
 Receiving objects: 100% (472320/472320), 199.03 MiB | 23.88 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (347910/347910), done.&lt;br /&gt;
 warning: remote HEAD refers to nonexistent ref, unable to checkout.&lt;br /&gt;
 develop1@mylaptop:~$ &lt;br /&gt;
&lt;br /&gt;
To be aware of changes we track the remote isis_contrib branch to a local branch. &lt;br /&gt;
&lt;br /&gt;
 develop1@mylaptop:~$ cd isis/&lt;br /&gt;
 develop1@mylaptop:~/isis$ git branch -av&lt;br /&gt;
   remotes/origin/isis_contrib    562dbe4 weekly release 2.3.2+&lt;br /&gt;
   remotes/origin/isis_productive 562dbe4 weekly release 2.3.2+&lt;br /&gt;
   remotes/origin/isis_rebase     562dbe4 weekly release 2.3.2+&lt;br /&gt;
 develop1@mylaptop:~/isis$ git branch --track isis_contrib remotes/origin/isis_contrib &lt;br /&gt;
 Branch isis_contrib set up to track remote branch isis_contrib from origin.&lt;br /&gt;
 develop1@mylaptop:~/isis$ &lt;br /&gt;
&lt;br /&gt;
Lets fork a branch, where we put and test our code changes.&lt;br /&gt;
&lt;br /&gt;
 develop1@mylaptop:~/isis$ git checkout isis_contrib &lt;br /&gt;
 Switched to branch &#039;isis_contrib&#039;&lt;br /&gt;
 develop1@mylaptop:~/isis$ git checkout -b isis_my_code1&lt;br /&gt;
 Switched to a new branch &#039;isis_my_code1&#039;&lt;br /&gt;
 develop1@mylaptop:~/isis$ &lt;br /&gt;
&lt;br /&gt;
Make code changes.&lt;br /&gt;
&lt;br /&gt;
 develop1@mylaptop:~/isis$ emacs theme/base/style/pagelayout.css &lt;br /&gt;
 develop1@mylaptop:~/isis$ &lt;br /&gt;
&lt;br /&gt;
After commiting it, we can push it to the ISIS remote server. Of course there 1000 ways of using git to develop and change code and to push it to remote repositories. This is just one and your a free to use, whatever you are used to.&lt;br /&gt;
&lt;br /&gt;
 develop1@mylaptop:~/isis$ git commit -a -m &amp;quot;base theme updated&amp;quot;&lt;br /&gt;
 [isis_my_code1 b5ec6cc] base theme updated&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 develop1@mylaptop:~/isis$ git push origin isis_my_code1:isis_contrib &lt;br /&gt;
 Counting objects: 11, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (6/6), done.&lt;br /&gt;
 Writing objects: 100% (6/6), 511 bytes, done.&lt;br /&gt;
 Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    562dbe4..b5ec6cc  isis_my_code1 -&amp;gt; isis_contrib&lt;br /&gt;
 develop1@mylaptop:~/isis$&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget before the next code change to update your isis_contrib branch.&lt;br /&gt;
&lt;br /&gt;
 develop1@mylaptop:~/isis$ git checkout isis_contrib &lt;br /&gt;
 Switched to branch &#039;isis_contrib&#039;&lt;br /&gt;
 Your branch is behind &#039;origin/isis_contrib&#039; by 1 commit, and can be fast-forwarded.&lt;br /&gt;
 develop1@mylaptop:~/isis$ git pull&lt;br /&gt;
 Updating 562dbe4..b5ec6cc&lt;br /&gt;
 Fast-forward&lt;br /&gt;
  theme/base/style/pagelayout.css |    2 +-&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 develop1@mylaptop:~/isis$&lt;br /&gt;
&lt;br /&gt;
== Integrate code changes to productive ==&lt;br /&gt;
&lt;br /&gt;
coming soon&lt;br /&gt;
&lt;br /&gt;
== Rebase on new Moodle version ==&lt;br /&gt;
&lt;br /&gt;
coming soon&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Marc-robin</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101388</id>
		<title>Moodle Production Server with GIT</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101388"/>
		<updated>2012-10-18T18:05:51Z</updated>

		<summary type="html">&lt;p&gt;Marc-robin: finish chapter Develop and change local code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GIT Repository scheme ==&lt;br /&gt;
&lt;br /&gt;
This is the description of how we maintain our Moodle2 code at [http://www.isis.tu-berlin.de/2.0/ TU Berlin]. Our Moodle has ca. 30000 active user with average 2000 online user 24/7. We have a lot of code changes and plugins, so it&#039;s essential for us to maintain the code as automated as possible.&lt;br /&gt;
&lt;br /&gt;
Our Moodle is called ISIS. So further on everything what is named ISIS belongs to us, everything what is called MOODLE belongs to moodle.org.&lt;br /&gt;
&lt;br /&gt;
We use several GIT-repositories. The scheme with branches looks like this&lt;br /&gt;
&lt;br /&gt;
[[File:ISIS_GIT_schema.png]]&lt;br /&gt;
&lt;br /&gt;
The main purpose for the ISIS remote repository is for backups. One can imagine a scenario without this remote server only with local repositories involved. If you use [https://github.com/sitaramc/gitolite/wiki gitolite] for your remote repository, it&#039;s even more comfortable to keep the code clean, because you are able the restrict access to branches for developer and integration manager individually. &lt;br /&gt;
&lt;br /&gt;
The puzzle about the isis_rebase branch will be explained, when we come to a new moodle release.&lt;br /&gt;
&lt;br /&gt;
== Install the repositories ==&lt;br /&gt;
&lt;br /&gt;
We start with the original moodle code. For orientation we suggest to read the very useful description [[Git_for_Administrators]] first.&lt;br /&gt;
Instead of the advise there we won&#039;t clone the moodle.org-repository in the first place. We start over with creating an empty repository at the ISIS Integration server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; mkdir isis&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; cd isis/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git init&lt;br /&gt;
 Initialized empty Git repository in /home/wendt/isis/.git/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we add moodle.org as remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git fetch &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;&lt;br /&gt;
 remote: Counting objects: 597378, done.&lt;br /&gt;
 remote: Compressing objects: 100% (141938/141938), done.&lt;br /&gt;
 remote: Total 597378 (delta 442383), reused 597378 (delta 442383)&lt;br /&gt;
 Receiving objects: 100% (597378/597378), 223.38 MiB | 11.16 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (442383/442383), done.&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_13_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_13_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_22_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_22_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;master&amp;lt;/span&amp;gt;     -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/master&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new tag]         v1.3.5     -&amp;gt; v1.3.5&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 . &lt;br /&gt;
  * [new tag]         v2.3.2     -&amp;gt; v2.3.2&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we create a local branch of the moodle 2.3 code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this we fork our initial ISIS code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout -b &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to a new branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point we expect an empty ISIS remote repository, where we can initially push the ISIS code. First we add it as a remote repository to our local git-repository. then we push the isis_contrib branch into the different branches of the remote repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Counting objects: 472320, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (117914/117914), done.&lt;br /&gt;
 Writing objects: 100% (472320/472320), 199.01 MiB | 17.92 MiB/s, done.&lt;br /&gt;
 Total 472320 (delta 347911), reused 464510 (delta 342938)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To stay in sync with the remote ISIS repository we track the remote branches to local ones now.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Already on &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --set-upstream &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt; set up to track local branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we are ready to bring the code to the productive Server. You can pull the code from the remote ISIS repository, but you will have a lot of overhead this way. So we simply rsync the code to the server.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; cd ..&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; rsync -a --delete --exclude=config.php --exclude=.htaccess --exclude=.git/ isis &amp;lt;nowiki&amp;gt;admin@www.isis.tu-berlin.de:/var/www/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 admin@www.isis.tu-berlin.de&#039;s password: &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This rsync command will reappear later updating the production code as well. At this point you can start using your moodle and follow the [[Installing_Moodle|install procedure]] of moodle.&lt;br /&gt;
&lt;br /&gt;
== Merge the weekly moodle release ==&lt;br /&gt;
&lt;br /&gt;
Now, having a working Moodle instance running at the Server, we have to merge the weekly Moodle releases, To be on the save side, you can always fork new test branches and test the merging process there, before you apply these to you productive branches. After practising it for 11 weeks everything still merges smoothly without any conflicts.&lt;br /&gt;
&lt;br /&gt;
First we get the recent Moodle release in our tracked Moodle-branch.&lt;br /&gt;
&lt;br /&gt;
 wendt@bastet:~/isis$ git checkout MOODLE_23_STABLE &lt;br /&gt;
 Switched to branch &#039;MOODLE_23_STABLE&#039;&lt;br /&gt;
 wendt@bastet:~/isis$ git pull &lt;br /&gt;
  remote: Counting objects: 4304, done.&lt;br /&gt;
  remote: Compressing objects: 100% (776/776), done.&lt;br /&gt;
  remote: Total 3014 (delta 2310), reused 2841 (delta 2155)&lt;br /&gt;
  Receiving objects: 100% (3014/3014), 733.24 KiB | 276 KiB/s, done.&lt;br /&gt;
  Resolving deltas: 100% (2310/2310), completed with 532 local objects.&lt;br /&gt;
  From git://git.moodle.org/moodle&lt;br /&gt;
    a8d6719..9fa159e  MOODLE_21_STABLE -&amp;gt; moodle/MOODLE_21_STABLE&lt;br /&gt;
    a8ce907..10c3c37  MOODLE_22_STABLE -&amp;gt; moodle/MOODLE_22_STABLE&lt;br /&gt;
    562dbe4..b1c5155  MOODLE_23_STABLE -&amp;gt; moodle/MOODLE_23_STABLE&lt;br /&gt;
    ccd90e7..7e8ae12  master     -&amp;gt; moodle/master&lt;br /&gt;
  Updating 562dbe4..b1c5155&lt;br /&gt;
  Fast-forward&lt;br /&gt;
   admin/cli/install.php                             |   14 +-&lt;br /&gt;
   admin/renderer.php                                |    2 +-&lt;br /&gt;
   admin/tool/customlang/locallib.php                |    2 +-&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
   version.php                                       |    4 +-&lt;br /&gt;
   webservice/lib.php                                |    2 +-&lt;br /&gt;
  104 files changed, 2211 insertions(+), 1248 deletions(-)&lt;br /&gt;
  create mode 100644 install/lang/ms/admin.php&lt;br /&gt;
  create mode 100644 install/lang/ms/install.php&lt;br /&gt;
  create mode 100644 install/lang/ms/moodle.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importppt.php&lt;br /&gt;
  delete mode 100644 mod/lesson/importpptlib.php&lt;br /&gt;
  create mode 100644 pix/f/epub.png&lt;br /&gt;
 wendt@bastet:~/isis$ &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Develop and change local code ==&lt;br /&gt;
&lt;br /&gt;
Our developers clone the ISIS remote repository to their local home directories, prepare and test their changes and push the results back to isis_contrib branch of the ISIS remote server. &lt;br /&gt;
&lt;br /&gt;
 develop1@mylaptop:~$ git clone &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Cloning into isis...&lt;br /&gt;
 remote: Counting objects: 472320, done.&lt;br /&gt;
 remote: Compressing objects: 100% (112942/112942), done.&lt;br /&gt;
 remote: Total 472320 (delta 347910), reused 472320 (delta 347910)&lt;br /&gt;
 Receiving objects: 100% (472320/472320), 199.03 MiB | 23.88 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (347910/347910), done.&lt;br /&gt;
 warning: remote HEAD refers to nonexistent ref, unable to checkout.&lt;br /&gt;
 develop1@mylaptop:~$ &lt;br /&gt;
&lt;br /&gt;
To be aware of changes we track the remote isis_contrib branch to a local branch. &lt;br /&gt;
&lt;br /&gt;
 develop1@mylaptop:~$ cd isis/&lt;br /&gt;
 develop1@mylaptop:~/isis$ git branch -av&lt;br /&gt;
   remotes/origin/isis_contrib    562dbe4 weekly release 2.3.2+&lt;br /&gt;
   remotes/origin/isis_productive 562dbe4 weekly release 2.3.2+&lt;br /&gt;
   remotes/origin/isis_rebase     562dbe4 weekly release 2.3.2+&lt;br /&gt;
 develop1@mylaptop:~/isis$ git branch --track isis_contrib remotes/origin/isis_contrib &lt;br /&gt;
 Branch isis_contrib set up to track remote branch isis_contrib from origin.&lt;br /&gt;
 develop1@mylaptop:~/isis$ &lt;br /&gt;
&lt;br /&gt;
Lets fork a branch, where we put and test our code changes.&lt;br /&gt;
&lt;br /&gt;
 develop1@mylaptop:~/isis$ git checkout isis_contrib &lt;br /&gt;
 Switched to branch &#039;isis_contrib&#039;&lt;br /&gt;
 develop1@mylaptop:~/isis$ git checkout -b isis_my_code1&lt;br /&gt;
 Switched to a new branch &#039;isis_my_code1&#039;&lt;br /&gt;
 develop1@mylaptop:~/isis$ &lt;br /&gt;
&lt;br /&gt;
Make code changes.&lt;br /&gt;
&lt;br /&gt;
 develop1@mylaptop:~/isis$ emacs theme/base/style/pagelayout.css &lt;br /&gt;
 develop1@mylaptop:~/isis$ &lt;br /&gt;
&lt;br /&gt;
After commiting it, we can push it to the ISIS remote server. Of course there 1000 ways of using git to develop and change code and to push it to remote repositories. This is just one and your a free to use, whatever you are used to.&lt;br /&gt;
&lt;br /&gt;
 develop1@mylaptop:~/isis$ git commit -a -m &amp;quot;base theme updated&amp;quot;&lt;br /&gt;
 [isis_my_code1 b5ec6cc] base theme updated&lt;br /&gt;
  1 files changed, 1 insertions(+), 1 deletions(-)&lt;br /&gt;
 develop1@mylaptop:~/isis$ git push origin isis_my_code1:isis_contrib &lt;br /&gt;
 Counting objects: 11, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (6/6), done.&lt;br /&gt;
 Writing objects: 100% (6/6), 511 bytes, done.&lt;br /&gt;
 Total 6 (delta 5), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    562dbe4..b5ec6cc  isis_my_code1 -&amp;gt; isis_contrib&lt;br /&gt;
 develop1@mylaptop:~/isis$&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Integrate code changes to productive ==&lt;br /&gt;
&lt;br /&gt;
coming soon&lt;br /&gt;
&lt;br /&gt;
== Rebase on new Moodle version ==&lt;br /&gt;
&lt;br /&gt;
coming soon&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Marc-robin</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101202</id>
		<title>Moodle Production Server with GIT</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101202"/>
		<updated>2012-10-10T22:13:55Z</updated>

		<summary type="html">&lt;p&gt;Marc-robin: headline&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GIT Repository scheme ==&lt;br /&gt;
&lt;br /&gt;
This is the description of how we maintain our Moodle2 code at [http://www.isis.tu-berlin.de/2.0/ TU Berlin]. Our Moodle has ca. 30000 active user with average 2000 online user 24/7. We have a lot of code changes and plugins, so it&#039;s essential for us to maintain the code as automated as possible.&lt;br /&gt;
&lt;br /&gt;
Our Moodle is called ISIS. So further on everything what is named ISIS belongs to us, everything what is called MOODLE belongs to moodle.org.&lt;br /&gt;
&lt;br /&gt;
We use several GIT-repositories. The scheme with branches looks like this&lt;br /&gt;
&lt;br /&gt;
[[File:ISIS_GIT_schema.png]]&lt;br /&gt;
&lt;br /&gt;
The main purpose for the ISIS remote repository is for backups. One can imagine a scenario without this remote server only with local repositories involved. If you use [https://github.com/sitaramc/gitolite/wiki gitolite] for your remote repository, it&#039;s even more comfortable to keep the code clean, because you are able the restrict access to branches for developer and integration manager individually. &lt;br /&gt;
&lt;br /&gt;
The puzzle about the isis_rebase branch will be explained, when we come to a new moodle release.&lt;br /&gt;
&lt;br /&gt;
== Install the repositories ==&lt;br /&gt;
&lt;br /&gt;
We start with the original moodle code. For orientation we suggest to read the very useful description [[Git_for_Administrators]] first.&lt;br /&gt;
Instead of the advise there we won&#039;t clone the moodle.org-repository in the first place. We start over with creating an empty repository at the ISIS Integration server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; mkdir isis&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; cd isis/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git init&lt;br /&gt;
 Initialized empty Git repository in /home/wendt/isis/.git/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we add moodle.org as remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git fetch &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;&lt;br /&gt;
 remote: Counting objects: 597378, done.&lt;br /&gt;
 remote: Compressing objects: 100% (141938/141938), done.&lt;br /&gt;
 remote: Total 597378 (delta 442383), reused 597378 (delta 442383)&lt;br /&gt;
 Receiving objects: 100% (597378/597378), 223.38 MiB | 11.16 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (442383/442383), done.&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_13_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_13_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_22_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_22_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;master&amp;lt;/span&amp;gt;     -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/master&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new tag]         v1.3.5     -&amp;gt; v1.3.5&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 . &lt;br /&gt;
  * [new tag]         v2.3.2     -&amp;gt; v2.3.2&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we create a local branch of the moodle 2.3 code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this we fork our initial ISIS code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout -b &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to a new branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point we expect an empty ISIS remote repository, where we can initially push the ISIS code. First we add it as a remote repository to our local git-repository. then we push the isis_contrib branch into the different branches of the remote repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Counting objects: 472320, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (117914/117914), done.&lt;br /&gt;
 Writing objects: 100% (472320/472320), 199.01 MiB | 17.92 MiB/s, done.&lt;br /&gt;
 Total 472320 (delta 347911), reused 464510 (delta 342938)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To stay in sync with the remote ISIS repository we track the remote branches to local ones now.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Already on &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --set-upstream &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt; set up to track local branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we are ready to bring the code to the productive Server. You can pull the code from the remote ISIS repository, but you will have a lot of overhead this way. So we simply rsync the code to the server.&lt;br /&gt;
&lt;br /&gt;
 wendt@bastet:~/isis$ git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; cd ..&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; rsync -a --delete --exclude=config.php --exclude=.htaccess --exclude=.git/ isis &amp;lt;nowiki&amp;gt;admin@www.isis.tu-berlin.de:/var/www/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 admin@www.isis.tu-berlin.de&#039;s password: &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This rsync command will reappear later updating the production code as well. At this point you can start using your moodle and follow the [[Installing_Moodle|install procedure]] of moodle.&lt;br /&gt;
&lt;br /&gt;
== Merge the weekly moodle release ==&lt;br /&gt;
&lt;br /&gt;
soon&lt;br /&gt;
&lt;br /&gt;
== Develop and change local code ==&lt;br /&gt;
&lt;br /&gt;
soon&lt;br /&gt;
&lt;br /&gt;
== Integrate code changes to productive ==&lt;br /&gt;
&lt;br /&gt;
soon&lt;br /&gt;
&lt;br /&gt;
== Rebase on new Moodle version ==&lt;br /&gt;
&lt;br /&gt;
soon&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Marc-robin</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101201</id>
		<title>Moodle Production Server with GIT</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101201"/>
		<updated>2012-10-10T22:08:08Z</updated>

		<summary type="html">&lt;p&gt;Marc-robin: what comes next&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the description of how we maintain our Moodle2 code at [http://www.isis.tu-berlin.de/2.0/ TU Berlin]. Our Moodle has ca. 30000 active user with around 2000 online user day and night. We have a lot of code changes and plugins, so it&#039;s essential for us to maintain the code as automated as possible.&lt;br /&gt;
&lt;br /&gt;
Our Moodle is called ISIS. So further on everything what is named ISIS belongs to us, everything what is called moodle belongs to moodle.org.&lt;br /&gt;
&lt;br /&gt;
We use several GIT-repositories. The scheme with branches looks like this&lt;br /&gt;
&lt;br /&gt;
[[File:ISIS_GIT_schema.png]]&lt;br /&gt;
&lt;br /&gt;
The main purpose for the ISIS remote repository is for backups. One can imagine a scenario without this remote server only with local repositories involved. If you use [https://github.com/sitaramc/gitolite/wiki gitolite] for your remote repository, it&#039;s even more comfortable to keep the code clean, because you are able the restrict access to branches for developer and integration manager individually. &lt;br /&gt;
&lt;br /&gt;
The puzzle about the isis_rebase branch will be explained, when we come to a new moodle release.&lt;br /&gt;
&lt;br /&gt;
=== Install the repositories ===&lt;br /&gt;
&lt;br /&gt;
We start with the original moodle code. For orientation we suggest to read the very useful description [[Git_for_Administrators]] first.&lt;br /&gt;
Instead of the advise there we won&#039;t clone the moodle.org-repository in the first place. We start over with creating an empty repository at the ISIS Integration server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; mkdir isis&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; cd isis/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git init&lt;br /&gt;
 Initialized empty Git repository in /home/wendt/isis/.git/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we add moodle.org as remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git fetch &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;&lt;br /&gt;
 remote: Counting objects: 597378, done.&lt;br /&gt;
 remote: Compressing objects: 100% (141938/141938), done.&lt;br /&gt;
 remote: Total 597378 (delta 442383), reused 597378 (delta 442383)&lt;br /&gt;
 Receiving objects: 100% (597378/597378), 223.38 MiB | 11.16 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (442383/442383), done.&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_13_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_13_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_22_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_22_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;master&amp;lt;/span&amp;gt;     -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/master&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new tag]         v1.3.5     -&amp;gt; v1.3.5&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 . &lt;br /&gt;
  * [new tag]         v2.3.2     -&amp;gt; v2.3.2&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we create a local branch of the moodle 2.3 code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this we fork our initial ISIS code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout -b &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to a new branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point we expect an empty ISIS remote repository, where we can initially push the ISIS code. First we add it as a remote repository to our local git-repository. then we push the isis_contrib branch into the different branches of the remote repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Counting objects: 472320, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (117914/117914), done.&lt;br /&gt;
 Writing objects: 100% (472320/472320), 199.01 MiB | 17.92 MiB/s, done.&lt;br /&gt;
 Total 472320 (delta 347911), reused 464510 (delta 342938)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To stay in sync with the remote ISIS repository we track the remote branches to local ones now.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Already on &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --set-upstream &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt; set up to track local branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we are ready to bring the code to the productive Server. You can pull the code from the remote ISIS repository, but you will have a lot of overhead this way. So we simply rsync the code to the server.&lt;br /&gt;
&lt;br /&gt;
 wendt@bastet:~/isis$ git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; cd ..&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; rsync -a --delete --exclude=config.php --exclude=.htaccess --exclude=.git/ isis &amp;lt;nowiki&amp;gt;admin@www.isis.tu-berlin.de:/var/www/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 admin@www.isis.tu-berlin.de&#039;s password: &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This rsync command will reappear later updating the production code as well. At this point you can start using your moodle and follow the [[Installing_Moodle|install procedure]] of moodle.&lt;br /&gt;
&lt;br /&gt;
== Merge the weekly moodle release ==&lt;br /&gt;
&lt;br /&gt;
soon&lt;br /&gt;
&lt;br /&gt;
== Develop and change local code ==&lt;br /&gt;
&lt;br /&gt;
soon&lt;br /&gt;
&lt;br /&gt;
== Integrate code changes to productive ==&lt;br /&gt;
&lt;br /&gt;
soon&lt;br /&gt;
&lt;br /&gt;
== Rebase on new Moodle version ==&lt;br /&gt;
&lt;br /&gt;
soon&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Marc-robin</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101200</id>
		<title>Moodle Production Server with GIT</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101200"/>
		<updated>2012-10-10T21:39:51Z</updated>

		<summary type="html">&lt;p&gt;Marc-robin: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the description of how we maintain our Moodle2 code at [http://www.isis.tu-berlin.de/2.0/ TU Berlin]. Our Moodle has ca. 30000 active user with around 2000 online user day and night. We have a lot of code changes and plugins, so it&#039;s essential for us to maintain the code as automated as possible.&lt;br /&gt;
&lt;br /&gt;
Our Moodle is called ISIS. So further on everything what is named ISIS belongs to us, everything what is called moodle belongs to moodle.org.&lt;br /&gt;
&lt;br /&gt;
We use several GIT-repositories. The scheme with branches looks like this&lt;br /&gt;
&lt;br /&gt;
[[File:ISIS_GIT_schema.png]]&lt;br /&gt;
&lt;br /&gt;
The main purpose for the ISIS remote repository is for backups. One can imagine a scenario without this remote server only with local repositories involved. If you use [https://github.com/sitaramc/gitolite/wiki gitolite] for your remote repository, it&#039;s even more comfortable to keep the code clean, because you are able the restrict access to branches for developer and integration manager individually. &lt;br /&gt;
&lt;br /&gt;
The puzzle about the isis_rebase branch will be explained, when we come to a new moodle release.&lt;br /&gt;
&lt;br /&gt;
=== Install the repositories ===&lt;br /&gt;
&lt;br /&gt;
We start with the original moodle code. For orientation we suggest to read the very useful description [[Git_for_Administrators]] first.&lt;br /&gt;
Instead of the advise there we won&#039;t clone the moodle.org-repository in the first place. We start over with creating an empty repository at the ISIS Integration server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; mkdir isis&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; cd isis/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git init&lt;br /&gt;
 Initialized empty Git repository in /home/wendt/isis/.git/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we add moodle.org as remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git fetch &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;&lt;br /&gt;
 remote: Counting objects: 597378, done.&lt;br /&gt;
 remote: Compressing objects: 100% (141938/141938), done.&lt;br /&gt;
 remote: Total 597378 (delta 442383), reused 597378 (delta 442383)&lt;br /&gt;
 Receiving objects: 100% (597378/597378), 223.38 MiB | 11.16 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (442383/442383), done.&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_13_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_13_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_22_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_22_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;master&amp;lt;/span&amp;gt;     -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/master&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new tag]         v1.3.5     -&amp;gt; v1.3.5&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 . &lt;br /&gt;
  * [new tag]         v2.3.2     -&amp;gt; v2.3.2&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we create a local branch of the moodle 2.3 code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this we fork our initial ISIS code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout -b &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to a new branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point we expect an empty ISIS remote repository, where we can initially push the ISIS code. First we add it as a remote repository to our local git-repository. then we push the isis_contrib branch into the different branches of the remote repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Counting objects: 472320, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (117914/117914), done.&lt;br /&gt;
 Writing objects: 100% (472320/472320), 199.01 MiB | 17.92 MiB/s, done.&lt;br /&gt;
 Total 472320 (delta 347911), reused 464510 (delta 342938)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To stay in sync with the remote ISIS repository we track the remote branches to local ones now.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Already on &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --set-upstream &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt; set up to track local branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we are ready to bring the code to the productive Server. You can pull the code from the remote ISIS repository, but you will have a lot of overhead this way. So we simply rsync the code to the server.&lt;br /&gt;
&lt;br /&gt;
 wendt@bastet:~/isis$ git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; cd ..&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; rsync -a --delete --exclude=config.php --exclude=.htaccess --exclude=.git/ isis &amp;lt;nowiki&amp;gt;admin@www.isis.tu-berlin.de:/var/www/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 admin@www.isis.tu-berlin.de&#039;s password: &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This rsync command will reappear later updating the production code as well. At this point you can start using your moodle and follow the [[Installing_Moodle|install procedure]] of moodle.&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Marc-robin</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101199</id>
		<title>Moodle Production Server with GIT</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101199"/>
		<updated>2012-10-10T21:35:42Z</updated>

		<summary type="html">&lt;p&gt;Marc-robin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the description of how we maintain our Moodle2 code at [http://www.isis.tu-berlin.de/2.0/ TU Berlin]. Our Moodle has ca. 30000 active user with around 2000 online user day and night. We have a lot of code changes and plugins, so it&#039;s essential for us to maintain the code as automated as possible.&lt;br /&gt;
&lt;br /&gt;
Our Moodle is called ISIS. So further on everything what is named ISIS belongs to us, everything what is called moodle belongs to moodle.org.&lt;br /&gt;
&lt;br /&gt;
We use several GIT-repositories. The scheme with branches looks like this&lt;br /&gt;
&lt;br /&gt;
[[File:ISIS_GIT_schema.png]]&lt;br /&gt;
&lt;br /&gt;
The main purpose for the ISIS remote repository is for backups. One can imagine a scenario without this remote server only with local repositories involved. If you use [https://github.com/sitaramc/gitolite/wiki gitolite] for your remote repository, it&#039;s even more comfortable to keep the code clean, because you are able the restrict access to branches for developer and integration manager individually. &lt;br /&gt;
&lt;br /&gt;
The puzzle about the isis_rebase branch will be explained, when we come to a new moodle release.&lt;br /&gt;
&lt;br /&gt;
=== Install the repositories ===&lt;br /&gt;
&lt;br /&gt;
We start with the original moodle code. For orientation we suggest to read the very useful description [[Git_for_Administrators]] first.&lt;br /&gt;
Instead of the advise there we won&#039;t clone the moodle.org-repository in the first place. We start over with creating an empty repository at the ISIS Integration server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; mkdir isis&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; cd isis/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git init&lt;br /&gt;
 Initialized empty Git repository in /home/wendt/isis/.git/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we add moodle.org as remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git fetch &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;&lt;br /&gt;
 remote: Counting objects: 597378, done.&lt;br /&gt;
 remote: Compressing objects: 100% (141938/141938), done.&lt;br /&gt;
 remote: Total 597378 (delta 442383), reused 597378 (delta 442383)&lt;br /&gt;
 Receiving objects: 100% (597378/597378), 223.38 MiB | 11.16 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (442383/442383), done.&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_13_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_13_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_22_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_22_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;master&amp;lt;/span&amp;gt;     -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/master&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new tag]         v1.3.5     -&amp;gt; v1.3.5&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 . &lt;br /&gt;
  * [new tag]         v2.3.2     -&amp;gt; v2.3.2&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we create a local branch of the moodle 2.3 code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this we fork our initial ISIS code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout -b &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to a new branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point we expect an empty ISIS remote repository, where we can initially push the ISIS code. First we add it as a remote repository to our local git-repository. then we push the isis_contrib branch into the different branches of the remote repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Counting objects: 472320, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (117914/117914), done.&lt;br /&gt;
 Writing objects: 100% (472320/472320), 199.01 MiB | 17.92 MiB/s, done.&lt;br /&gt;
 Total 472320 (delta 347911), reused 464510 (delta 342938)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To stay in sync with the remote ISIS repository we track the remote branches to local ones now.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Already on &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --set-upstream &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt; set up to track local branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Now we are ready to bring the code to the productive Server. You can pull the code from the remote ISIS repository, but you will have a lot of overhead this way. So we simply rsync the code to the server.&lt;br /&gt;
&lt;br /&gt;
 wendt@bastet:~/isis$ git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; cd ..&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; rsync -a --delete --exclude=config.php --exclude=.htaccess --exclude=.git/ isis &amp;lt;nowiki&amp;gt;admin@www.isis.tu-berlin.de:/var/www/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 admin@www.isis.tu-berlin.de&#039;s password: &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This rsync command will reapear later updating the production code as well. At this point you can start using your moodle and follow the [[Installing_Moodle|install procedure]] of moodle.&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Marc-robin</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101198</id>
		<title>Moodle Production Server with GIT</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101198"/>
		<updated>2012-10-10T21:32:06Z</updated>

		<summary type="html">&lt;p&gt;Marc-robin: bring some colors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the description of how we maintain our Moodle2 code at [http://www.isis.tu-berlin.de/2.0/ TU Berlin]. Our Moodle has ca. 30000 active user with around 2000 online user day and night. We have a lot of code changes and plugins, so it&#039;s essential for us to maintain the code as automated as possible.&lt;br /&gt;
&lt;br /&gt;
Our Moodle is called ISIS. So further on everything what is named ISIS belongs to us, everything what is called moodle belongs to moodle.org.&lt;br /&gt;
&lt;br /&gt;
We use several GIT-repositories. The scheme with branches looks like this&lt;br /&gt;
&lt;br /&gt;
[[File:ISIS_GIT_schema.png]]&lt;br /&gt;
&lt;br /&gt;
The main purpose for the ISIS remote repository is for backups. One can imagine a scenario without this remote server only with local repositories involved. If you use [https://github.com/sitaramc/gitolite/wiki gitolite] for your remote repository, it&#039;s even more comfortable to keep the code clean, because you are able the restrict access to branches for developer and integration manager individually. &lt;br /&gt;
&lt;br /&gt;
The puzzle about the isis_rebase branch will be explained, when we come to a new moodle release.&lt;br /&gt;
&lt;br /&gt;
=== Install the repositories ===&lt;br /&gt;
&lt;br /&gt;
We start with the original moodle code. For orientation we suggest to read the very useful description [[Git_for_Administrators]] first.&lt;br /&gt;
Instead of the advise there we won&#039;t clone the moodle.org-repository in the first place. We start over with creating an empty repository at the ISIS Integration server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; mkdir isis&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; cd isis/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git init&lt;br /&gt;
 Initialized empty Git repository in /home/wendt/isis/.git/&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we add moodle.org as remote repository.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git fetch &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;&lt;br /&gt;
 remote: Counting objects: 597378, done.&lt;br /&gt;
 remote: Compressing objects: 100% (141938/141938), done.&lt;br /&gt;
 remote: Total 597378 (delta 442383), reused 597378 (delta 442383)&lt;br /&gt;
 Receiving objects: 100% (597378/597378), 223.38 MiB | 11.16 MiB/s, done.&lt;br /&gt;
 Resolving deltas: 100% (442383/442383), done.&lt;br /&gt;
 From &amp;lt;nowiki&amp;gt;git://git.moodle.org/moodle&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_13_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_13_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_22_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_22_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;master&amp;lt;/span&amp;gt;     -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;moodle/master&amp;lt;/span&amp;gt;&lt;br /&gt;
  * [new tag]         v1.3.5     -&amp;gt; v1.3.5&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 . &lt;br /&gt;
  * [new tag]         v2.3.2     -&amp;gt; v2.3.2&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we create a local branch of the moodle 2.3 code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/moodle/MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;moodle&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;MOODLE_23_STABLE&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this we fork our initial ISIS code.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout -b &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to a new branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point we expect an empty ISIS remote repository, where we can initially push the ISIS code. First we add it as a remote repository to our local git-repository. then we push the isis_contrib branch into the different branches of the remote repository.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git remote add &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Counting objects: 472320, done.&lt;br /&gt;
 Delta compression using up to 4 threads.&lt;br /&gt;
 Compressing objects: 100% (117914/117914), done.&lt;br /&gt;
 Writing objects: 100% (472320/472320), 199.01 MiB | 17.92 MiB/s, done.&lt;br /&gt;
 Total 472320 (delta 347911), reused 464510 (delta 342938)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git push &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;:&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
 To &amp;lt;nowiki&amp;gt;git://isis.remote.tu-berlin.de/isis.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * [new branch]      &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt; -&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To stay in sync with the remote ISIS repository we track the remote branches to local ones now.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --track &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_rebase&amp;lt;/span&amp;gt;&lt;br /&gt;
 Branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; set up to track remote branch &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_rebase&amp;lt;/span&amp;gt; from &amp;lt;span style=&amp;quot;color:#008000&amp;quot;&amp;gt;isis&amp;lt;/span&amp;gt;.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
 Already on &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_contrib&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; git branch --set-upstream &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;remotes/isis/isis_contrib&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we are ready to bring the code to the productive Server. You can pull the code from the remote ISIS repository, but you will have a lot of overhead this way. So we simply rsync the code to the server.&lt;br /&gt;
&lt;br /&gt;
 wendt@bastet:~/isis$ git checkout &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&lt;br /&gt;
 Switched to branch &#039;&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;isis_productive&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~/isis$&amp;lt;/span&amp;gt; cd ..&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; rsync -a --delete --exclude=config.php --exclude=.htaccess --exclude=.git/ isis &amp;lt;nowiki&amp;gt;admin@www.isis.tu-berlin.de:/var/www/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 admin@www.isis.tu-berlin.de&#039;s password: &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#808080&amp;quot;&amp;gt;wendt@integ:~$&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This rsync command will reapear later updating the production code as well. At this point you can start using your moodle and follow the [[Installing_Moodle|install procedure]] of moodle.&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Marc-robin</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101196</id>
		<title>Moodle Production Server with GIT</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/500/en/index.php?title=Moodle_Production_Server_with_GIT&amp;diff=101196"/>
		<updated>2012-10-10T20:39:38Z</updated>

		<summary type="html">&lt;p&gt;Marc-robin: Chapter Install the repositories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Moodle Production Server with GIT ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is the description of how we maintain our Moodle2 code at [http://www.isis.tu-berlin.de/2.0/ TU Berlin]. Our Moodle has ca. 30000 active user with around 2000 online user day and night. We have a lot of code changes and plugins, so it&#039;s essential for us to maintain the code as automated as possible.&lt;br /&gt;
&lt;br /&gt;
Our Moodle is called ISIS. So further on everything what is named ISIS belongs to us, everything what is called moodle belongs to moodle.org.&lt;br /&gt;
&lt;br /&gt;
We use several GIT-repositories. The scheme with branches looks like this&lt;br /&gt;
&lt;br /&gt;
[[File:ISIS_GIT_schema.png]]&lt;br /&gt;
&lt;br /&gt;
The main purpose for the ISIS remote repository is for backups. One can imagine a scenario without this remote server only with local repositories involved. If you use [https://github.com/sitaramc/gitolite/wiki gitolite] for your remote repository, it&#039;s even more comfortable to keep the code clean, because you are able the restrict access to branches for developer and integration manager individually. &lt;br /&gt;
&lt;br /&gt;
The puzzle about the isis_rebase branch will be explained, when we come to a new moodle release.&lt;br /&gt;
&lt;br /&gt;
=== Install the repositories ===&lt;br /&gt;
&lt;br /&gt;
We start with the original moodle code. For orientation we suggest to read the very useful description [[Git_for_Administrators]] first.&lt;br /&gt;
Instead of the advise there we won&#039;t clone the moodle.org-repository in the first place. We start over with creating an empty repository at the ISIS Integration server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wendt@integ:~$ mkdir isis&lt;br /&gt;
wendt@integ:~$ cd isis/&lt;br /&gt;
wendt@integ:~/isis$ git init&lt;br /&gt;
Initialized empty Git repository in /home/wendt/isis/.git/&lt;br /&gt;
wendt@integ:~/isis$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we add moodle.org as remote repository.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wendt@integ:~/isis$ git remote add moodle git://git.moodle.org/moodle.git&lt;br /&gt;
wendt@integ:~/isis$ git fetch moodle&lt;br /&gt;
remote: Counting objects: 597378, done.&lt;br /&gt;
remote: Compressing objects: 100% (141938/141938), done.&lt;br /&gt;
remote: Total 597378 (delta 442383), reused 597378 (delta 442383)&lt;br /&gt;
Receiving objects: 100% (597378/597378), 223.38 MiB | 11.16 MiB/s, done.&lt;br /&gt;
Resolving deltas: 100% (442383/442383), done.&lt;br /&gt;
From git://git.moodle.org/moodle&lt;br /&gt;
 * [new branch]      MOODLE_13_STABLE -&amp;gt; moodle/MOODLE_13_STABLE&lt;br /&gt;
 * [new branch]      MOODLE_22_STABLE -&amp;gt; moodle/MOODLE_22_STABLE&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
 * [new branch]      MOODLE_23_STABLE -&amp;gt; moodle/MOODLE_23_STABLE&lt;br /&gt;
 * [new branch]      master     -&amp;gt; moodle/master&lt;br /&gt;
 * [new tag]         v1.3.5     -&amp;gt; v1.3.5&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
 * [new tag]         v2.3.2     -&amp;gt; v2.3.2&lt;br /&gt;
wendt@integ:~/isis$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we create a local branch of the moodle 2.3 code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wendt@integ:~/isis$ git branch --track MOODLE_23_STABLE remotes/moodle/MOODLE_23_STABLE&lt;br /&gt;
Branch MOODLE_23_STABLE set up to track remote branch MOODLE_23_STABLE from moodle.&lt;br /&gt;
wendt@integ:~/isis$ git checkout MOODLE_23_STABLE&lt;br /&gt;
Switched to branch &#039;MOODLE_23_STABLE&#039;&lt;br /&gt;
wendt@integ:~/isis$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this we fork our initial ISIS code.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wendt@integ:~/isis$ git checkout -b isis_contrib&lt;br /&gt;
Switched to a new branch &#039;isis_contrib&#039;&lt;br /&gt;
wendt@integ:~/isis$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point we expect an empty ISIS remote repository, where we can initially push the ISIS code. First we add it as a remote repository to our local git-repository. then we push the isis_contrib branch into the different branches of the remote repository.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wendt@integ:~/isis$ git remote add isis git://isis.remote.tu-berlin.de/isis.git&lt;br /&gt;
wendt@integ:~/isis$ git push isis isis_contrib:isis_contrib&lt;br /&gt;
Counting objects: 472320, done.&lt;br /&gt;
Delta compression using up to 4 threads.&lt;br /&gt;
Compressing objects: 100% (117914/117914), done.&lt;br /&gt;
Writing objects: 100% (472320/472320), 199.01 MiB | 17.92 MiB/s, done.&lt;br /&gt;
Total 472320 (delta 347911), reused 464510 (delta 342938)&lt;br /&gt;
To git://isis.remote.tu-berlin.de/isis.git&lt;br /&gt;
 * [new branch]      isis_contrib -&amp;gt; isis_contrib&lt;br /&gt;
wendt@integ:~/isis$ git push isis isis_contrib:isis_productive&lt;br /&gt;
Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
To git://isis.remote.tu-berlin.de/isis.git&lt;br /&gt;
 * [new branch]      isis_contrib -&amp;gt; isis_productive&lt;br /&gt;
wendt@integ:~/isis$ git push isis isis_contrib:isis_rebase&lt;br /&gt;
Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
To git://isis.remote.tu-berlin.de/isis.git&lt;br /&gt;
 * [new branch]      isis_contrib -&amp;gt; isis_rebase&lt;br /&gt;
wendt@integ:~/isis$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To stay in sync with the remote ISIS repository we track the remote branches to local ones now.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wendt@integ:~/isis$ git branch --track isis_productive  remotes/isis/isis_productive&lt;br /&gt;
Branch isis_productive set up to track remote branch isis_productive from isis.&lt;br /&gt;
wendt@integ:~/isis$ git branch --track isis_rebase  remotes/isis/isis_rebase&lt;br /&gt;
Branch isis_rebase set up to track remote branch isis_rebase from isis.&lt;br /&gt;
wendt@integ:~/isis$ git checkout isis_contrib &lt;br /&gt;
Already on &#039;isis_contrib&#039;&lt;br /&gt;
wendt@integ:~/isis$ git branch --set-upstream remotes/isis/isis_contrib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we are ready to bring the code to the productive Server. You can pull the code from the remote ISIS repository, but you will have a lot of overhead this way. So we simply rsync the code to the server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wendt@bastet:~/isis$ git checkout isis_productive &lt;br /&gt;
Switched to branch &#039;isis_productive&#039;&lt;br /&gt;
wendt@integ:~/isis$ cd ..&lt;br /&gt;
wendt@integ:~$ rsync -a --delete --exclude=config.php --exclude=.htaccess --exclude=.git/ isis admin@www.isis.tu-berlin.de:/var/www/&lt;br /&gt;
admin@www.isis.tu-berlin.de&#039;s password: &lt;br /&gt;
wendt@integ:~$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This rsync command will reapear later updating the production code as well. At this point you can start using your moodle and follow the [[Installing_Moodle|install procedure]] of moodle.&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>Marc-robin</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/500/en/index.php?title=File:ISIS_GIT_schema.png&amp;diff=101185</id>
		<title>File:ISIS GIT schema.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/500/en/index.php?title=File:ISIS_GIT_schema.png&amp;diff=101185"/>
		<updated>2012-10-10T19:06:48Z</updated>

		<summary type="html">&lt;p&gt;Marc-robin: ISIS_GIT_schema TU Berlin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ISIS_GIT_schema TU Berlin&lt;/div&gt;</summary>
		<author><name>Marc-robin</name></author>
	</entry>
</feed>