-
Couldn't load subscription status.
- Fork 71
Checklist for testing and merging a PR
- A manual commit bumping the "version" string in
*.opam.lockedused to be necessary (similarly to1f73141),
within the Release-PR branch, or just after the previous release inmasterbranch. - This is now unneeded since
release-pleasev13.5.0.
- install the
git-prandgit-prwextra Git commands; -
cdin thelearn-ocamlrepository (in the sequel, we assume the remoteoriginis bound to URL[email protected]:ocaml-sf/learn-ocaml.git); - run
git pr 200 origin -fto force-fetch a read-only branch for PR #200,
orgit prw 200 origin -fto get a read-and-write branch, i.e.,git pushwill land in the PR-author's work branch.
- The CI checks must be green.
- Non-trivial PRs should have been tested locally (see the Guidelines above).
- New user-facing features should be documented within the PR, in directory docs/.
- The commits messages should follow the Conventional Commits guidelines.
This is necessary for properly generating the Release-Notes using release-please.
See the related documentation directly in CONTRIBUTING.md.
There are 3 PR merging strategies in GitHub (Merge, Merge/Squash, Merge/Rebase).
But for merging PRs, we should rather use Merge or Merge/Squash:
-
Mergeis always a good, standard choice; -
Merge/Squashis especially fine if we don't want to keep the commit history of the PR branch or if the PR already contains only one commit; -
whereas
Merge/Rebasehas two drawbacks:- there is no mention anywhere of the PR number in the generated commits messages;
- and the resulting commits are not GPG-signed (cf. the missing
Verifiedbadge on those commits).
Actually,
Merge/Rebasemight be handy in the specific case of "nested PR merging" (namely: we wouldMerge/Rebasean intermediate PR into a feature branch (for which the intermediate PR number would be useless), then create a subsequent PR, and finallyMergeit from the feature branch intoto themasterbranch itself).
One of the aims of this paragraph is to refine/relax the constraint above "The commits messages should follow the Conventional Commits guidelines."
-
First, if
Merge/Squashlooks a sensible choice
(e.g. if the PR contains only one commit, or only focuses on one topic for which keeping the commits apart does not sound necessary),
then the conventional commit constraint is lifted for the PR contributor,
given the Maintainer can easily refine the squashed-commit message, selecting an appropriate commit type. -
Note by the way that if two pending PRs contain common commits
(e.g. if the second PR has been created on top of the first one),
then merging the first PR withMerge/Squashwould always create a conflict with the second PR,
while a regularMergewould not have this drawback. -
Next, if
Mergelooks a better choice
(e.g. if the PR contains several independent commits that have to be kept for clarity),- then the Merge commit message does not matter (the Maintainer could just select the default one);
- but each individual commit of the PR should be relevant:
for instance, partially-implemented feature commits, followed by fixups commits (even with a prefixfix:) are not acceptable, given the changelog will ultimately display only one commit for thefeat: Feature title, so this one should be complete, unless of course if it can be split in several sensible atomic commits.
-
Finally, note that for simplicity,
Release PRsshould rather be integrated usingMerge/Squash. See e.g. PR #442.
A few useful labels
- good first issue (automatically appears on https://github.com/ocaml-sf/learn-ocaml/contribute)
- needs: merge of dependency (in case we worry about some PR that should not be merged before other merges, we can add this label)