@@ -7,6 +7,73 @@ Here are some guidelines for contributing back to this
7
7
project. There is also a link:MyFirstContribution.html[step-by-step tutorial]
8
8
available which covers many of these same guidelines.
9
9
10
+ [[patch-flow]]
11
+ === A typical life cycle of a patch series
12
+
13
+ To help us understand the reason behind various guidelines given later
14
+ in the document, first let's understand how the life cycle of a
15
+ typical patch series for this project goes.
16
+
17
+ . You come up with an itch. You code it up. You do not need any
18
+ pre-authorization from the project to do so.
19
+ +
20
+ Your patches will be reviewed by other contributors on the mailing
21
+ list, and the reviews will be done to assess the merit of various
22
+ things, like the general idea behind your patch (including "is it
23
+ solving a problem worth solving in the first place?"), the reason
24
+ behind the design of the solution, and the actual implementation.
25
+ The guidelines given here are there to help your patches by making
26
+ them easier to understand by the reviewers.
27
+
28
+ . You send the patches to the list and cc people who may need to know
29
+ about the change. Your goal is *not* necessarily to convince others
30
+ that what you are building is good. Your goal is to get help in
31
+ coming up with a solution for the "itch" that is better than what
32
+ you can build alone.
33
+ +
34
+ The people who may need to know are the ones who worked on the code
35
+ you are touching. These people happen to be the ones who are
36
+ most likely to be knowledgeable enough to help you, but
37
+ they have no obligation to help you (i.e. you ask them for help,
38
+ you don't demand). +git log -p {litdd} _$area_you_are_modifying_+ would
39
+ help you find out who they are.
40
+
41
+ . You get comments and suggestions for improvements. You may even get
42
+ them in an "on top of your change" patch form. You are expected to
43
+ respond to them with "Reply-All" on the mailing list, while taking
44
+ them into account while preparing an updated set of patches.
45
+
46
+ . Polish, refine, and re-send your patches to the list and to the people
47
+ who spent their time to improve your patch. Go back to step (2).
48
+
49
+ . While the above iterations improve your patches, the maintainer may
50
+ pick the patches up from the list and queue them to the `seen`
51
+ branch, in order to make it easier for people to play with it
52
+ without having to pick up and apply the patches to their trees
53
+ themselves. Being in `seen` has no other meaning. Specifically, it
54
+ does not mean the patch was "accepted" in any way.
55
+
56
+ . When the discussion reaches a consensus that the latest iteration of
57
+ the patches are in good enough shape, the maintainer includes the
58
+ topic in the "What's cooking" report that are sent out a few times a
59
+ week to the mailing list, marked as "Will merge to 'next'." This
60
+ decision is primarily made by the maintainer with help from those
61
+ who participated in the review discussion.
62
+
63
+ . After the patches are merged to the 'next' branch, the discussion
64
+ can still continue to further improve them by adding more patches on
65
+ top, but by the time a topic gets merged to 'next', it is expected
66
+ that everybody agrees that the scope and the basic direction of the
67
+ topic are appropriate, so such an incremental updates are limited to
68
+ small corrections and polishing. After a topic cooks for some time
69
+ (like 7 calendar days) in 'next' without needing further tweaks on
70
+ top, it gets merged to the 'master' branch and wait to become part
71
+ of the next major release.
72
+
73
+ In the following sections, many techniques and conventions are listed
74
+ to help your patches get reviewed effectively in such a life cycle.
75
+
76
+
10
77
[[choose-starting-point]]
11
78
=== Choose a starting point.
12
79
@@ -192,8 +259,9 @@ reasons:
192
259
which case, they can explain why they extend your code to cover
193
260
files, too).
194
261
195
- The goal of your log message is to convey the _why_ behind your
196
- change to help future developers.
262
+ The goal of your log message is to convey the _why_ behind your change
263
+ to help future developers. The reviewers will also make sure that
264
+ your proposed log message will serve this purpose well.
197
265
198
266
The first line of the commit message should be a short description (50
199
267
characters is the soft limit, see DISCUSSION in linkgit:git-commit[1]),
@@ -562,55 +630,6 @@ repositories.
562
630
563
631
Patches to these parts should be based on their trees.
564
632
565
- [[patch-flow]]
566
- == An ideal patch flow
567
-
568
- Here is an ideal patch flow for this project the current maintainer
569
- suggests to the contributors:
570
-
571
- . You come up with an itch. You code it up.
572
-
573
- . Send it to the list and cc people who may need to know about
574
- the change.
575
- +
576
- The people who may need to know are the ones whose code you
577
- are butchering. These people happen to be the ones who are
578
- most likely to be knowledgeable enough to help you, but
579
- they have no obligation to help you (i.e. you ask for help,
580
- don't demand). +git log -p {litdd} _$area_you_are_modifying_+ would
581
- help you find out who they are.
582
-
583
- . You get comments and suggestions for improvements. You may
584
- even get them in an "on top of your change" patch form.
585
-
586
- . Polish, refine, and re-send to the list and the people who
587
- spend their time to improve your patch. Go back to step (2).
588
-
589
- . The list forms consensus that the last round of your patch is
590
- good. Send it to the maintainer and cc the list.
591
-
592
- . A topic branch is created with the patch and is merged to `next`,
593
- and cooked further and eventually graduates to `master`.
594
-
595
- In any time between the (2)-(3) cycle, the maintainer may pick it up
596
- from the list and queue it to `seen`, in order to make it easier for
597
- people to play with it without having to pick up and apply the patch to
598
- their trees themselves.
599
-
600
- [[patch-status]]
601
- == Know the status of your patch after submission
602
-
603
- * You can use Git itself to find out when your patch is merged in
604
- master. `git pull --rebase` will automatically skip already-applied
605
- patches, and will let you know. This works only if you rebase on top
606
- of the branch in which your patch has been merged (i.e. it will not
607
- tell you if your patch is merged in `seen` if you rebase on top of
608
- master).
609
-
610
- * Read the Git mailing list, the maintainer regularly posts messages
611
- entitled "What's cooking in git.git" giving
612
- the status of various proposed changes.
613
-
614
633
== GitHub CI[[GHCI]]
615
634
616
635
With an account at GitHub, you can use GitHub CI to test your changes
0 commit comments