mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-23 14:51:27 +02:00
[DOC] update the README file to reflect new naming rules for patches
Those will be in effect after 1.5-dev7 is released.
This commit is contained in:
parent
69c0117ac2
commit
9a639a13cd
205
README
205
README
@ -194,10 +194,24 @@ changes have not been discussed first.
|
|||||||
|
|
||||||
The proper place to discuss your changes is the HAProxy Mailing List. There are
|
The proper place to discuss your changes is the HAProxy Mailing List. There are
|
||||||
enough skilled readers to catch hazardous mistakes and to suggest improvements.
|
enough skilled readers to catch hazardous mistakes and to suggest improvements.
|
||||||
You can subscribe to it by sending an empty e-mail at the following address :
|
I trust a number of them enough to merge a patch if they say it's OK, so using
|
||||||
|
the list is the fastest way to get your code reviewed and merged. You can
|
||||||
|
subscribe to it by sending an empty e-mail at the following address :
|
||||||
|
|
||||||
haproxy+subscribe@formilux.org
|
haproxy+subscribe@formilux.org
|
||||||
|
|
||||||
|
If you have an idea about something to implement, *please* discuss it on the
|
||||||
|
list first. It has already happened several times that two persons did the same
|
||||||
|
thing simultaneously. This is a waste of time for both of them. It's also very
|
||||||
|
common to see some changes rejected because they're done in a way that will
|
||||||
|
conflict with future evolutions, or that does not leave a good feeling. It's
|
||||||
|
always unpleasant for the person who did the work, and it is unpleasant for me
|
||||||
|
too because I value people's time and efforts. That would not happen if these
|
||||||
|
were discussed first. There is no problem posting work in progress to the list,
|
||||||
|
it happens quite often in fact. Also, don't waste your time with the doc when
|
||||||
|
submitting patches for review, only add the doc with the patch you consider
|
||||||
|
ready to merge.
|
||||||
|
|
||||||
If your work is very confidential and you can't publicly discuss it, you can
|
If your work is very confidential and you can't publicly discuss it, you can
|
||||||
also mail me directly about it, but your mail may be waiting several days in
|
also mail me directly about it, but your mail may be waiting several days in
|
||||||
the queue before you get a response.
|
the queue before you get a response.
|
||||||
@ -226,61 +240,180 @@ donations :
|
|||||||
http://haproxy.1wt.eu/contrib.html
|
http://haproxy.1wt.eu/contrib.html
|
||||||
|
|
||||||
Note to contributors: it's very handy when patches comes with a properly
|
Note to contributors: it's very handy when patches comes with a properly
|
||||||
formated subject. Try to put one of the following words between brackets
|
formated subject. There are 3 criteria of particular importance in any patch :
|
||||||
to indicate the importance of the patch followed if possible by a single
|
|
||||||
word indicating what subsystem is affected, then by a short description :
|
|
||||||
|
|
||||||
[BUG] fix for a minor or medium-level bug. When a few of these ones are
|
- its nature (is it a fix for a bug, a new feature, an optimization, ...)
|
||||||
available, a new maintenance release is emitted.
|
- its importance, which generally reflects the risk of merging/not merging it
|
||||||
|
- what area it applies to (eg: http, stats, startup, config, doc, ...)
|
||||||
|
|
||||||
[CRITICAL] medium-term reliability or security is at risk, an upgrade is
|
It's important to make these 3 criteria easy to spot in the patch's subject,
|
||||||
absolutely required. A maintenance release may be emitted even if
|
because it's the first (and sometimes the only) thing which is read when
|
||||||
only one of these bugs are fixed.
|
reviewing patches to find which ones need to be backported to older versions.
|
||||||
|
|
||||||
[CLEANUP] code cleanup, silence of warnings, etc... theorically no impact.
|
Specifically, bugs must be clearly easy to spot so that they're never missed.
|
||||||
|
Any patch fixing a bug must have the "BUG" tag in its subject. Most common
|
||||||
|
patch types include :
|
||||||
|
|
||||||
|
- BUG fix for a bug. The severity of the bug should also be indicated
|
||||||
|
when known. Similarly, if a backport is needed to older versions,
|
||||||
|
it should be indicated on the last line of the commit message. If
|
||||||
|
the bug has been identified as a regression brought by a specific
|
||||||
|
patch or version, this indication will be appreciated too. New
|
||||||
|
maintenance releases are generally emitted when a few of these
|
||||||
|
patches are merged.
|
||||||
|
|
||||||
|
- CLEANUP code cleanup, silence of warnings, etc... theorically no impact.
|
||||||
These patches will rarely be seen in stable branches, though they
|
These patches will rarely be seen in stable branches, though they
|
||||||
may appear when they remove some annoyance.
|
may appear when they remove some annoyance or when they make
|
||||||
|
backporting easier. By nature, a cleanup is always minor.
|
||||||
|
|
||||||
[MINOR] minor change, very low risk of impact. It is often the case for
|
- REORG code reorganization. Some blocks may be moved to other places,
|
||||||
code additions that don't touch live code.
|
some important checks might be swapped, etc... These changes
|
||||||
|
always present a risk of regression. For this reason, they should
|
||||||
|
never be mixed with any bug fix nor functional change. Code is
|
||||||
|
only moved as-is. Indicating the risk of breakage is highly
|
||||||
|
recommended.
|
||||||
|
|
||||||
[MEDIUM] medium risk, may cause unexpected regressions of low importance or
|
- BUILD updates or fixes for build issues. Changes to makefiles also fall
|
||||||
which may quickly be discovered.
|
into this category. The risk of breakage should be indicated if
|
||||||
|
known. It is also appreciated to indicate what platforms and/or
|
||||||
|
configurations were tested after the change.
|
||||||
|
|
||||||
[MAJOR] major risk of hidden regression. This happens when I rearrange
|
- OPTIM some code was optimised. Sometimes if the regression risk is very
|
||||||
|
low and the gains significant, such patches may be merged in the
|
||||||
|
stable branch. Depending on the amount of code changed or replaced
|
||||||
|
and the level of trust the author has in the change, the risk of
|
||||||
|
regression should be indicated.
|
||||||
|
|
||||||
|
- RELEASE release of a new version (development or stable).
|
||||||
|
|
||||||
|
- LICENSE licensing updates (may impact distro packagers).
|
||||||
|
|
||||||
|
|
||||||
|
When the patch cannot be categorized, it's best not to put any tag. This is
|
||||||
|
commonly the case for new features, which development versions are mostly made
|
||||||
|
of.
|
||||||
|
|
||||||
|
Additionally, the importance of the patch should be indicated when known. A
|
||||||
|
single upper-case word is preferred, among :
|
||||||
|
|
||||||
|
- MINOR minor change, very low risk of impact. It is often the case for
|
||||||
|
code additions that don't touch live code. For a bug, it generally
|
||||||
|
indicates an annoyance, nothing more.
|
||||||
|
|
||||||
|
- MEDIUM medium risk, may cause unexpected regressions of low importance or
|
||||||
|
which may quickly be discovered. For a bug, it generally indicates
|
||||||
|
something odd which requires changing the configuration in an
|
||||||
|
undesired way to work around the issue.
|
||||||
|
|
||||||
|
- MAJOR major risk of hidden regression. This happens when I rearrange
|
||||||
large parts of code, when I play with timeouts, with variable
|
large parts of code, when I play with timeouts, with variable
|
||||||
initializations, etc... We should only exceptionally find such
|
initializations, etc... We should only exceptionally find such
|
||||||
patches in stable branches.
|
patches in stable branches. For a bug, it indicates severe
|
||||||
|
reliability issues for which workarounds are identified with or
|
||||||
|
without performance impacts.
|
||||||
|
|
||||||
[OPTIM] some code was optimised. Sometimes if the regression risk is very
|
- CRITICAL medium-term reliability or security is at risk and workarounds,
|
||||||
low and the gains significant, such patches may be merged in the
|
if they exist, might not always be acceptable. An upgrade is
|
||||||
stable branch.
|
absolutely required. A maintenance release may be emitted even if
|
||||||
|
only one of these bugs are fixed. Note that this tag is only used
|
||||||
|
with bugs. Such patches must indicate what is the first version
|
||||||
|
affected, and if known, the commit ID which introduced the issue.
|
||||||
|
|
||||||
[DOC] documentation updates or fixes only. No code is affected, no need
|
If this criterion doesn't apply, it's best not to put it. For instance, most
|
||||||
to upgrade. These patches can also be sent right after a new
|
doc updates and most examples or test files are just added or updated without
|
||||||
feature, to document it.
|
any need to qualify a level of importance.
|
||||||
|
|
||||||
[TESTS] added regression testing configuration files or scripts
|
The area the patch applies to is quite important, because some areas are known
|
||||||
|
to be similar in older versions, suggesting a backport might be desirable, and
|
||||||
|
conversely, some areas are known to be specific to one version. When the tag is
|
||||||
|
used alone, uppercase is preferred for readability, otherwise lowercase is fine
|
||||||
|
too. The following tags are suggested but not limitative :
|
||||||
|
|
||||||
[BUILD] fix build issues. If you could build, no upgrade required.
|
- doc documentation updates or fixes. No code is affected, no need to
|
||||||
|
upgrade. These patches can also be sent right after a new feature,
|
||||||
|
to document it.
|
||||||
|
|
||||||
[LICENSE] licensing updates (may impact distro packagers)
|
- examples example files. Be careful, sometimes these files are packaged.
|
||||||
|
|
||||||
[RELEASE] release a new version (development version or stable version)
|
- tests regression test files. No code is affected, no need to upgrade.
|
||||||
|
|
||||||
[PATCH] any other patch which could not be qualified with the tags above.
|
- init initialization code, arguments parsing, etc...
|
||||||
|
|
||||||
|
- config configuration parser, mostly used when adding new config keywords
|
||||||
|
|
||||||
The tags are not rigid, and I reserve the right to change them when merging the
|
- http the HTTP engine
|
||||||
patch. It may happen that a same patch has a different tag in two distinct
|
|
||||||
branches. The reason is that a bug in one branch may just be a cleanup in the
|
- stats the stats reporting engine as well as the stats socket CLI
|
||||||
other one because the code cannot be triggered.
|
|
||||||
|
- checks the health checks engine (eg: when adding new checks)
|
||||||
|
|
||||||
|
- acl the ACL processing core or some ACLs from other areas
|
||||||
|
|
||||||
|
- peers the peer synchronization engine
|
||||||
|
|
||||||
|
- listeners everything related to incoming connection settings
|
||||||
|
|
||||||
|
- frontend everything related to incoming connection processing
|
||||||
|
|
||||||
|
- backend everything related to LB algorithms and server farm
|
||||||
|
|
||||||
|
- session session processing and flags (very sensible, be careful)
|
||||||
|
|
||||||
|
- server server connection management, queueing
|
||||||
|
|
||||||
|
- proxy proxy maintenance (start/stop)
|
||||||
|
|
||||||
|
- log log management
|
||||||
|
|
||||||
|
- poll any of the pollers
|
||||||
|
|
||||||
|
- halog the halog sub-component in the contrib directory
|
||||||
|
|
||||||
|
- contrib any addition to the contrib directory
|
||||||
|
|
||||||
|
Other names may be invented when more precise indications are meaningful, for
|
||||||
|
instance : "cookie" which indicates cookie processing in the HTTP core. Last,
|
||||||
|
indicating the name of the affected file is also a good way to quickly spot
|
||||||
|
changes. Many commits were already tagged with "stream_sock" or "cfgparse" for
|
||||||
|
instance.
|
||||||
|
|
||||||
|
It is desired that AT LEAST one of the 3 criteria tags is reported in the patch
|
||||||
|
subject. Ideally, we would have the 3 most often. The two first criteria should
|
||||||
|
be present before a first colon (':'). If both are present, then they should be
|
||||||
|
delimited with a slash ('/'). The 3rd criterion (area) should appear next, also
|
||||||
|
followed by a colon. Thus, all of the following messages are valid :
|
||||||
|
|
||||||
Examples of messages :
|
Examples of messages :
|
||||||
- [DOC] document options forwardfor to logasap
|
- DOC: document options forwardfor to logasap
|
||||||
- [BUG] stats: connection reset counters must be plain ascii, not HTML
|
- DOC/MAJOR: reorganize the whole document and change indenting
|
||||||
- [MEDIUM] checks: support multi-packet health check responses
|
- BUG: stats: connection reset counters must be plain ascii, not HTML
|
||||||
- [RELEASE] Released version 1.4.2
|
- BUG/MINOR: stats: connection reset counters must be plain ascii, not HTML
|
||||||
|
- MEDIUM: checks: support multi-packet health check responses
|
||||||
|
- RELEASE: Released version 1.4.2
|
||||||
|
- BUILD: stats: stdint is not present on solaris
|
||||||
|
- OPTIM/MINOR: halog: make fgets parse more bytes by blocks
|
||||||
|
- REORG/MEDIUM: move syscall redefinition to specific places
|
||||||
|
|
||||||
|
Please do not use square brackets anymore around the tags, because they give me
|
||||||
|
more work when merging patches. By default I'm asking Git to keep them but this
|
||||||
|
causes trouble when patches are prefixed with the [PATCH] tag because in order
|
||||||
|
not to store it, I have to hand-edit the patches. So as of now, I will ask Git
|
||||||
|
to remove whatever is located between square brackets, which implies that any
|
||||||
|
subject formatted the old way will have its tag stripped out.
|
||||||
|
|
||||||
|
In fact, one of the only square bracket tags that still makes sense is '[RFC]'
|
||||||
|
at the beginning of the subject, when you're asking for someone to review your
|
||||||
|
change before getting it merged. If the patch is OK to be merged, then I can
|
||||||
|
merge it as-is and the '[RFC]' tag will automatically be removed. If you don't
|
||||||
|
want it to be merged at all, you can simply state it in the message, or use an
|
||||||
|
alternate '[WIP]' tag ("work in progress").
|
||||||
|
|
||||||
|
The tags are not rigid, follow your intuition first, anyway I reserve the right
|
||||||
|
to change them when merging the patch. It may happen that a same patch has a
|
||||||
|
different tag in two distinct branches. The reason is that a bug in one branch
|
||||||
|
may just be a cleanup in the other one because the code cannot be triggered.
|
||||||
|
|
||||||
|
|
||||||
For a more efficient interaction between the mainline code and your code, I can
|
For a more efficient interaction between the mainline code and your code, I can
|
||||||
only strongly encourage you to try the Git version control system :
|
only strongly encourage you to try the Git version control system :
|
||||||
|
Loading…
x
Reference in New Issue
Block a user