diff options
Diffstat (limited to 'docs/repository.rst')
-rw-r--r-- | docs/repository.rst | 228 |
1 files changed, 228 insertions, 0 deletions
diff --git a/docs/repository.rst b/docs/repository.rst new file mode 100644 index 0000000000..ea05ba8dd1 --- /dev/null +++ b/docs/repository.rst @@ -0,0 +1,228 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"><head> + <meta content="text/html; charset=utf-8" http-equiv="content-type"/> + <title>Code Repository</title> + <link href="mesa.css" rel="stylesheet" type="text/css"/> +</head> +<body> + + + + + + +<h1>Code Repository</h1> + +<p> +Mesa uses <a href="https://git-scm.com">git</a> +as its source code management system. +</p> + +<p> +The master git repository is hosted on +<a href="https://www.freedesktop.org">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="https://cgit.freedesktop.org/mesa/mesa/">browse the main Mesa git repository</a> and the +<a href="https://cgit.freedesktop.org/mesa/demos">Mesa demos and tests git repository</a>. +</p> + + +<h2 id="anonymous">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><li>Get an initial, local copy of the repository with: + <pre> git clone git://anongit.freedesktop.org/git/mesa/mesa + </pre> +</li><li>Later, you can update your tree from the master repository with: + <pre> git pull origin + </pre> +</li><li>If you also want the Mesa demos/tests repository: + <pre> git clone git://anongit.freedesktop.org/git/mesa/demos + </pre> +</li></ol> + + +<h2 id="developer">Developer git Access</h2> + +<p> +If you wish to become a Mesa developer with git-write privilege, please +follow this procedure: +</p> +<ol> +<li>Subscribe to the +<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev">mesa-dev</a> +mailing list. +</li><li>Start contributing to the project by +<a href="submittingpatches.html" target="_parent">submitting patches</a> to +the mesa-dev list. Specifically, +<ul> +<li>Use <code>git send-mail</code> to post your patches to mesa-dev. +</li><li>Wait for someone to review the code and give you a <code>Reviewed-by</code> +statement. +</li><li>You'll have to rely on another Mesa developer to push your initial patches +after they've been reviewed. +</li></ul> +</li><li>After you've demonstrated the ability to write good code and have had +a dozen or so patches accepted you can apply for an account. +</li><li>Occasionally, but rarely, someone may be given a git account sooner, but +only if they're being supervised by another Mesa developer at the same +organization and planning to work in a limited area of the code or on a +separate branch. +</li><li>To apply for an account, follow +<a href="https://www.freedesktop.org/wiki/AccountRequests">these directions</a>. +It's also appreciated if you briefly describe what you intend to do (work +on a particular driver, add a new extension, etc.) in the bugzilla record. +</li></ol> + +<p> +Once your account is established: +</p> + +<ol> +<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><li>Later, you can update your tree from the master repository with: + <pre> git pull origin + </pre> +</li><li>If you also want the Mesa demos/tests repository: + <pre> git clone git+ssh://username@git.freedesktop.org/git/mesa/demos + </pre> +</li></ol> + + +<h2>Windows Users</h2> + +<p> +If you're <a href="https://git.wiki.kernel.org/index.php/WindowsInstall"> +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/> + + +<h2>Development Branches</h2> + +<p> +At any given time, there may be several active branches in Mesa's +repository. +Generally, <tt>master</tt> 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: +</p><pre> git config branch.master.remote origin + git config branch.master.merge master +</pre> +<p> +Otherwise, you have to say<code> git pull origin master </code> +each time you do a pull. +</p> +</li><li>Small changes to master +<p> +If you are an experienced git user working on substantial 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 +</p><pre> git pull +</pre> +<p> +to get the latest files before you start working. +</p> +<p> +Make your changes and use +</p><pre> git add <files to commit> + git commit +</pre> +<p> +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, +</p><pre> git pull --rebase + git push +</pre> +<p> +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 +</p><pre> git config branch.master.rebase true + git config --global branch.autosetuprebase=always +</pre> +<p> +See <a href="https://www.eecs.harvard.edu/~cduan/technical/git/">Understanding Git Conceptually</a> for a fairly clear explanation about all of this. +</p> +</li></ol> + + + + +</body></html>
\ No newline at end of file |