mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2024-12-28 02:26:16 +00:00
doc: Add the rest of the Proclamation scaffolding.
This commit is contained in:
parent
6df722c5dd
commit
22d951a0ef
5
doc/CHANGELOG.md
Normal file
5
doc/CHANGELOG.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Changelog for Monado
|
||||
|
||||
## Monado 0.1.0 (2020-02-24)
|
||||
|
||||
Initial (non-release) tag to promote/support packaging.
|
22
doc/changes/.proclamation.json
Normal file
22
doc/changes/.proclamation.json
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"#": "This is a config file for Proclamation, the changelog combiner: https://gitlab.com/ryanpavlik/proclamation",
|
||||
"SPDX-License-Identifier: CC0-1.0": "",
|
||||
"SPDX-FileCopyrightText: 2020 Collabora, Ltd. and the Proclamation contributors": "",
|
||||
"project_name": "Monado",
|
||||
"base_url": "https://gitlab.freedesktop.org/monado/monado",
|
||||
"news_filename": "../CHANGELOG.md",
|
||||
"sections": {
|
||||
"State Trackers": {
|
||||
"directory": "state_trackers"
|
||||
},
|
||||
"Drivers": {
|
||||
"directory": "drivers"
|
||||
},
|
||||
"Misc. Features": {
|
||||
"directory": "misc_features"
|
||||
},
|
||||
"Misc. Fixes": {
|
||||
"directory": "misc_fixes"
|
||||
}
|
||||
}
|
||||
}
|
2
doc/changes/.proclamation.json.license
Normal file
2
doc/changes/.proclamation.json.license
Normal file
|
@ -0,0 +1,2 @@
|
|||
# SPDX-License-Identifier: CC0-1.0
|
||||
# SPDX-FileCopyrightText: 2020 Collabora, Ltd. and the Proclamation contributors
|
220
doc/changes/README.md
Normal file
220
doc/changes/README.md
Normal file
|
@ -0,0 +1,220 @@
|
|||
# Usage of Proclamation to maintain changelogs
|
||||
|
||||
This file:
|
||||
|
||||
```txt
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
SPDX-FileCopyrightText: 2020 Collabora, Ltd. and the Proclamation contributors
|
||||
```
|
||||
|
||||
This project uses the [Proclamation][] tool to maintain changelogs. Contributors
|
||||
to this project do not need to use Proclamation, but they are asked to write a
|
||||
fragment for the changelog describing their change. See below for more details.
|
||||
|
||||
- Directory to run Proclamation in: `doc/changes`
|
||||
- Config file: default name (`.proclamation.json`)
|
||||
- Location of the per-changelog-section directories: `doc/changes`
|
||||
|
||||
[Proclamation]: https://gitlab.com/ryanpavlik/proclamation
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Quick Start Instructions for Contributors](#quick-start-instructions-for-contributors)
|
||||
- [About Proclamation and Usage Instructions](#about-proclamation-and-usage-instructions)
|
||||
- [Fragments](#fragments)
|
||||
- [References](#references)
|
||||
- [Sections](#sections)
|
||||
- [Configuration](#configuration)
|
||||
- [Sample Usage Workflow](#sample-usage-workflow)
|
||||
- [During Development](#during-development)
|
||||
- [Preparing for a Release](#preparing-for-a-release)
|
||||
|
||||
## Quick Start Instructions for Contributors
|
||||
|
||||
- Get a merge/pull request number for your change: this might involve pushing it
|
||||
as a WIP.
|
||||
- Create a file in the appropriate section's directory, named `mr.YOURNUMBER.md`
|
||||
- In that file, briefly describe your change as you would like it describe in
|
||||
the changelog for the next release.
|
||||
- If your changes affect multiple sections, you can have a file in each section
|
||||
describing the section-specific changes.
|
||||
- If your change resolves an issue or otherwise references some issue or
|
||||
merge/pull request, you can add those references to the beginning of your
|
||||
changelog fragment. See the full instructions below regarding
|
||||
[References](#references).
|
||||
|
||||
## About Proclamation and Usage Instructions
|
||||
|
||||
The "Proclamation" tool assembles changelogs, which incorporate fragments of
|
||||
changelog text added by the author of a change in a specific location and
|
||||
format.
|
||||
|
||||
### Fragments
|
||||
|
||||
Each change should add a changelog fragment file, whose contents are
|
||||
Markdown-formatted text describing the change briefly. Reference metadata will
|
||||
be used to automatically add links to associated issues/merge requests/pull
|
||||
requests, so no need to add these in your fragment text. The simplest changelog
|
||||
fragment just contains one line of Markdown text describing the change:
|
||||
|
||||
```md
|
||||
Here the author of a change has written some text about it.
|
||||
```
|
||||
|
||||
(If you change the template in your Proclamation config file, your project can use a different markup format than Markdown.)
|
||||
|
||||
### References
|
||||
|
||||
The changelog fragment system revolves around "references" - these are issue
|
||||
reports, pull requests, or merge requests associated with a
|
||||
change. Each fragment must have at least one of these, which forms the main part
|
||||
of the filename. If applicable, additional can be added within the file - see
|
||||
below for details.
|
||||
|
||||
This portion of the Proclamation system is intentionally left very flexible,
|
||||
since there are very many ways of organizing and managing a project. By default,
|
||||
references are delimited by the `.` character. The first two fields have some
|
||||
conventional meaning, while any additional fields are up to the user and are
|
||||
only used if a custom template is supplied by a project.
|
||||
|
||||
The format of references in general is:
|
||||
|
||||
```txt
|
||||
<ref_type>.<number>
|
||||
```
|
||||
|
||||
where
|
||||
|
||||
- `ref_type` is "issue", "mr", or "pr"
|
||||
- `number` is the issue, MR, or PR number
|
||||
- any additional `.`-delimited tokens are passed on to the template in the
|
||||
`service_params` list.
|
||||
|
||||
Your changelog fragment filename is simply the "main" reference with the `.md`
|
||||
extension added. (You can also use `.rst` or `.txt` as your extension in your
|
||||
project.)
|
||||
|
||||
To specify additional references in a file, prefix the contents of the changelog
|
||||
fragment with a block delimited above and below by `---`, with one reference on
|
||||
each line. (This can be seen as a very minimal subset of "YAML Front Matter", if
|
||||
you're familiar with that concept.) For example:
|
||||
|
||||
```md
|
||||
---
|
||||
- issue.35
|
||||
- mr.93
|
||||
---
|
||||
Here the author of a change has written some text about it.
|
||||
```
|
||||
|
||||
There are provisions for providing your own reference parser if this format is
|
||||
entirely unusable, but they're underdeveloped. (Most use cases found by the
|
||||
original author can actually be accommodated just by changing the template and
|
||||
specifying `.`-delimited fields in references.) If this functionality is
|
||||
interesting to you, get involved in the development of Proclamation and help
|
||||
finish it!
|
||||
|
||||
### Sections
|
||||
|
||||
Changelog fragments are organized into sections, each of which should have its
|
||||
own directory. These might be "type-of-change" sections (e.g. new feature,
|
||||
bugfix, etc). Alternately, they might be logical sub-projects - it's permissible
|
||||
to have multiple projects configured in one config file and repo with
|
||||
partially-overlapping sections. (This is actually a part of one of the
|
||||
originally motivating use cases for this tool.)
|
||||
|
||||
Every file whose filename parses and meets some basic checks will be used! (You
|
||||
do need to add e.g. an `.md` file extension to files for them to parse as
|
||||
references.) Having a `changes/your_section_name` directory for each section is
|
||||
recommended. You can provide a `README.md` file with a modified subset of this
|
||||
file in that directory, as guidance to contributors to your project.
|
||||
(`README.md` won't parse as a reference, so it will not be treated as a
|
||||
changelog fragment.)
|
||||
|
||||
Use whatever works for your project. Right now, all changelog fragments must be
|
||||
in a section, sections must be a single directory, and sections may not be
|
||||
nested. If you'd like to loosen these assumptions, get involved in the development of Proclamation and help!
|
||||
|
||||
## Configuration
|
||||
|
||||
Your project should have a configuration file: the default name is
|
||||
`.proclamation.json`. The top level object can either be a project config object
|
||||
directly, or contain a member named "projects" with an array of project config
|
||||
objects.
|
||||
|
||||
You can look at the config file for this project for guidance, since it's a
|
||||
pretty simple use case of this tool. (Proclamation was designed to handle more
|
||||
elaborate use-cases than this.)
|
||||
|
||||
- Project attributes:
|
||||
- `project_name` - Required. Used to form the heading in the default template,
|
||||
etc.
|
||||
- `base_url` - Technically optional, but required if you're using the default
|
||||
template. Passed to the template which may use it to form reference links.
|
||||
- `news_filename` - Optional, in case your changelog isn't called NEWS.
|
||||
- `sections` - Required: contains an object. The key names are the section
|
||||
names (used by the default template for section headers), while the values
|
||||
are objects. Sections might be logical sub-projects, or alternately
|
||||
categories of changes (feature, bug fix, etc), it's up to you.
|
||||
- The only key valid right now in the child of the section is `directory`,
|
||||
which indicates the directory to search for changelog fragments.
|
||||
- `template` - Optional. The name of a Jinja2 template for a single release's
|
||||
changelog section. `base.md` comes with Proclamation and is used by default.
|
||||
Your custom template might inherit from this if you only need to change a
|
||||
few small details. Evaluated relative to the current working directory when
|
||||
you run Proclamation.
|
||||
- `insert_point_pattern` - Useful mainly if you're not using the default
|
||||
template. The first match of this regex will be considered the first line of
|
||||
a release entry, and your new release will be put in your changelog file
|
||||
above it. Default works with the default template (looks for a second-level
|
||||
Markdown heading).
|
||||
- `extra_data` - Any extra data you'd like to pass along to your custom
|
||||
template.
|
||||
|
||||
## Sample Usage Workflow
|
||||
|
||||
Note that the base `proclamation` script and all its subcommands have help,
|
||||
accessible through `-h` or `--help`. The guidance in this section of the README
|
||||
is intentionally minimal, to avoid contradicting the online help which remains
|
||||
up-to-date implicitly. This is also only the simplest, minimal way to perform
|
||||
these operations: if your project is more complex, there may already be more
|
||||
features to support your needs in the command line help.
|
||||
|
||||
### During Development
|
||||
|
||||
As changes get submitted to your project, have each change author create a
|
||||
changelog fragment file. Since these are all separate files, with names made
|
||||
unique by your issue/repo tracker, there won't be merge conflicts no matter what
|
||||
order they're merged in. (This is the central benefit of Proclamation, and its
|
||||
inspiration, towncrier, over having each contributor edit CHANGES as part of
|
||||
their submission.)
|
||||
|
||||
At any time you can run `proclamation draft` to preview the release portion that
|
||||
would be added to your changelog if you released at that time.
|
||||
|
||||
### Preparing for a Release
|
||||
|
||||
When you're ready to perform a release, you'll want to run Proclamation to
|
||||
update your changelog, then remove the fragments that you've incorporated into
|
||||
the regular changelog. You can use a command like the following:
|
||||
|
||||
```sh
|
||||
proclamation build YOUR_NEW_VERSION
|
||||
```
|
||||
|
||||
to preview the full file on screen. When you're ready to actually perform the
|
||||
update, run something like:
|
||||
|
||||
```sh
|
||||
proclamation build YOUR_NEW_VERSION --delete-fragments --overwrite
|
||||
```
|
||||
|
||||
to overwrite your changelog file with the updated one and delete the used
|
||||
changelog fragments.
|
||||
|
||||
You're welcome to manually edit the new (or old!) changelog entries as desired:
|
||||
as long as the `insert_point_pattern` (by default, `^## .*`) can still match,
|
||||
Proclamation will not be confused.
|
||||
|
||||
Finally, make sure the deletion of the fragments and the update of the changelog
|
||||
has been checked in to your version control system.
|
3
doc/changes/drivers/.gitignore
vendored
Normal file
3
doc/changes/drivers/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
# SPDX-License-Identifier: CC0-1.0
|
||||
# SPDX-FileCopyrightText: 2020 Collabora, Ltd. and the Proclamation contributors
|
||||
!.gitignore
|
3
doc/changes/misc_features/.gitignore
vendored
Normal file
3
doc/changes/misc_features/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
# SPDX-License-Identifier: CC0-1.0
|
||||
# SPDX-FileCopyrightText: 2020 Collabora, Ltd. and the Proclamation contributors
|
||||
!.gitignore
|
3
doc/changes/misc_fixes/.gitignore
vendored
Normal file
3
doc/changes/misc_fixes/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
# SPDX-License-Identifier: CC0-1.0
|
||||
# SPDX-FileCopyrightText: 2020 Collabora, Ltd. and the Proclamation contributors
|
||||
!.gitignore
|
3
doc/changes/state_trackers/.gitignore
vendored
Normal file
3
doc/changes/state_trackers/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
# SPDX-License-Identifier: CC0-1.0
|
||||
# SPDX-FileCopyrightText: 2020 Collabora, Ltd. and the Proclamation contributors
|
||||
!.gitignore
|
Loading…
Reference in a new issue