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