Loading...
 

History: Where to commit

Comparing version 352 with version 375

Lines: 1-21Lines: 1-24
 {DIV(class="lead well")}A very important decision is __where to commit__?: LTS? Stable? Dev? {DIV} {DIV(class="lead well")}A very important decision is __where to commit__?: LTS? Stable? Dev? {DIV}
 {BOX(title="General principle" align="left")} {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} +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 !! Where to commit
 Commit status and order for each open branch: Commit status and order for each open branch:
 {FANCYTABLE(head="__Name__ |__Currently this is git branch__| __What is allowed in this branch__ | __Before commiting here, first commit to__ ")} {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)

__Next Stable__ | [https://gitlab.com/tikiwiki/tiki/-/tree/26.x|branches/26.x] | 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/25.x|branches/25.x] | Bug fixes and minor safe enhancements | Dev, Next Stable (if

)
__Previous Stable__ | None | Exists only until .1 release of Current Stable has been released. Then EoL or becomes the Previous Stable LTS | DevStable
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
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
+__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 (if

)
__Previous Stable__ | None | Exists only until .1 release of Current Stable has been released. Then EoL or becomes the Previous Stable LTS | DevStable
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
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: Legend:
 * STS: Standard Term Support * STS: Standard Term Support
 * LTS: Long Term Support * LTS: Long Term Support
-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 (don't start a major refactoring just before a release). Please see: ((Freeze and Slush)) +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)).



Please be extra careful about backporting changes to the database schema. Please see: ((Database Schema Upgrade
))
 Please also see: ((tw:Versions)) and ((Git Workflow)). Please also see: ((tw:Versions)) and ((Git Workflow)).
Lines: 23-74Lines: 26-101
 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. 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.
-For everything else, the author of the branch should create a [https://gitlab.com/help/user/project/merge_requests/index.md|Merge Request] from his personal branch when it's ready (or a Draft MR before it's ready if you prefer). +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) !! The commit process (the human part)
-# Create a merge request from your personal fork on gitlab against the master branch

# Use gitlab labels to state your intentions on where your commit will go.


** Add [https://gitlab.com/tikiwiki/tiki/-/labels|Tiki GitLab labels] such as needsCherryPicksTo26.x, needsCherryPicksTomaster or doNOTBackport as appropriate to the Merge request. It is each developer's responsibility to make sure these labels are created and removed for their own merge request(s

.
*** You need developper access to create the labels. If you do not yet have developer access, or you are an external contributor, someone will do it

you.
** Once the initial merge request is merged (and all pipelines are green), use ((Git cherry-pick)) to create additional MR(s) to cherry-pick into the appropriate branches. The description should link to the initial MR
+!!! 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 know 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). ** 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).
 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* 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*
-!! Collaborating on MR +!!! 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
-# Don't hesitate to put MR back in draft

## It doesn't mean this sucks, it's a signal to reviewers not to re-review this until they are asked to, or the MR is out of draft


#
# When you fixed something in the CODE on a MR, don't just wait, do something so the reviewer knows (comment, resolve a thread, thake the MR out of draft). MR are rebased frequently, so the mere fact you pushed code isn't enough information for reviewers to

.
## When a reviewer comments or asks you a question, please try to answer quickly (so it's fresh in the reviewer's mind)
+

!!




# Use MRs. Even core developers use them for their own commits (but frequently self merge them). This has a lot of benefits with

overhead:
## You can make sure you didn't break the CI (Auto-

and forget)
## If you did break something, whoever notices has a

to discuss the 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

. Examples include:
### Daily work MR (very useful for seniors fixing a bunch of small independent

without waiting for CI constantly)
### MR for collaborating with a specific person(s). Essentially micro-topic branches. Be careful not to force-push too much if you

with other people on a MR.
### Draft MR containing your own small feature branch so you can get feedback

or force the CI to run.
#
Don't hesitate to put a MR back in Draft

(either as 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

, or 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

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).
 !! For MR reviewers !! For MR reviewers
-We want to strike a balance between risk and unnecessary bureaucracy. It is everyone's responsibility to exercice judgement in this process. But some general guidelines: +!!! What to review
-# Use merge requests. Even core developer use merge requests 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 CI (Auto-merge and forget


## If you did break something, whoever notices has a place to discuss

change
## The commits on MR can be grouped using arbitrary criterias (regardless on whether or not you intend to ultimately squash it) so it's least so it's least disruptive to your flow.

include:
### Daily work MR (very useful for 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 merge requests containing your own small feature branch so you can get feedback,

force CI to run.
#

reviewers keep context in mind.


# For an initial merge request
### 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 developper may be unaware of a standardised way to do

similar thing in tiki, etc.
### What are the risks. Aside from the obvious "This may lead to bugs", in master important questions are could this result in data corruption/ambiguity. Could this make the code much harder to refactor in the future.
+* 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


you touch before committing]
."

!!!


assessment: Keep context

mind.

## 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

way to do a similar thing in Tiki, etc.
### What are the risks? Aside from the obvious "This may lead to

", for a MR to master, important questions are

**** Could
this result in data corruption/ambiguity?
****
Could this make the code much harder to refactor in the future?
 ## For a MR on a branch ## For a MR on a branch
-### The trade-offs are different. On a branch, change is more inherently dangerous 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 between 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 put into merging cherry-picks.
+### 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 between 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 put 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 ### 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. ### For the same reason, but for a longer period, one can group multiple unrelated cherry-picks in a single branch MR to backport them.
-# Merging without pipelines after a rebase. When you are reviewing and merging multiple MR 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. 
-See also: ((Guidelines for Merge Request reviewers)) +!!! 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



pipeline.


See also: ((Tools for Merge Request reviewers))
 !! When is this supposed to be released? !! When is this supposed to be released?
-See ((Version lifecycle)) +See ((Version lifecycle))
 !! Definition of "security-only" phase !! Definition of "security-only" phase
Lines: 82-87Lines: 109-113
 !! Other notes !! Other notes
-* Commits to LTS must have been developed and tested previously on higher branches (at least master) unless they do not apply there (for example, a fix to a feature that was removed later). See [Quality+Team#What_will_be_considered|here] for more info.

*
On stable branches, __try to avoid any changes to the database as this complicates things and increases possibilities for errors.__ If you must, please see: ((Database Schema Upgrade))
+* 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't use that, just add to ((Pending text corrections))  * 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))
 * 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)). * 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)).

History

Advanced
Information Version
08 Apr 24 12:31 GMT-0000 Benoit Grégoire 375
04 Jan 24 22:05 GMT-0000 Benoit Grégoire 374
03 Oct 23 09:51 GMT-0000 Lupundu Kalekwa Yan 373
09 Aug 23 23:43 GMT-0000 Marc Laporte Cypht 372
22 Jul 23 23:11 GMT-0000 Marc Laporte Clarifying who has powers 371
20 Jul 23 16:20 GMT-0000 Benoit Grégoire 370
18 Jul 23 21:09 GMT-0000 Benoit Grégoire Merge advice to reviewer 369
08 Jul 23 16:17 GMT-0000 Marc Laporte Alternate process 368
08 Jul 23 04:48 GMT-0000 Marc Laporte Introduce the abbreviation a few times, and then use it as much as possible 367
08 Jul 23 04:38 GMT-0000 Marc Laporte Database is important, so putting higher on page 366
08 Jul 23 04:33 GMT-0000 Marc Laporte Removing as this is implicit from above 365
08 Jul 23 04:31 GMT-0000 Marc Laporte cleaner 364
08 Jul 23 04:20 GMT-0000 Marc Laporte 363
08 Jul 23 04:18 GMT-0000 Marc Laporte 362
08 Jul 23 04:16 GMT-0000 Marc Laporte 361
08 Jul 23 04:12 GMT-0000 Marc Laporte 360
08 Jul 23 04:10 GMT-0000 Marc Laporte 359
08 Jul 23 04:06 GMT-0000 Marc Laporte cleanup 358
08 Jul 23 03:56 GMT-0000 Marc Laporte 357
08 Jul 23 03:46 GMT-0000 Marc Laporte 356
08 Jul 23 03:25 GMT-0000 Marc Laporte 355
08 Jul 23 03:18 GMT-0000 Marc Laporte 354
08 Jul 23 03:17 GMT-0000 Marc Laporte 353
08 Jul 23 03:17 GMT-0000 Marc Laporte 352
08 Jul 23 03:14 GMT-0000 Marc Laporte 351

Keywords

The following is a list of keywords that should serve as hubs for navigation within the Tiki development and should correspond to documentation keywords.

Each feature in Tiki has a wiki page which regroups all the bugs, requests for enhancements, etc. It is somewhat a form of wiki-based project management. You can also express your interest in a feature by adding it to your profile. You can also try out the Dynamic filter.

Accessibility (WAI & 508)
Accounting
Administration
Ajax
Articles & Submissions
Backlinks
Banner
Batch
BigBlueButton audio/video/chat/screensharing
Blog
Bookmark
Browser Compatibility
Calendar
Category
Chat
Comment
Communication Center
Consistency
Contacts Address book
Contact us
Content template
Contribution
Cookie
Copyright
Credits
Custom Home (and Group Home Page)
Database MySQL - MyISAM
Database MySQL - InnoDB
Date and Time
Debugger Console
Diagram
Directory (of hyperlinks)
Documentation link from Tiki to doc.tiki.org (Help System)
Docs
DogFood
Draw -superseded by Diagram
Dynamic Content
Preferences
Dynamic Variable
External Authentication
FAQ
Featured links
Feeds (RSS)
File Gallery
Forum
Friendship Network (Community)
Gantt
Group
Groupmail
Help
History
Hotword
HTML Page
i18n (Multilingual, l10n, Babelfish)
Image Gallery
Import-Export
Install
Integrator
Interoperability
Inter-User Messages
InterTiki
jQuery
Kaltura video management
Kanban
Karma
Live Support
Logs (system & action)
Lost edit protection
Mail-in
Map
Menu
Meta Tag
Missing features
Visual Mapping
Mobile
Mods
Modules
MultiTiki
MyTiki
Newsletter
Notepad
OS independence (Non-Linux, Windows/IIS, Mac, BSD)
Organic Groups (Self-managed Teams)
Packages
Payment
PDF
Performance Speed / Load / Compression / Cache
Permission
Poll
Profiles
Quiz
Rating
Realname
Report
Revision Approval
Scheduler
Score
Search engine optimization (SEO)
Search
Security
Semantic links
Share
Shopping Cart
Shoutbox
Site Identity
Slideshow
Smarty Template
Social Networking
Spam protection (Anti-bot CATPCHA)
Spellcheck
Spreadsheet
Staging and Approval
Stats
Survey
Syntax Highlighter (Codemirror)
Tablesorter
Tags
Task
Tell a Friend
Terms and Conditions
Theme
TikiTests
Federated Timesheets
Token Access
Toolbar (Quicktags)
Tours
Trackers
TRIM
User Administration
User Files
User Menu
Watch
Webmail and Groupmail
WebServices
Wiki History, page rename, etc
Wiki plugins extends basic syntax
Wiki syntax text area, parser, etc
Wiki structure (book and table of content)
Workspace and perspectives
WYSIWTSN
WYSIWYCA
WYSIWYG
XMLRPC
XMPP




Useful Tools