Skip to content

Commit 7a7aad1

Browse files
authored
Document the Patch Tree Approach. (#281)
1 parent b5bed64 commit 7a7aad1

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

CONTRIBUTING.md

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,22 @@ repository](https://github.com/python/cpython). macOS and iOS are both
2323
officially supported Python platforms, and the code distributed by this project
2424
for those platforms is unmodified from the official repository.
2525

26-
Changes to to support other platforms can be included in this PR, but they must
27-
also be submitted as a pull request against the `MAJOR.MINOR-patched` branch on
28-
[the `freakboy3742` fork of the CPython
26+
Changes to to support other platforms can be included in a PR for this repo, but
27+
they must also be submitted as a pull request against the `MAJOR.MINOR-patched`
28+
branch on [the `freakboy3742` fork of the CPython
2929
repo](https://github.com/freakboy3742/cpython). This is required to ensure that
3030
any contributed changes can be easily reproduced in future patches as more
3131
changes are made.
32+
33+
Note that the `MAJOR.MINOR-patched` branch of that fork is maintained in the format
34+
of a *patch tree*, which is a branch that has an entirely linear sequence of
35+
commits applied on top of another branch (in the case of the fork, `MAJOR.MINOR`),
36+
each of which adding a new feature. Therefore, bug fixes to the patches applied
37+
*will* be merged, but their changes gets squashed into the commit applying the
38+
feature. Feature additions to the patch will be squashed into a single commit,
39+
and then merged.
40+
41+
This also means that if another contributor on the fork gets a pull request merged
42+
into the fork, you must *rebase*, not merge, your changes on top of the newly pulled
43+
`MAJOR.MINOR-patched` branch, since the "history" of a patch tree branch might
44+
change in a way that is incompatible with merge commits.

0 commit comments

Comments
 (0)