Merge remote branch 'origin/master' into pipe-video
[mesa.git] / docs / repository.html
index 39f5da4bbe7a84a55bb5bb95a4b54489d654f80c..954bd0d42e6bf0fd696f07883cf221860e9fd7c9 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 
-<TITLE>Cocd Repository</TITLE>
+<TITLE>Code Repository</TITLE>
 
 <link rel="stylesheet" type="text/css" href="mesa.css"></head>
 
@@ -9,11 +9,8 @@
 <h1>Code Repository</h1>
 
 <p>
-As of December 5, 2006, Mesa is using
-<a href="http://git.or.cz/"target="_parent">git</a>
+Mesa uses <a href="http://git.or.cz/"target="_parent">git</a>
 as its source code management system.
-CVS was used previously.
-The old CVS repository should no longer be used.
 </p>
 
 The master git repository is hosted on
@@ -30,7 +27,9 @@ You may access the repository either as an
 <p>
 You may also 
 <a href="http://gitweb.freedesktop.org/?p=mesa/mesa.git"
-target="_parent">browse the git repository</a>.
+target="_parent">browse the main Mesa git repository</a> and the
+<a href="http://cgit.freedesktop.org/mesa/demos"
+target="_parent">Mesa demos and tests git repository</a>.
 </p>
 
 
@@ -51,6 +50,10 @@ To get the Mesa sources anonymously (read-only):
     <pre>
     git pull origin
     </pre>
+<li>If you also want the Mesa demos/tests repository:
+    <pre>
+    git clone git://anongit.freedesktop.org/git/mesa/demos
+    </pre>
 </ol>
 
 
@@ -82,9 +85,34 @@ Once your account is established:
     <pre>
     git pull origin
     </pre>
+<li>If you also want the Mesa demos/tests repository:
+    <pre>
+    git clone git+ssh://username@git.freedesktop.org/git/mesa/demos
+    </pre>
 </ol>
 
 
+<H2>Windows Users</H2>
+
+<p>
+If you're <a href="http://git.or.cz/gitwiki/WindowsInstall" target="_parent">
+using git on Windows</a> you'll want to enable automatic CR/LF conversion in
+your local copy of the repository:
+</p>
+<pre>
+   git config --global core.autocrlf true
+</pre>
+
+<p>
+This will cause git to convert all text files to CR+LF on checkout,
+and to LF on commit.
+</p>
+<p>
+Unix users don't need to set this option.
+</p>
+<br>
+
+
 <a name="developer">
 <H2>Development Branches</H2>
 
@@ -104,6 +132,83 @@ Questions about branch status/activity should be posted to the
 mesa3d-dev mailing list.
 </p>
 
+<H2>Developer Git Tips</H2>
+
+<ol>
+<li>Setting up to edit the master branch
+<p>
+If you try to do a pull by just saying<code> git pull </code>
+and git complains that you have not specified a
+branch, try:
+<pre>
+    git config branch.master.remote origin
+    git config branch.master.merge master
+</pre>
+Otherwise, you have to say<code> git pull origin master </code>
+each time you do a pull.
+</p>
+<li>Small changes to master
+<p>
+If you are an experienced git user working on substancial modifications,
+you are probably
+working on a separate branch and would rebase your branch prior to
+merging with master.
+But for small changes to the master branch itself,
+you also need to use the rebase feature in order to avoid an
+unnecessary and distracting branch in master.
+</p>
+<p>
+If it has been awhile since you've done the initial clone, try
+<pre>
+    git pull
+</pre>
+to get the latest files before you start working.
+</p>
+<p>
+Make your changes and use
+<pre>
+    git add &lt;files to commit&gt;
+    git commit
+</pre>
+to get your changes ready to push back into the fd.o repository.
+</p>
+<p>
+It is possible (and likely) that someone has changed master since
+you did your last pull.  Even if your changes do not conflict with
+their changes, git will make a fast-forward 
+merge branch, branching from the point in time
+where you did your last pull and merging it to a point after the other changes.
+</p>
+<p>
+To avoid this, 
+<pre>
+    git pull --rebase
+    git push
+</pre>
+If you are familiar with CVS or similar system, this is similar to doing a
+<code> cvs update </code> in order to update your source tree to
+the current repository state, instead of the time you did the last update.
+(CVS doesn't work like git in this respect, but this is easiest way
+to explain it.)
+</br>
+In any case, your repository now looks like you made your changes after
+all the other changes.
+</p>
+<p>
+If the rebase resulted in conflicts or changes that could affect
+the proper operation of your changes, you'll need to investigate
+those before doing the push.
+</p>
+<p>
+If you want the rebase action to be the default action, then
+<pre>
+    git config branch.master.rebase true
+    git config --global branch.autosetuprebase=always
+</pre>
+<p>
+See <a href="http://www.eecs.harvard.edu/~cduan/technical/git/" target="_parent">Understanding Git Conceptually</a> for a fairly clear explanation about all of this.
+</p>
+</ol>
 
 </body>
 </html>