Code Repository
-As of December 5, 2006, Mesa is using -git +Mesa uses git as its source code management system. -CVS was used previously. -The old CVS repository should no longer be used.
+The master git repository is hosted on -freedesktop.org. +freedesktop.org.
@@ -29,13 +35,14 @@ You may access the repository either as an
You may also -browse the git repository. +browse the main Mesa git repository and the +Mesa demos and tests git repository.
- -Anonymous git Access
+Anonymous git Access
To get the Mesa sources anonymously (read-only): @@ -51,28 +58,49 @@ To get the Mesa sources anonymously (read-only):
git pull origin+
+ git clone git://anongit.freedesktop.org/git/mesa/demos +- -
Developer git Access
+Developer git Access
-Mesa developers need to first have an account on -freedesktop.org. -To get an account, please ask Brian or the other Mesa developers for -permission. -Then, if there are no objections, follow this - -procedure. +If you wish to become a Mesa developer with git-write privilege, please +follow this procedure:
+-
+
- Subscribe to the +mesa-dev +mailing list. +
- Start contributing to the project by posting patches / review requests 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. +
- Use
- 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. +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:
-
-
- Install the git software on your computer if needed.
- Get an initial, local copy of the repository with:
git clone git+ssh://username@git.freedesktop.org/git/mesa/mesa @@ -82,11 +110,35 @@ Once your account is established:
git pull origin
+ - If you also want the Mesa demos/tests repository:
+
+ git clone git+ssh://username@git.freedesktop.org/git/mesa/demos +
Development Branches
+Windows Users
+ ++If you're +using git on Windows 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. +
++ + +
Development Branches
At any given time, there may be several active branches in Mesa's @@ -104,8 +156,88 @@ Questions about branch status/activity should be posted to the mesa3d-dev mailing list.
+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 for a fairly clear explanation about all of this. +
+