mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2024-12-03 07:04:02 +08:00
b1c16e5251
Ref-link have two benefits over generic links: 1. They produce the right result for non-HTML outputs 2. They get validated at build-time So let's use them for internal references instead. Reviewed-by: Eric Engestrom <eric@engestrom.ch> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5671>
191 lines
5.4 KiB
ReStructuredText
191 lines
5.4 KiB
ReStructuredText
Source 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 :ref:`anonymous
|
|
user <anonymous>` (read-only) or as a :ref:`developer <developer>`
|
|
(read/write).
|
|
|
|
You may also `browse the main Mesa git
|
|
repository <https://gitlab.freedesktop.org/mesa/mesa>`__ and the `Mesa
|
|
demos and tests git
|
|
repository <https://gitlab.freedesktop.org/mesa/demos>`__.
|
|
|
|
.. _anonymous:
|
|
|
|
Anonymous git Access
|
|
--------------------
|
|
|
|
To get the Mesa sources anonymously (read-only):
|
|
|
|
#. Install the git software on your computer if needed.
|
|
#. Get an initial, local copy of the repository with:
|
|
|
|
::
|
|
|
|
git clone https://gitlab.freedesktop.org/mesa/mesa.git
|
|
|
|
#. 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 https://gitlab.freedesktop.org/mesa/demos.git
|
|
|
|
.. _developer:
|
|
|
|
Developer git Access
|
|
--------------------
|
|
|
|
If you wish to become a Mesa developer with gitlab merge privilege,
|
|
please follow this procedure:
|
|
|
|
#. Subscribe to the
|
|
`mesa-dev <https://lists.freedesktop.org/mailman/listinfo/mesa-dev>`__
|
|
mailing list.
|
|
#. Start contributing to the project by :doc:`submitting
|
|
patches <submittingpatches>`. Specifically,
|
|
|
|
- Use `gitlab <https://gitlab.freedesktop.org/>`__ to create your
|
|
merge requests.
|
|
- 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, a maintainer may use their discretion
|
|
to give you access to merge your own code.
|
|
|
|
Pushing code to your gitlab account via HTTPS
|
|
---------------------------------------------
|
|
|
|
Useful for people behind strict proxies
|
|
|
|
You can use `personal access
|
|
tokens <https://gitlab.freedesktop.org/profile/personal_access_tokens>`__
|
|
to push over HTTPS if ssh will does not suit your needs. In this case,
|
|
create a token, and put it in the url as shown here:
|
|
|
|
::
|
|
|
|
git remote set-url --push origin https://USER:TOKEN@gitlab.freedesktop.org/your~user~name/mesa.git
|
|
|
|
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.
|
|
|
|
Development Branches
|
|
--------------------
|
|
|
|
At any given time, there may be several active branches in Mesa's
|
|
repository. Generally, ``master`` contains the latest development
|
|
(unstable) code while a branch has the latest stable code.
|
|
|
|
The command ``git branch`` will list all available branches.
|
|
|
|
Questions about branch status/activity should be posted to the mesa-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 <https://www.eecs.harvard.edu/~cduan/technical/git/>`__
|
|
for a fairly clear explanation about all of this.
|