Project setting to keep the legacy inner Git conversion
Given the advancement of the last missing HGitaly2 feature, we are on the verge of switching the :hg_without_git
feature flag to true
by default, which means that Heptapod 0.37 and onwards will not perform the inner conversion to Git (again, by default, and for native Mercurial projects only).
There are some use-cases that still require the Git conversion, though. The most famous one in pushing to an external Git service (see #125 (closed)). There is a separate issue (#355) to fulfill it directly, by performing the conversion as part of the asynchronous push. Yet there could be use cases that we are not aware of, especially when the migration to native gets more usage. Also, even with #355, we could need to distinguish between a "legacy" mode (keeping Git branch names such as branch/default
and topic/default/feature
) and something more in line with common Git practices. In other words, this is a whole can of worms.
To ensure that we take swiftly this step in the road to native Mercurial, we will introduce a new Project Repository setting that
- will be automatically set to true if the project has Git push mirrors (done by a "backfill" background migration)
- will be available to users
In any case, the setting will be considered only if the feature flags would otherwise prescribe not to convert to Git.
In order to minimize the resting points in upgrade paths, the new setting and its backfill migration will be introduced in the database as a special 0.35.1 release (Heptapod 0.35 is already a resting point because GitLab 15.4 is). For users already on Heptapod 0.36, we will also include it in some 0.36.z release.