CHANGES.md keeps a list of notable changes to this repo grouped by release and type of change.
This process will automatically create a new CHANGES.md
Along with this README.md in /scripts/changes-file/
you will also find:
Rebol module containing all code for this task.
Rebol script run to make new CHANGES.md
A Rebol map which is loaded and used to customise the process.
From top level of this repo the following file are also used:
This is the file of notable changes which will be re-written by this process.
Contains the list of contributors to the project. This is read to work out the Github @username. If contributor not present then author from git log will be used as-is.
Using the r3
binary built (from source) in this repo run the make-changes-file.reb
script:
../../make/r3 make-changes-file.reb
This will now make a new CHANGES.md file with all latest notable changes.
A pretty format git log
is converted into a Rebol block which is then parsed and collated into notable changes grouped by release & type of change.
See Tech Info for more info.
One of three things make a commit notable:
- Commit summary is prefixed with a "* "
- Contains a CureCode reference
- Is flagged in
cherry-pick-map.reb
Either a yes
or with a []
block.
"e263431" yes
"fbe5237" [type: 'Add]
Use no
in the cherry-pick-map.reb
"4c29aae" no
NB. Because the cherry-pick-map.reb
was semi-manually created then in some cases you can just remove the entry for suppression to work. But a force is required if notable change was marked automatically.
If the commit summary leads with Add(ed), Remove(d), Delete(d), Fix(ed), Patch(ed), Deprecate(d) or Security then the change will be categorised accordingly.
The default is "Changed". An overriding category type can be set in cherry-pick-map.reb
:
"50e015f" [type: 'Removed]
The Changes file has the following types:
- Added (new feature)
- Changed (changes to existing functionality)
- Deprecated (marked for removing in upcoming releases)
- Fixed (bug fix)
- Removed (removed feature or deprecation)
- Security (security fix/change)
Like so in cherry-pick-map.reb
:
"fd5f4d6" [
example: {
print "Some Rebol code"
}
trello: https://trello.com/c/4Kg3DZ2H/
wiki: https://github.com/r3n/reboldocs/wiki/User-and-Console
]
If you had the following changes:
"922658f" yes ;; Added REPL object to allow skinning (#475)
"00def28" yes
"2955730" yes
]
Then these three changes can be combined into one like so:
"922658f" [
related: ["00def28" "2955730"]
change: "Added CONSOLE! object & skinning"
]
Note change in summary message otherwise it would have used summary provided by 922658f commit.
Like so:
"08eb7e8" [version: "R3-Alpha"]
Some info about internal structures used (blocks).
Example commit-log block (extracted via git log
- see GET-GIT-LOG func)
[
commit: {b953008}
author: {Joe Bloggs}
email: {[email protected]}
date-string: {2017-05-29 16:34:12 +0100}
change: {Console skin update bug fix (#525)}
;; above comes over directly from git-log.
;; Below are added by this program (some optional)
type: 'Changed
related: [...] ;; if combined commits then provides links to related commits
cc: [...] ;; links to any Rebol issues (Cure-Code)
wiki: https://github.com/r3n/reboldocs/wiki/User-and-Console
trello: https://trello.com/xxxx
issues: [] ;; PR / Issue codes (CURRENTLY NOT USED)
]
Above block will get converted into a Change Object loaded under Changes-block (series) which is made up like this....
- Changes-block -> Release objects -> Category (type) objects -> Change object
[
make release! [
version: "Undefined"
date: _
changes: [
make category! [
Added: make change! []
Change: make change! []
... ;; see category! for full list
]
]
]
make release! [...]
]
]