xref: /aosp_15_r20/external/mesa3d/docs/repository.rst (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard WorkerSource Code Repository
2*61046927SAndroid Build Coastguard Worker======================
3*61046927SAndroid Build Coastguard Worker
4*61046927SAndroid Build Coastguard WorkerMesa uses `Git <https://git-scm.com>`__ as its source code management
5*61046927SAndroid Build Coastguard Workersystem.
6*61046927SAndroid Build Coastguard Worker
7*61046927SAndroid Build Coastguard WorkerThe upstream Git repository is hosted on
8*61046927SAndroid Build Coastguard Worker`freedesktop.org <https://www.freedesktop.org>`__.
9*61046927SAndroid Build Coastguard Worker
10*61046927SAndroid Build Coastguard WorkerYou may access the repository either as an :ref:`anonymous
11*61046927SAndroid Build Coastguard Workeruser <anonymous>` (read-only) or as a :ref:`developer <developer>`
12*61046927SAndroid Build Coastguard Worker(read/write).
13*61046927SAndroid Build Coastguard Worker
14*61046927SAndroid Build Coastguard WorkerYou may also `browse the main Mesa Git
15*61046927SAndroid Build Coastguard Workerrepository <https://gitlab.freedesktop.org/mesa/mesa>`__ and the `Mesa
16*61046927SAndroid Build Coastguard Workerdemos and tests Git
17*61046927SAndroid Build Coastguard Workerrepository <https://gitlab.freedesktop.org/mesa/demos>`__.
18*61046927SAndroid Build Coastguard Worker
19*61046927SAndroid Build Coastguard Worker.. _anonymous:
20*61046927SAndroid Build Coastguard Worker
21*61046927SAndroid Build Coastguard WorkerAnonymous Git Access
22*61046927SAndroid Build Coastguard Worker--------------------
23*61046927SAndroid Build Coastguard Worker
24*61046927SAndroid Build Coastguard WorkerTo get the Mesa sources anonymously (read-only):
25*61046927SAndroid Build Coastguard Worker
26*61046927SAndroid Build Coastguard Worker#. Install the Git software on your computer if needed.
27*61046927SAndroid Build Coastguard Worker#. Get an initial, local copy of the repository with:
28*61046927SAndroid Build Coastguard Worker
29*61046927SAndroid Build Coastguard Worker   .. code-block:: sh
30*61046927SAndroid Build Coastguard Worker
31*61046927SAndroid Build Coastguard Worker      git clone https://gitlab.freedesktop.org/mesa/mesa.git
32*61046927SAndroid Build Coastguard Worker
33*61046927SAndroid Build Coastguard Worker#. Later, you can update your tree from the upstream repository with:
34*61046927SAndroid Build Coastguard Worker
35*61046927SAndroid Build Coastguard Worker   .. code-block:: sh
36*61046927SAndroid Build Coastguard Worker
37*61046927SAndroid Build Coastguard Worker      git pull origin
38*61046927SAndroid Build Coastguard Worker
39*61046927SAndroid Build Coastguard Worker#. If you also want the Mesa demos/tests repository:
40*61046927SAndroid Build Coastguard Worker
41*61046927SAndroid Build Coastguard Worker   .. code-block:: sh
42*61046927SAndroid Build Coastguard Worker
43*61046927SAndroid Build Coastguard Worker      git clone https://gitlab.freedesktop.org/mesa/demos.git
44*61046927SAndroid Build Coastguard Worker
45*61046927SAndroid Build Coastguard Worker.. _developer:
46*61046927SAndroid Build Coastguard Worker
47*61046927SAndroid Build Coastguard WorkerDeveloper Git Access
48*61046927SAndroid Build Coastguard Worker--------------------
49*61046927SAndroid Build Coastguard Worker
50*61046927SAndroid Build Coastguard WorkerIf you wish to become a Mesa developer with GitLab merge privilege,
51*61046927SAndroid Build Coastguard Workerplease follow this procedure:
52*61046927SAndroid Build Coastguard Worker
53*61046927SAndroid Build Coastguard Worker#. Subscribe to the
54*61046927SAndroid Build Coastguard Worker   `mesa-dev <https://lists.freedesktop.org/mailman/listinfo/mesa-dev>`__
55*61046927SAndroid Build Coastguard Worker   mailing list.
56*61046927SAndroid Build Coastguard Worker#. Start contributing to the project by :doc:`submitting
57*61046927SAndroid Build Coastguard Worker   patches <submittingpatches>`. Specifically,
58*61046927SAndroid Build Coastguard Worker
59*61046927SAndroid Build Coastguard Worker   -  Use `GitLab <https://gitlab.freedesktop.org/>`__ to create your
60*61046927SAndroid Build Coastguard Worker      merge requests.
61*61046927SAndroid Build Coastguard Worker   -  Wait for someone to review the code and give you a ``Reviewed-by``
62*61046927SAndroid Build Coastguard Worker      statement.
63*61046927SAndroid Build Coastguard Worker   -  You'll have to rely on another Mesa developer to push your initial
64*61046927SAndroid Build Coastguard Worker      patches after they've been reviewed.
65*61046927SAndroid Build Coastguard Worker
66*61046927SAndroid Build Coastguard Worker#. After you've demonstrated the ability to write good code and have had
67*61046927SAndroid Build Coastguard Worker   a dozen or so patches accepted, a maintainer may use their discretion
68*61046927SAndroid Build Coastguard Worker   to give you access to merge your own code.
69*61046927SAndroid Build Coastguard Worker
70*61046927SAndroid Build Coastguard WorkerPushing code to your GitLab account via HTTPS
71*61046927SAndroid Build Coastguard Worker---------------------------------------------
72*61046927SAndroid Build Coastguard Worker
73*61046927SAndroid Build Coastguard WorkerUseful for people behind strict proxies
74*61046927SAndroid Build Coastguard Worker
75*61046927SAndroid Build Coastguard WorkerYou can use `personal access
76*61046927SAndroid Build Coastguard Workertokens <https://gitlab.freedesktop.org/profile/personal_access_tokens>`__
77*61046927SAndroid Build Coastguard Workerto push over HTTPS if ssh does not suit your needs. In this case, create
78*61046927SAndroid Build Coastguard Workera token, and put it in the URL as shown here:
79*61046927SAndroid Build Coastguard Worker
80*61046927SAndroid Build Coastguard Worker.. code-block:: sh
81*61046927SAndroid Build Coastguard Worker
82*61046927SAndroid Build Coastguard Worker   git remote set-url --push origin https://USER:[email protected]/your~user~name/mesa.git
83*61046927SAndroid Build Coastguard Worker
84*61046927SAndroid Build Coastguard WorkerWindows Users
85*61046927SAndroid Build Coastguard Worker-------------
86*61046927SAndroid Build Coastguard Worker
87*61046927SAndroid Build Coastguard WorkerIf you're `using Git on
88*61046927SAndroid Build Coastguard WorkerWindows <https://git-scm.com/book/en/v2/Getting-Started-Installing-Git#_installing_on_windows>`__
89*61046927SAndroid Build Coastguard Workeryou'll want to enable automatic CR/LF conversion in your local copy of
90*61046927SAndroid Build Coastguard Workerthe repository:
91*61046927SAndroid Build Coastguard Worker
92*61046927SAndroid Build Coastguard Worker.. code-block:: sh
93*61046927SAndroid Build Coastguard Worker
94*61046927SAndroid Build Coastguard Worker   git config --global core.autocrlf true
95*61046927SAndroid Build Coastguard Worker
96*61046927SAndroid Build Coastguard WorkerThis will cause Git to convert all text files to CR+LF on checkout, and
97*61046927SAndroid Build Coastguard Workerto LF on commit.
98*61046927SAndroid Build Coastguard Worker
99*61046927SAndroid Build Coastguard WorkerUnix users don't need to set this option.
100*61046927SAndroid Build Coastguard Worker
101*61046927SAndroid Build Coastguard WorkerDevelopment Branches
102*61046927SAndroid Build Coastguard Worker--------------------
103*61046927SAndroid Build Coastguard Worker
104*61046927SAndroid Build Coastguard WorkerAt any given time, there may be several active branches in Mesa's
105*61046927SAndroid Build Coastguard Workerrepository. Generally, ``main`` contains the latest development
106*61046927SAndroid Build Coastguard Worker(unstable) code while a branch has the latest stable code.
107*61046927SAndroid Build Coastguard Worker
108*61046927SAndroid Build Coastguard WorkerThe command ``git branch`` will list all available branches.
109*61046927SAndroid Build Coastguard Worker
110*61046927SAndroid Build Coastguard WorkerQuestions about branch status/activity should be posted to the mesa-dev
111*61046927SAndroid Build Coastguard Workermailing list.
112*61046927SAndroid Build Coastguard Worker
113*61046927SAndroid Build Coastguard WorkerDeveloper Git Tips
114*61046927SAndroid Build Coastguard Worker------------------
115*61046927SAndroid Build Coastguard Worker
116*61046927SAndroid Build Coastguard Worker#. Setting up to edit the main branch
117*61046927SAndroid Build Coastguard Worker
118*61046927SAndroid Build Coastguard Worker   If you try to do a pull by just saying\ ``git pull`` and Git
119*61046927SAndroid Build Coastguard Worker   complains that you have not specified a branch, try:
120*61046927SAndroid Build Coastguard Worker
121*61046927SAndroid Build Coastguard Worker   .. code-block:: sh
122*61046927SAndroid Build Coastguard Worker
123*61046927SAndroid Build Coastguard Worker      git config branch.main.remote origin
124*61046927SAndroid Build Coastguard Worker      git config branch.main.merge main
125*61046927SAndroid Build Coastguard Worker
126*61046927SAndroid Build Coastguard Worker   Otherwise, you have to say\ ``git pull origin main`` each time you
127*61046927SAndroid Build Coastguard Worker   do a pull.
128*61046927SAndroid Build Coastguard Worker
129*61046927SAndroid Build Coastguard Worker#. Small changes to main
130*61046927SAndroid Build Coastguard Worker
131*61046927SAndroid Build Coastguard Worker   If you are an experienced Git user working on substantial
132*61046927SAndroid Build Coastguard Worker   modifications, you are probably working on a separate branch and
133*61046927SAndroid Build Coastguard Worker   would rebase your branch prior to merging with main. But for small
134*61046927SAndroid Build Coastguard Worker   changes to the main branch itself, you also need to use the rebase
135*61046927SAndroid Build Coastguard Worker   feature in order to avoid an unnecessary and distracting branch in
136*61046927SAndroid Build Coastguard Worker   main.
137*61046927SAndroid Build Coastguard Worker
138*61046927SAndroid Build Coastguard Worker   If it has been awhile since you've done the initial clone, try
139*61046927SAndroid Build Coastguard Worker
140*61046927SAndroid Build Coastguard Worker   .. code-block:: sh
141*61046927SAndroid Build Coastguard Worker
142*61046927SAndroid Build Coastguard Worker      git pull
143*61046927SAndroid Build Coastguard Worker
144*61046927SAndroid Build Coastguard Worker   to get the latest files before you start working.
145*61046927SAndroid Build Coastguard Worker
146*61046927SAndroid Build Coastguard Worker   Make your changes and use
147*61046927SAndroid Build Coastguard Worker
148*61046927SAndroid Build Coastguard Worker   .. code-block:: sh
149*61046927SAndroid Build Coastguard Worker
150*61046927SAndroid Build Coastguard Worker      git add <files to commit>
151*61046927SAndroid Build Coastguard Worker      git commit
152*61046927SAndroid Build Coastguard Worker
153*61046927SAndroid Build Coastguard Worker   to get your changes ready to push back into the freedesktop.org
154*61046927SAndroid Build Coastguard Worker   repository.
155*61046927SAndroid Build Coastguard Worker
156*61046927SAndroid Build Coastguard Worker   It is possible (and likely) that someone has changed main since you
157*61046927SAndroid Build Coastguard Worker   did your last pull. Even if your changes do not conflict with their
158*61046927SAndroid Build Coastguard Worker   changes, Git will make a fast-forward merge branch, branching from
159*61046927SAndroid Build Coastguard Worker   the point in time where you did your last pull and merging it to a
160*61046927SAndroid Build Coastguard Worker   point after the other changes.
161*61046927SAndroid Build Coastguard Worker
162*61046927SAndroid Build Coastguard Worker   To avoid this,
163*61046927SAndroid Build Coastguard Worker
164*61046927SAndroid Build Coastguard Worker   .. code-block:: sh
165*61046927SAndroid Build Coastguard Worker
166*61046927SAndroid Build Coastguard Worker      git pull --rebase
167*61046927SAndroid Build Coastguard Worker      git push
168*61046927SAndroid Build Coastguard Worker
169*61046927SAndroid Build Coastguard Worker   If you are familiar with CVS or similar system, this is similar to
170*61046927SAndroid Build Coastguard Worker   doing a ``cvs update`` in order to update your source tree to the
171*61046927SAndroid Build Coastguard Worker   current repository state, instead of the time you did the last
172*61046927SAndroid Build Coastguard Worker   update. (CVS doesn't work like Git in this respect, but this is
173*61046927SAndroid Build Coastguard Worker   easiest way to explain it.)
174*61046927SAndroid Build Coastguard Worker
175*61046927SAndroid Build Coastguard Worker   In any case, your repository now looks like you made your changes
176*61046927SAndroid Build Coastguard Worker   after all the other changes.
177*61046927SAndroid Build Coastguard Worker
178*61046927SAndroid Build Coastguard Worker   If the rebase resulted in conflicts or changes that could affect the
179*61046927SAndroid Build Coastguard Worker   proper operation of your changes, you'll need to investigate those
180*61046927SAndroid Build Coastguard Worker   before doing the push.
181*61046927SAndroid Build Coastguard Worker
182*61046927SAndroid Build Coastguard Worker   If you want the rebase action to be the default action, then
183*61046927SAndroid Build Coastguard Worker
184*61046927SAndroid Build Coastguard Worker   .. code-block:: sh
185*61046927SAndroid Build Coastguard Worker
186*61046927SAndroid Build Coastguard Worker      git config branch.main.rebase true
187*61046927SAndroid Build Coastguard Worker      git config --global branch.autosetuprebase=always
188*61046927SAndroid Build Coastguard Worker
189*61046927SAndroid Build Coastguard Worker   See `Understanding Git
190*61046927SAndroid Build Coastguard Worker   Conceptually <https://www.cduan.com/technical/git/>`__
191*61046927SAndroid Build Coastguard Worker   for a fairly clear explanation about all of this.
192