|
|||
Lines: 1-143 | Lines: 1-125 | ||
- | {DIV(class="lead well")} See also: ((Freeze and Slush)) and ((Git and SVN Combined Workflow)) Dashboard ! DashboardQuick overview intended to help to know where to commit to right now in most situations. See [#Branches| Branches section] below for detailed explanations. {BOX(title=" to go in ** For example if you want to make a fix to 15.x LTS, please commit the fix to 20.x first then backport to 19.x , see the table below. ** During this period, changes to trunk/master increase the risks of ((merge conflicts)). To minimize this risk ~tc~* see /tc~ * __Upcoming releases__: ** ''20. , 19.2, 18.4 LTS, 15.8 LTS and 12 15 LTS will be |
+ | {DIV(class="lead well")}A very important decision is __where to commit__?: LTS? Stable? Dev? {DIV} {BOX(title="General principle" align="left") The general principle is that everything goes to master (trunk), and once approved, cherry-picked (backported) to still supported branches (where more releases are planned). How far you can backport depends on the nature of the contribution.{BOX} |
+ | !! Where to commit | ||
Commit status and order for each open branch: | Commit status and order for each open branch: | ||
- | {FANCYTABLE(head=" 15 |
+ | {FANCYTABLE(head="__Name__ |__Currently this is git branch__| __What is allowed in this branch__ | __Before commiting here, first commit to__ ")} __Dev__|[https://gitlab.com/tikiwiki/tiki/commits/master|__master__ (trunk)] (future 27x) | Functional [[ENH]ancements and new features, [[FIX]es and [[TRA]nslations %%% Most development (new features) happens here. New features need to be functional, but don't need to be complete. In theory, should be releasable at any time. This is the place for [[REF]actoring or cosmetic changes. %%% Also: {MOUSEOVER(label="Update language strings")}If you must change the English version (but are not changing the meaning and so the translations are still valid, please use ((mass spelling correction)). If you can't use that, just add to pending text corrections.{MOUSEOVER}. If you commit to master, and after you want to commit to a stable branch, please see how to ((git cherry-pick)). | This is the first place to propose a merge request (MR __Next Stable__ | None | Exists only between the time Dev has been branched into the next stable, and the next stable .0 release has been released. Bug fixes and Translations only Dev Dev__Current Stable__ | [https://gitlab.com/tikiwiki/tiki/-/tree/26.x|branches/26.x] | Bug fixes and minor safe enhancements | Dev, Next Stable ( any) __Previous Stable__ | None | Exists only until .1 release of Current Stable has been released. Then EoL or becomes the Previous Stable LTS | Stable , Current Stable__Previous Stable; LTS__|[https://gitlab.com/tikiwiki/tiki/-/tree/24.x|branches/24.x] | Minor safe enhancements, fixes and translations backported from Current Stable or Next Stable | Dev,Stable Current Stable or Next Stable__Security fixes only; LTS__ |[https://gitlab.com/tikiwiki/tiki/-/tree/21.x|branches/21.x] | Security fixes only | Dev, Current Stable or Next Stable, Previous Stable LTS |
{FANCYTABLE} | {FANCYTABLE} | ||
- | + | Legend: * STS: Standard Term * LTS: Long Term Support | |
- | ''Root |
+ | The table above shows which branch is appropriate to commit what type of code. How close we are to the release also has an impact (ex.: don't start a major refactoring just before a release). Please see: ((Freeze and Slush)). |
- | Dev|[https://svn.code.sf.net/p/tikiwiki/code/trunk/|trunk]/[https://gitlab.com/tikiwiki/tiki/commits/master|master](will become 21.x branch in future) |Most development (new features) happens here. New features, need to __Stable__|[https://svn.code.sf.net/p/tikiwiki/code/branches/20.x/|branches/20.x] |__Fixes only__ - Auto-merged to trunk/ . __Previous Stable__|[https://svn.code.sf.net/p/tikiwiki/code/branches/19.x/|branches/19.x] |__Fixes only__ until after 20.0 backported x 20.x __Stable LTS__|[https://svn.code.sf.net/p/tikiwiki/code/branches/18.x/|branches/18.x] |__Fixes only__ until after 20.0 x from 19.x__Previous Stable LTS__|[https://svn.code.sf.net/p/tikiwiki/code/branches/15.x/|branches/15.x] |__Security and bug fixes. __ Backport 18.x. Previous Stable LTS|[https://svn.code.sf.net/p/tikiwiki/code/branches/12.x/|branches/12.x]|__Only security fixes and translations. __ from 15.x. ((Experimental branches))|[https://svn.code.sf.net/p/tikiwiki/code/branches/experimental/|many]|All developments for things that are not stable enough yet or just intended as proof of concept before the real work starts. These branches will never become a released branch directly, the author of the experimental branch must move the functionality in the Dev branch when it's ready.|| |
+ | Please be extra careful about backporting changes to the database schema. Please see: ((Database Schema Upgrade)) |
- | * The "security-only" of the LTS period is intended for security fixes, but could include a few bug fixes as well ** We will review security vulnerabilities reported to the ** feature. *** If the included code doesn't have a for that version * What if a security vulnerability requires major code changes, that are not for LTS? ** We'll disable the feature via , or upgrade. * The documentation at doc.tiki.org is kept up to date for more recent versions, so expect to see there some documentation about features not available in your Tiki |
+ | Please also see: ((tw:Versions)) and ((Git Workflow)). |
- | * Commits to LTS must have been developed and tested previously on higher branches (at least trunk/master) unless they do not apply there (for example * The community will handle merges from stable to dev, with help from a merging script during ((Semi-automatic merging period ) * On stable branches, __try to avoid any changes to the database as this complicates )) * If you must change the English version (but )) * If we are close release manager]. * There are some things that are black and white and there are many shades of gray. In case of doubt, ask on the ( Dev Mailing List)) * https://trunkbaseddevelopment |
+ | Sometimes, shared feature branches can be created for major things that are not stable enough yet, and require multiple developers to collaborate over a long period. These branches will never become a released branch directly. |
- | __There are no more planned releases |
+ | For everything else, the author of the branch should create a [https://gitlab.com/help/user/project/merge_requests/index.md|Merge Request] (MR) from his/her personal branch when it's ready (or ((3 rules|even better)), a draft MR before it's ready). |
- | ! |
+ | !! The commit process (the human part) |
- | + | !!! Standard process # Create a merge request (MR) from your personal fork on GitLab against [https://gitlab.com/tikiwiki/tiki|master] # Use GitLab labels to state your intentions on where your commit will . ** Add [https://gitlab.com/tikiwiki/tiki/-/labels|Tiki GitLab labels] such as needsCherryPicksTo26.x, needsCherryPicksTomaster or doNOTBackport as appropriate to the MR. It is each developer's responsibility to make sure these labels are created and removed for their own MR( ). *** You need developer access to create the labels (Guest or Reporter level is not enough). If you do not yet have developer access, or you are an external contributor, add the info in the MR description and someone will do it for you. Please see [https://gitlab.com/tikiwiki/tiki/-/project_members|list developers]. ** Once the initial MR is merged (and all pipelines are green), use ((Git cherry-pick)) to create additional MR(s) to cherry-pick into the appropriate branch(es). The description should link to the initial MR so we it was backported. ** Remove the backport label from the initial MR __once the additional MR(s) have been created__ (do not wait for MRs to be merged in). | |
- | * lphuberdeau marclaporte * * nyloth * pkdille |
+ | To see which merged MRs are still missing a cherry pick, use this GitLab query: https://gitlab.com/tikiwiki/tiki/-/merge_requests?scope=all&state=merged&label_name[]=needsCherryPicksTo%3A%3A* |
- | r13615 : M |
+ | !!! Alternate process In some cases, it's more productive for the developer to work against a branch (not master), and later to cherry pick to higher branches all the way to master. In this case, please use the label "needsCherryPicksTomaster https://gitlab.com/tikiwiki/tiki/-/merge_requests?scope=all&state=merged&label_name[]=needsCherryPicksTo%3A%3Amaster |
- | [FIX] {remarksbox} layout improvements | ||
- | {CODE} | ||
- | + | !! Collaborating | |
- | linesChanged : /templates/tiki /tiki /tiki-parsemode_setup |
+ | # Use MRs. Even core developers use them for their own commits (but frequently self merge them). This has a lot of benefits with little overhead: ## You can make sure you didn't break the CI (Auto-merge and forget ## If you did break something, whoever notices has a place to discuss change ## The commits on a MR can be grouped using arbitrary criterias (regardless of whether or not you intend to ultimately squash it) so it's least disruptive to your flow. include: ### Daily work MR (very useful for seniors fixing a bunch of small independent things without waiting CI constantly) ### MR for collaborating with a specific person(s). Essentially micro-topic branches. Be careful not to force-push too much if you collaborate with other on a MR. ### Draft MR containing your own small feature branch so you can get feedback, or the CI to run. # Don't hesitate to put a MR back in Draft (either the author or the reviewer) ## It doesn't mean it's bad. Rather, it's a signal to reviewers not to re-review this until they are asked to, the MR is out of draft. # When you fixed __something in the code__ on a MR, don't just wait! Do something to inform the reviewer(s): (comment, resolve a thread, take the MR out of draft). MRs are rebased frequently, so the mere fact you pushed code isn t enough information for reviewers to notice. ## When a reviewer comments or asks you a question, please try to answer quickly (so it's fresh in the reviewer's mind). |
- | [FIX] Markup not parsed when switching from normal (wiki) to wysiwyg (html) editors (itemId=1831) | ||
- | {CODE} | ||
- | * This commit changes a desired behavior and may break the release. Changes should be discussed with original authors and any decided changes are to be made in trunk/master * All changes in branches/2.0 need to be safe and fully tested with all related features, including translation and staging. |
+ | !! For MR reviewers |
- | r13612 linesChanged : M /branches/2. /lib/wiki-plugins/wikiplugin_tracker.php M /branches/2. /templates/messu-compose.tpl M /branches/2. /templates/tiki-admin_forums.tpl M /branches/2. /templates/tiki-admin_menu_options.tpl M /branches/2. /templates/tiki-admin_notifications.tpl M /branches/2. /templates/tiki-adminusers.tpl M /branches/2. /templates/tiki-batch_upload.tpl M /branches/2. /templates/tiki-batch_upload_files.tpl M /branches/2. /templates/tiki-list_comments.tpl M /branches/2. /templates/tiki-received_pages.tpl M /branches/2. /templates/tiki-view_tracker.tpl M /branches/2. /templates/tiki-view_tracker_item.tpl M /branches/2. /templates/tracker_item_field_input.tpl |
+ | !!! What to review |
- | var only gets set for people with some reason) {CODE} |
+ | * Does this make sense in Tiki? ** Does it duplicate functionality or code ** If a new library was added: ((How to pick a software library ) ** Will it break things for users? Code quality ** Is the code quality higher than average in Tiki? ** Is there copy-pasted code? * Does it like this was actually tested? ** As Victor wrote: "[https://gitlab.com/tikiwiki/tiki/-/merge_requests/1881#note_1147340658|code reviewers usually do code quality review and note specific areas to improve but we are not compilers. You have to test every place of code you touch before committing]." |
- | * |
+ | !!! Risk assessment: Keep context in mind. |
- | /templates/tiki |
+ | ## For an initial MR ### How is the code (does it improve the general quality of the code (not is it perfect...)? Is it understandable? Does it seem to you the developer may be unaware of a standardized way to do a similar thing in Tiki, etc ### What are the risks? Aside from the obvious "This may lead to bugs", for a MR to master, important are **** Could this result in data corruption ambiguity? **** Could this make the code much harder to refactor the future? ## For MR on a branch ### The trade-offs are different. On a branch, change is inherently more risky than on master. The MR has already been reviewed and approved once, so your question is more "What are the risks related to the difference the two branches". #### During a branch stabilization period, the risk is almost inexistant for most changes. The further master has diverged from the branch, the more thought must be into merging cherry-picks. ### During stabilization periods, it is acceptable for more senior developers to cherry pick directly into the "Next Stable" branch, and remove labels as they do so ### For the same reason, but for a longer period, one can group multiple unrelated cherry-picks in a single branch MR to backport them. |
- | + | !!! How to merge it # Rebase the # Check if the MR should be squashed, and if so, merge the text of the commit message so it represents the . # Merging without pipelines after a rebase. When you are reviewing and merging multiple MRs in a session, this can save a lot of time if you feel you know it won't break the pipeline. Just make sure it's not the last thing you do in the day, so you still have time to fix the pipeline. | |
- | * Simple code enhancements, should be made in trunk/master | ||
- | : |
+ | See also: ((Tools for Merge Request reviewers)) !! When is this supposed to be ? See (( lifecycle)) !! Definition of " -only" phase * The "security-only" of the LTS period is intended for security fixes, but could include few bug fixes as well. ** We will review security vulnerabilities reported to the (tw:Security Team)) ** Publish a or a way to deactivate the feature. *** If the included doesn't have a patch for that version * What if a security vulnerability requires major code , that are not suitable for LTS? ** We'll disable the feature via ((doc:System Configuration)) so you can can choose to use it knowing the risks decide not to use it, or upgrade. * The documentation at doc.tiki.org is kept up to date for more recent versions, so expect see there some documentation features not available in your Tiki. !! Other notes * If you're working on ((Cypht)) Webmail, please see https://github.com/cypht-org/cypht/wiki Lifecycle and ((How to upgrade Cypht within Tiki via Composer)) * If you must change the English version (but are not changing the meaning and so the translations are still valid, please use ((Mass spelling correction)). If you can' use that, just add to ((Pending text corrections)) * If we are close to a release, and you have a change with a risk of regression, try to consult the ((tw:Release Roles|release manager)). * There are some things that are black and white and there are many shades of gray In case of doubt, ask on the ((Dev Mailing List)) * https://trunkbaseddevelopment.com/ |
- | * |
+ | !! Related * ((Commit Tags) * ((Git Workflow ) * ((Commit )) * (( guidelines)) * ((Git cherry-pick)) |
Alias names of this page: | Alias names of this page: | ||
- | (alias(WhereToCommit)) | + | (alias(WhereToCommit)) | (alias(Where)) |