The short version:
- Patches should have a good summary line for first line of commit message
- Patch series should be sent primarily as merge requests or to the Google Group at <hg-git@googlegroups.com>.
- Patch needs to do exactly one thing.
- The test suite passes, as enforced by the continuous integration on Heptapod.
We use a variant of Mercurial's own contribution guidelines. Key differences are (by rule number):
- 2
- You can cross-reference Heptapod issues in the
#NNN
format.
To submit a Merge Request, please ask for Developer rights using the Request access link. We usually respond to that relatively quickly, but you can expedite the request by sending a mail to the list. Please note that we generally do a quick cursory check of people requesting access to ensure that there's a human at the other end. Then, following the instructions of the Heptapod tutorial should be enough.
If you do a merge request, we're still going to expect you to provide a clean history, and to be willing to rework history so it's clean before we push the "merge" button. If you're uncomfortable with history editing, we'll clean up the commits before merging.
We generally follow semantic versioning guidelines: Major releases,
that is x.0.0
, are for significant changes to user experience,
especially new features or changes likely to affect workflow. Minor
releases, x.y.0
, are for less significant changes or adjustments
to user experience, including bug fixes, but they needn't retain
_exact_ compatibility. Patch releases, x.y.z
, are exclusively for
breaking bugs and compatibility.
We can drop compatibility for unsupported versions of Python, Mercurial or Dulwich in anything but patch releases.
There is no fixed policy for which versions of Mercurial and Dulwich we support, but as loose guideline, versions prior to the version that ships in the latest Ubuntu LTS release may be dropped if they are older than a year and interfere with new development. Unfortunately, due to dropping support for Python 2.7, hg-git does not work on any shipped Ubuntu LTS, as-is, since 20.04 used 5.3.1 on Python 2.7, but only shipped Dulwich for Python 3.6. Once 22.04 is out, that will be our bare minimum.
We commit to supporting any version of Python at least as long as it
receives security updates from python.org
, unless it conflicts
with the requirements of a supported Ubuntu LTS.
The authoritative source for dependency requirements is
.gitlab-ci.yml
, although setup.cfg
and hggit/__init__.py
also list them.