123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- <HTML>
-
- <TITLE>Code Repository</TITLE>
-
- <link rel="stylesheet" type="text/css" href="mesa.css"></head>
-
- <BODY>
-
- <h1>Code Repository</h1>
-
- <p>
- Mesa uses <a href="http://git.or.cz/"target="_parent">git</a>
- as its source code management system.
- </p>
-
- The master git repository is hosted on
- <a href="http://www.freedesktop.org" target="_parent">freedesktop.org</a>.
- </p>
-
- <p>
- You may access the repository either as an
- <a href="#anonymous">anonymous user</a> (read-only) or as a
- <a href="#developer">developer</a>
- (read/write).
- </p>
-
- <p>
- You may also
- <a href="http://gitweb.freedesktop.org/?p=mesa/mesa.git"
- 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>
-
-
- <a name="anonymous">
- <H2>Anonymous git Access</H2>
-
- <p>
- To get the Mesa sources anonymously (read-only):
- </p>
-
- <ol>
- <li>Install the git software on your computer if needed.<br><br>
- <li>Get an initial, local copy of the repository with:
- <pre>
- git clone git://anongit.freedesktop.org/git/mesa/mesa
- </pre>
- <li>Later, you can update your tree from the master repository with:
- <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>
-
-
- <a name="developer">
- <H2>Developer git Access</H2>
-
- <p>
- Mesa developers need to first have an account on
- <a href="http://www.freedesktop.org" target="_parent">freedesktop.org</a>.
- To get an account, please ask Brian or the other Mesa developers for
- permission.
- Then, if there are no objections, follow this
- <a href="http://www.freedesktop.org/wiki/AccountRequests" target="_parent">
- procedure</a>.
- </p>
-
- <p>
- Once your account is established:
- </p>
-
- <ol>
- <li>Install the git software on your computer if needed.<br><br>
- <li>Get an initial, local copy of the repository with:
- <pre>
- git clone git+ssh://username@git.freedesktop.org/git/mesa/mesa
- </pre>
- Replace <em>username</em> with your actual login name.<br><br>
- <li>Later, you can update your tree from the master repository with:
- <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>
-
- <p>
- At any given time, there may be several active branches in Mesa's
- repository.
- Generally, the trunk contains the latest development (unstable)
- code while a branch has the latest stable code.
- </p>
-
- <p>
- The command <code>git-branch</code> will list all available branches.
- </p>
-
- <p>
- 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 <files to commit>
- 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>
-
|