diff options
Diffstat (limited to 'docs/repository.rst')
-rw-r--r-- | docs/repository.rst | 379 |
1 files changed, 180 insertions, 199 deletions
diff --git a/docs/repository.rst b/docs/repository.rst index ea05ba8dd1..8b0cea5d34 100644 --- a/docs/repository.rst +++ b/docs/repository.rst @@ -1,228 +1,209 @@ -<!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> +Code Repository +=============== +Mesa uses `git <https://git-scm.com>`__ as its source code management +system. +The master git repository is hosted on +`freedesktop.org <https://www.freedesktop.org>`__. +You may access the repository either as an `anonymous +user <#anonymous>`__ (read-only) or as a `developer <#developer>`__ +(read/write). +You may also `browse the main Mesa git +repository <https://cgit.freedesktop.org/mesa/mesa/>`__ and the `Mesa +demos and tests git +repository <https://cgit.freedesktop.org/mesa/demos>`__. +Anonymous git Access +-------------------- -<h1>Code Repository</h1> +To get the Mesa sources anonymously (read-only): -<p> -Mesa uses <a href="https://git-scm.com">git</a> -as its source code management system. -</p> +#. Install the git software on your computer if needed. +#. Get an initial, local copy of the repository with: -<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> + git clone git://anongit.freedesktop.org/git/mesa/mesa + -<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> +#. Later, you can update your tree from the master repository with: + :: -<h2 id="anonymous">Anonymous git Access</h2> + git pull origin + -<p> -To get the Mesa sources anonymously (read-only): -</p> +#. If you also want the Mesa demos/tests repository: -<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> + :: + git clone git://anongit.freedesktop.org/git/mesa/demos + -<h2 id="developer">Developer git Access</h2> +Developer git Access +-------------------- -<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> + +#. Subscribe to the + `mesa-dev <https://lists.freedesktop.org/mailman/listinfo/mesa-dev>`__ + mailing list. +#. Start contributing to the project by `submitting + patches <submittingpatches.html>`__ to the mesa-dev list. + Specifically, + + - Use ``git send-mail`` to post your patches to mesa-dev. + - Wait for someone to review the code and give you a ``Reviewed-by`` + statement. + - You'll have to rely on another Mesa developer to push your initial + patches after they've been reviewed. + +#. 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. +#. 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. +#. To apply for an account, follow `these + directions <https://www.freedesktop.org/wiki/AccountRequests>`__. + 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. + 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> + +#. Get an initial, local copy of the repository with: + + :: + + git clone git+ssh://username@git.freedesktop.org/git/mesa/mesa + + + | Replace *username* with your actual login name. + +#. Later, you can update your tree from the master repository with: + + :: + + git pull origin + + +#. If you also want the Mesa demos/tests repository: + + :: + + git clone git+ssh://username@git.freedesktop.org/git/mesa/demos + + +Windows Users +------------- + +If you're `using git on +Windows <https://git.wiki.kernel.org/index.php/WindowsInstall>`__ you'll +want to enable automatic CR/LF conversion in your local copy of the +repository: + +:: + + git config --global core.autocrlf true + +This will cause git to convert all text files to CR+LF on checkout, and +to LF on commit. + Unix users don't need to set this option. -</p> -<br/> +| -<h2>Development Branches</h2> +Development Branches +-------------------- -<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> +repository. Generally, ``master`` contains the latest development +(unstable) code while a branch has the latest stable code. -<p> -The command <code>git-branch</code> will list all available branches. -</p> +The command ``git-branch`` will list all available branches. -<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 + +Developer Git Tips +------------------ + +#. Setting up to edit the master branch + + If you try to do a pull by just saying\ `` git pull `` and git + complains that you have not specified a branch, try: + + :: + + git config branch.master.remote origin + git config branch.master.merge master + + Otherwise, you have to say\ `` git pull origin master `` each time + you do a pull. + +#. Small changes to master + + 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. + + If it has been awhile since you've done the initial clone, try + + :: + + git pull + + to get the latest files before you start working. + + Make your changes and use + + :: + + git add <files to commit> + git commit + + to get your changes ready to push back into the fd.o repository. + + 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. + + To avoid this, + + :: + + git pull --rebase + git push + + | If you are familiar with CVS or similar system, this is similar to + doing a `` cvs update `` 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.) + | In any case, your repository now looks like you made your changes + after all the other changes. + + 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. + + If you want the rebase action to be the default action, then + + :: + + git config branch.master.rebase true + git config --global branch.autosetuprebase=always + + See `Understanding Git + Conceptually <https://www.eecs.harvard.edu/~cduan/technical/git/>`__ + for a fairly clear explanation about all of this. |