Further configurable defaults for "Squash commits" option at group and instance levels
Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.
Continuation Feature
This is a continuation of #17613 (closed)
Problem to solve
- Previously, a setting was implemented to default Squash Commits at the project level. This is a fantastic solution to support various workflows, keep histories clean and functional, and reduce human error. The issue is the original implementation really only supports simple use-cases of one or a few repositories, under very simple development environments.
- To support far more use-cases, e.g. microservices, multi-program instances, etc, we want to have default options for Squash Commits at both the group level and the instance level.
- Note that if an instance level default is set, and a group or project is created based on instance defaults, the group or project should be individually modifiable after creation.
Documentation
- Squash commits information: https://docs.gitlab.com/user/project/merge_requests/squash_and_merge/#squash-commits-options
Workarounds
- Default options could be done through project templates
- Project templates: https://docs.gitlab.com/user/project/pages/getting_started/pages_new_project_template/
- Though this workaround exists, it's very much not ideal and very prone to human error, and requires more IT maintenance. There's no guarantee new projects will be created from the right template, or that it will be remembered.
Proposal
- Requesting this feature be implemented similar options for the project-level defaults, but be available for group level and instance level. Here's a copy-paste of the options:
-
Never
(do not show the squash option, do not squash) -
Allowed
(default, current behavior, show the squash option, unchecked but user can enable) -
Enabled
(show the squash option, checked but user can disable) -
Always
(show the squash option, check and the user cannot disable)
-
- This feature should only affect initial creation of groups and projects. For instance, a newly created project should start with configuration based on the instance or parent group, but then be individually modifiable.
Edited by 🤖 GitLab Bot 🤖