Skip to content

Commit 2454970

Browse files
committed
BreakingChanges: early adopter option
Discussing the desire to make breaking changes, declaring that breaking changes are made at a certain version boundary, and recording these decisions in this document, are necessary but not sufficient. We need to make sure that we can implement, test, and deploy such impactful changes. Earlier we considered to guard the breaking changes with a run-time check of the `feature.git<version>` configuration to allow brave users and developers to opt into them as early adoptors. But the engineering cost to support such a run-time switch, covering new and disappearing git subcommands and how "git help" would adjust the documentation to the run-time switch, would be unrealistically high to be worth it. Formalize the mechanism based on a compile-time switch to allow early adopters to opt into the breaking change in a version of Git before the planned version for the breaking change. Signed-off-by: Junio C Hamano <[email protected]>
1 parent 6531f31 commit 2454970

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

Documentation/BreakingChanges.txt

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,29 @@ over time. If circumstances change, an earlier decision to deprecate or change
5959
something may need to be revisited from time to time. So do not take items on
6060
this list to mean "it is settled, do not waste our time bringing it up again".
6161

62+
== Procedure
63+
64+
Discussing the desire to make breaking changes, declaring that breaking
65+
changes are made at a certain version boundary, and recording these
66+
decisions in this document, are necessary but not sufficient.
67+
Because such changes are expected to be numerous, and the design and
68+
implementation of them are expected to span over time, they have to
69+
be deployable trivially at such a version boundary.
70+
71+
The breaking changes MUST be guarded with the a compile-time switch,
72+
WITH_BREAKING_CHANGES, to help this process. When built with it,
73+
the resulting Git binary together with its documentation would
74+
behave as if these breaking changes slated for the next big version
75+
boundary are already in effect. We may also want to have a CI job
76+
or two to exercise the work-in-progress version of Git with these
77+
breaking changes.
78+
79+
6280
== Git 3.0
6381

6482
The following subsections document upcoming breaking changes for Git 3.0. There
65-
is no planned release date for this breaking version yet.
83+
is no planned release date for this breaking version yet. The early
84+
adopter configuration used for changes for this release is `feature.git3`.
6685

6786
Proposed changes and removals only include items which are "ready" to be done.
6887
In other words, this is not supposed to be a wishlist of features that should

0 commit comments

Comments
 (0)