659
edits
(added alternative changelog commands to account for length of the output) |
Carandraug (talk | contribs) (add more examples and explanation from the manual) |
||
Line 12: | Line 12: | ||
hg log --style changelog >> octave_changelogs.log | hg log --style changelog >> octave_changelogs.log | ||
== Guidelines == | == Guidelines == | ||
General structure of a commit message: | General structure of a commit message: | ||
:: '''One-line description''' | :: '''One-line description''' | ||
:: Empty line | :: ''Empty line'' | ||
:: '''Body of the commit message''' | :: '''Body of the commit message''' | ||
=== One-line description === | |||
The commit message should have a brief a one-line description of what the | |||
commit does. Keep it short, preferably under 80 characters. If you are | |||
patching a bug, this one-line explanation should mention the bug number | |||
at the end like so: {{codeline|... (bug #12345)}}. Omit final period (full stop). | |||
If your change only touches one file, then the filename of that file should | |||
be the prefix of the one-line description. If it's a C++ or C file, the | |||
function or class that is being modified should be included in the | |||
parenthetical remark, as in the full body of the commit message. | |||
In addition, there are two prefixes for special commits: | |||
* maint: for reorganisation of the sources that do not change the source. Regular merge commits are a prominent example. | * maint: for reorganisation of the sources that do not change the source. Regular merge commits are a prominent example. | ||
* doc: for changes to the documentation. | * doc: for changes to the documentation. | ||
If your change only touches one file | If your change is small and only touches one file then this is | ||
typically sufficient. | |||
=== Body of the commit message === | === Body of the commit message === | ||
If there is more than one file touched in different ways and the one-line description isn't enough to describe all changes, the commit message needs a full-body description. | If there is more than one file touched in different ways and the one-line | ||
description isn't enough to describe all changes, the commit message needs | |||
a full-body description. | |||
Individual files you touched get their changes separately enumerated. If | |||
there a particular C or C++ function you changed, the general format is | |||
<pre> | |||
* file.cc (class1::function1): Make change foo. | |||
(class2::function2): Make change bar. | |||
</pre> | |||
Note the newline for describing the change to a different function. General | |||
GNU style guidelines can be followed here, so that similar changes to | |||
different files can be grouped. | |||
For m-script and Fortran sources, the function name can be omitted if | |||
the m-script only contains one file. For changes outside of functions | |||
or classes, of course the parenthetical (function) or (class::function) | |||
specifiers can also be omitted. | |||
=== Wording === | |||
Please write "New function" instead of "Added function" or "Return retval" | |||
instead of "Changed to return retval". | |||
Never write "Fixed bug" or similar. That doesn't add any specific | |||
information about what was changed. | |||
The | The commit message should describe what was changed, not why it was changed. | ||
Any explanation for why a change is needed should appear as comments in the | |||
code, particularly if there is something that might not be obvious to someone | |||
reading it later. | |||
== Examples == | == Examples == | ||
* | <pre> | ||
look for methods before constructors | |||
* symtab.cc (symbol_table::fcn_info::fcn_info_rep::find): | |||
Look for class methods before constructors, contrary to Matlab | |||
documentation. | |||
* test/ctor-vs-method: New directory of test classes. | |||
* test/test_ctor_vs_method.m: New file. | |||
* test/Makefile.am: Include ctor-vs-method/module.mk. | |||
(FCN_FILES): Include test_ctor_vs_method.m in the list. | |||
</pre> | |||
<pre> | <pre> | ||
allow abbreviations for optimset and optimget (bug #38999) | allow abbreviations for optimset and optimget (bug #38999) | ||
Line 68: | Line 99: | ||
ambiguous abbreviations. New tests. | ambiguous abbreviations. New tests. | ||
</pre> | </pre> | ||
<pre> | <pre> | ||
add format option to ticklabel (bug #34906) | add format option to ticklabel (bug #34906) | ||
Line 75: | Line 107: | ||
* graphics.in.h: define set_xyzticklabel as external function | * graphics.in.h: define set_xyzticklabel as external function | ||
</pre> | </pre> | ||
<pre> | <pre> | ||
tag symbols in indexed assignments as variables (bug #39240) | tag symbols in indexed assignments as variables (bug #39240) | ||
Line 83: | Line 116: | ||
</pre> | </pre> | ||
=== One line commit examples === | |||
<pre> | |||
<pre> | This examples are the rare cases where only one file is modified and the | ||
change is simple enough: | |||
<pre>maint: merge away accidental head.</pre> | |||
<pre>maint: Strip trailing whitespace from source files.</pre> | |||
<pre>maint: Update gnulib to latest changes.</pre> | |||
<pre>maint: Periodic merge of stable to default.</pre> | |||
<pre>doc: grammarcheck documentation for 4.2 release.</pre> | |||
<pre>pkg.m4: update to lastest version as released with pkg-config 0.29 (bug #48775)</pre> | |||
<pre>uigetfile.m: allow path names as input arg (bug #48828)</pre> | |||
[[Category:Development]] | [[Category:Development]] |