diff --git a/images/en/Merge_Request_Label_Workflow.png b/images/en/Merge_Request_Label_Workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..02b014c38a28358275ebdedd62260bb5c67c3db8 GIT binary patch literal 15062 zc$~$$2UJtr*Do6N961(1MT)ejsHijn=~a*>0!r^FMWhoDB7^`|dXp~gARrwC1OkCX zrG$=jAqjy*2@u#IEkH=}!a4stzVF>}UmN4S@%9)bthwi!>o@C~D|^R0FxF!~$$t_A z0?~nxYl}jmxVyXe_V%u>tS&4pV0wu&Gc$X8dw2pcI5;>z zKmX~|r-Orov5m3i<>jwmzfNvUe*ga6)6oZm!8kr}X=rGOei^s3v*T+0)Y;j&xS-_t z@#EI|4(HCDL!nS*Wo3?zj^5thWHPy=q-2-68yFY}g+k5E&BesT*4EZ`=sQ_iS^4?- z)6>)8;o+K^noUhjc6N4(ii%~6hKthACyqz<5?va+&zspj|Z-v)2C05PcGIk zH(=I!kVxb{m6n#4mXeb4>eZ{n#KgC6-_Fg=-MxF4g{VDhATBPBva%gH_hMjRpom<& zxw+R!Y2xGKdmWD<5D2a9I2x1ollpUFV&bAs!#r^E$a$=2C*^5%;dFXGTibdR36;QHv;2-3o$!YZ>->)TO-9xdX7XRoiQ86Z4tml#f=FyEX^^C)JkgqGpQ7;p40e{WR?0I8m4_&WCxXRN{Lp** zrGg9H1$LbDn88CHPU=_cGq4kWr4zhT!xn^hVl5jD<4c;IWqiVvYs|2PZZRYemDh%A zHRHc(U}cvz3krO%9daepNs^M~8aShcflJPW?W}7a0&LMKDolv`MKuvU218N|pg_MLW{cvAg@7mRC zz}x*x!dF-Tkpzp8SB~6N4l5iHn7$U&HP!0SuETDc_BSFT>Cm1X-S8=`^m)auc0GQ& z-89XPWl{Sk1o^x{iKsY$v8A9bXDMjCA0@L!E&c84DnLy}Y*9-!z5Q#skz}gUeC^Rw z2{juy+>RC{AULFJ$?BljP# zy+jDe5!qv4R=W}PSl?Ul`(*28ChreA|cCOiG zAEd0vy~(o(ov|E@+xCIYlxR6@nA=f(F>`^THN4U%CxH}zM2Z|hpH4Zo7;VT>hR2cBrfts7v5c(t0gOg%q;H9Mdn%0zx7c*=f4H|*Gt%~P6)q>YXX=7i>KE>jdSK@k zY)#EACFM)yRPFg%n4K>8C!Y0qs8ypwl48Krz3*S64XyfZC^12*S(>6-1O~hBftbaG5+C87UKBd>F`J8(f0@ zQXMh>YETqC>|v(yesiTYrUlBaW`1K*p2x7!Ti`MK}WnxMAqJZMt0jRId`^z@!|SUqx)v>-9qQSMWz|^s{%$cQm&Q8&v8k6 zqS=)sN0(JccG7=z;)51xWmv123l!h@xv*|%A!Eiwt8EEYv|Lho=&)ChkFbuHl9B<$$X>}X9xAt<`jTn>rFKR)kQ;`s~NT=ZZ z-&^_*x2_f_ztDu%HR^p<*TdIG7#RHc117e$cYFtI5!IzZL2MlEx06O#r{2Bz{S|_u
    Ra@!8&zaRP`AFv7-cpm-iy;05VN0HbD5!e` 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 literal 0 Hc$@ - Wolthera van Hövell tot Westerflier - Boudewijn Rempt + - Agata Cacko :license: GNU free documentation license 1.3 or later. .. _gitlab : https://invent.kde.org @@ -147,17 +148,182 @@ .. note:: - Work In Progress. + Everything below is work in progress. #. Forking on gitlab is done by going to the `repository`_ and pressing :guilabel:`fork`. You will then make a personal fork of the repository. + +Your fork will probably be located here: + +:: + + https://invent.kde.org//krita + #. In your fork, you press :guilabel:`clone` to get the git urls to do the ``git clone`` from. You can then pull and push your commits from these. - + + .. code-block:: bash + + # for ssh access + git clone git@invent.kde.org:/krita.git + # for access https + git clone https://invent.kde.org//krita.git + You can also use the :guilabel:`Web IDE` to make your changes on invent.kde.org, but because Krita is a cpp program, we don't recommend this outside of typo fixes and doxygen. You wouldn't be able to see the effect of your changes, after all! -#. Make your first fix, push everything to your fork. +#. Set up a new remote to point to the official repository, so you'll be able to update your master branch. + + .. code-block:: bash + + # for ssh access + git remote add upstream git@invent.kde.org:kde/krita.git + # for ssh access + git remote add upstream https://invent.kde.org/kde/krita.git + +After that, you can see all of your links using: + + .. code-block:: bash + + git remote --verbose + +As you can see, `origin` points to your fork, while `upstream` points to the official repository. + +#. Create a new branch and checkout to it. + + .. code-block:: bash + + git checkout -b "/" + +#. Make your first fix, push everything to your branch in your fork. + + .. code-block:: bash + + # make sure you didn't leave any necessary debug or unfinished code + git diff + # add all changed files the "staged" state + git add . + # make sure all added files are the ones you want to have in your commit + git status + # commit changes (write a commit messages that follows the rules) + git commit + # push to your branch + git push + + #. Once you're done, go to :menuselection:`merge requests` and press :guilabel:`new merge request` +#. Make sure your merge request is between your branch from your fork and the official master branch. #. Tell us what you've done in detail. -The Krita developers be informed of new merge requests, and will try to review your request as soon as possible. If you suspect your patch slipped through the cracks, don't hesitate to make contact us through the means described above. +The Krita developers will be informed of new merge requests, and will try to review your request as soon as possible. If you suspect your patch slipped through the cracks, don't hesitate to contact us through the means described above. + +If you already have developer access, instead of working on a branch in a forked repository, you can create a new branch in the official repository and request a merge from this branch to official master. + +Update the master in your fork +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +After working for some time, you may want to update the master branch of your fork to be in sync with master branch from the official repo. + +#. Checkout the master branch in your working environment. + + .. code-block:: bash + + git checkout master + +#. Pull the changes from official repository. + + .. code-block:: bash + + git pull upstream master + + +#. Push it to your fork. + + .. code-block:: bash + + git push + + + + +Label workflow +~~~~~~~~~~~~~~ + +Make sure the state of your merge request is labeled correctly. The picture below shows the base label workflow that your merge request should go through: + +.. image:: ../images/en/Merge_Request_Label_Workflow.png + :width: 1000px + + +#. When you create a merge request, mark it with WIP to make sure no one will accidentally merge your request prematurely. +#. When you finish your work, label it with ``Needs Review``. That will make developers know your merge request is ready. +#. A Krita developer will read and test your merge request. After that they will write comments and label your merge request accordingly: + + * if the merge request is ready to be merged, with ``Approved`` label; + * if it requires changes to proceed, with ``Needs Changes`` label. + +#. If your merge request is in ``Needs Changes`` state, please follow the instruction of the reviewer and submit the code to your merge request. Add ``Needs Review`` label to your MR again. +#. When your merge request is in the ``Approved`` state, you can either merge the code yourself to master if you have developer access, or wait for KDE developer to do it for you. + +.. attention:: + If you have developer access and merge someone's merge request to the repository, you are partially responsible for the code. + + * Don't merge MRs that weren't approved! + * Read and test extensively all MRs before you approve or merge! + + + +How to prepare your commits for merge request +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +After merging to master, your commits should nicely fit the Krita git history. + +* Commit messages should state clearly what that commit changes and why - see `How to Write a Git Commit Message `_. + +* Every commit should be compilable and follow KDE commit guidelines - see `KDE Commit Policy `_. + +* Commits should be self-contained: if you code a bigger feature, it's better if you divide the code into bits that can possibly exist independently. + +* When you add new features during the development, it's fine to add new commits. + +* If you need to only fix previous commits, don't add new ones - instead, amend the ones that you made before and force-push your new commits to the branch in your fork. + + .. code-block:: bash + + # if you already committed your changes... + git commit + # ...add all changed files the "staged" state + git add . + # and amend the previous commit + git commit --amend + + + .. note:: + You can only force-push to your own branch on your own fork. If you need to remove changes from one of the commits that are already in the official repository, please use ``git revert``. + + +* When you want to reduce the number of commits: + + * you can squash them before making a merge request, + * if you have developer access, you can squash the commits just before merging with master. + * `Beginner's guide to rebasing and squashing `_ + +* Your work should go to a new branch, instead of master. + +* Your commits will be rebased and put on master using fast-forward merge. If you need a manual merge (if, for example, you're working on a big feature) and you don't have the commit access, please contact a Krita developer. + + + + + + + + + + + + + + + + + .. https://forum.kde.org/viewtopic.php?f=288&t=125955