# Changy
Very simple changelog manager with the idea that humans write changelogs for humans, not for robots.
Special message formatting (DSLs) to describe changes in commits, tags, etc., is a good idea, but it is not always convenient for development and the CI/CD process.
- The person who commits is not always responsible for writing the changelog or making a release.
- The person who makes a release is also not always responsible for writing the changelog.
- The time when you want to work on the changelog is not always the time when you are making commits or preparing a release.
- Special message formatting is not always convenient for describing changes that humans will read.
- It is difficult to update messages in the commit history.
I searched for a tool that helps to manage changelogs but does not require unnecessary effort from a developer, but I did not find any that suited me. That's how Changy was born.
Changy is inspired by:
- [Changie](https://github.com/miniscruff/changie)
- [Towncrier](https://github.com/twisted/towncrier)
However, Changy simplifies the process by focusing on manual text file editing without the need for CLI commands or strict message formats.
# Installation
```bash
pip install changy
# create initial files
changy init
# help
changy help
```
# Idea
*All paths could be changed via environment variables. See ./changy/settings.py for deatils.*
`CHANGELOG.md` is compiled from parts from `./changes` directory: one file per version.
Besides version files, there are some particular files:
- `./changes/header.md` — Content placed at the top of the changelog.
- `./changes/changes_template.md` — Template for version files. Changy copies this file to create new version files.
- `./changes/unreleased.md` — Contains changes not yet released.
- `./changes/next_release.md` — Contains changes approved for the next release.
You may edit `./changes/unreleased.md` any time you want before making an actual release. The file has no special syntax.
# Usage
## Manual operations before release
```bash
# edit ./changes/unreleased.md
# This command should be run by the responsible person before release to mark that the changelog has been reviewed by humans and is ready to be released.
changy unreleased approve
git add -a
git commit -m "Approve changes for next release"
```
## Somewhere in your CI/CD pipeline
For detailed example, see ./bin/prepate-release.sh
```bash
# Creates version file with approved changes and creates new unreleased file
# Changy will fail if there are no approved changes => you will not forget to approve changes
changy version create 1.2.3
# generates changelog
changy changelog create
git add -a
git commit -m "Release 1.2.3"
```
Raw data
{
"_id": null,
"home_page": "https://github.com/Tiendil/changy",
"name": "changy",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.12",
"maintainer_email": null,
"keywords": "changelog, release-notes, release-automation, release-management, changelog-generator, changelog-formatter",
"author": "Aliaksei Yaletski (Tiendil)",
"author_email": "a.eletsky@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/41/24/9e50c8604ca880636d90cc31cd0c3a9c32d83cfb83c49b8c61ef8d3def80/changy-0.4.2.tar.gz",
"platform": null,
"description": "# Changy\n\nVery simple changelog manager with the idea that humans write changelogs for humans, not for robots.\n\nSpecial message formatting (DSLs) to describe changes in commits, tags, etc., is a good idea, but it is not always convenient for development and the CI/CD process.\n\n- The person who commits is not always responsible for writing the changelog or making a release.\n- The person who makes a release is also not always responsible for writing the changelog.\n- The time when you want to work on the changelog is not always the time when you are making commits or preparing a release.\n- Special message formatting is not always convenient for describing changes that humans will read.\n- It is difficult to update messages in the commit history.\n\nI searched for a tool that helps to manage changelogs but does not require unnecessary effort from a developer, but I did not find any that suited me. That's how Changy was born.\n\nChangy is inspired by:\n\n- [Changie](https://github.com/miniscruff/changie)\n- [Towncrier](https://github.com/twisted/towncrier)\n\nHowever, Changy simplifies the process by focusing on manual text file editing without the need for CLI commands or strict message formats.\n\n# Installation\n\n```bash\npip install changy\n\n# create initial files\nchangy init\n\n# help\nchangy help\n```\n\n# Idea\n\n*All paths could be changed via environment variables. See ./changy/settings.py for deatils.*\n\n`CHANGELOG.md` is compiled from parts from `./changes` directory: one file per version.\n\nBesides version files, there are some particular files:\n\n- `./changes/header.md` \u2014 Content placed at the top of the changelog.\n- `./changes/changes_template.md` \u2014 Template for version files. Changy copies this file to create new version files.\n- `./changes/unreleased.md` \u2014 Contains changes not yet released.\n- `./changes/next_release.md` \u2014 Contains changes approved for the next release.\n\nYou may edit `./changes/unreleased.md` any time you want before making an actual release. The file has no special syntax.\n\n# Usage\n\n## Manual operations before release\n\n```bash\n# edit ./changes/unreleased.md\n\n# This command should be run by the responsible person before release to mark that the changelog has been reviewed by humans and is ready to be released.\nchangy unreleased approve\n\ngit add -a\ngit commit -m \"Approve changes for next release\"\n```\n\n## Somewhere in your CI/CD pipeline\n\nFor detailed example, see ./bin/prepate-release.sh\n\n```bash\n# Creates version file with approved changes and creates new unreleased file\n# Changy will fail if there are no approved changes => you will not forget to approve changes\nchangy version create 1.2.3\n\n# generates changelog\nchangy changelog create\n\ngit add -a\ngit commit -m \"Release 1.2.3\"\n```\n\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "Simplest changelog manager, oriented to human editing, not to special message formatting in commits and tags..",
"version": "0.4.2",
"project_urls": {
"Homepage": "https://github.com/Tiendil/changy",
"Repository": "https://github.com/Tiendil/changy"
},
"split_keywords": [
"changelog",
" release-notes",
" release-automation",
" release-management",
" changelog-generator",
" changelog-formatter"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "ccb49ea243a1a78f3a5be055eb454a30c18fa594c5a080802b8ce31dc273dd32",
"md5": "0dd8d69eecc2b05f740cde0a0ba7533a",
"sha256": "1e14a263a5c606c3a55148403062c61979ccec9a2207c711d0266a9b2e9806ac"
},
"downloads": -1,
"filename": "changy-0.4.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0dd8d69eecc2b05f740cde0a0ba7533a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.12",
"size": 8942,
"upload_time": "2024-06-02T10:02:04",
"upload_time_iso_8601": "2024-06-02T10:02:04.878917Z",
"url": "https://files.pythonhosted.org/packages/cc/b4/9ea243a1a78f3a5be055eb454a30c18fa594c5a080802b8ce31dc273dd32/changy-0.4.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "41249e50c8604ca880636d90cc31cd0c3a9c32d83cfb83c49b8c61ef8d3def80",
"md5": "5b38005c801cd89cd80a3405e8a444b8",
"sha256": "3e2a6c8d978eb643dcc76c0afb6f2cce2f25a367a80fcb6861086e15b5aa6e74"
},
"downloads": -1,
"filename": "changy-0.4.2.tar.gz",
"has_sig": false,
"md5_digest": "5b38005c801cd89cd80a3405e8a444b8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.12",
"size": 7268,
"upload_time": "2024-06-02T10:02:06",
"upload_time_iso_8601": "2024-06-02T10:02:06.558673Z",
"url": "https://files.pythonhosted.org/packages/41/24/9e50c8604ca880636d90cc31cd0c3a9c32d83cfb83c49b8c61ef8d3def80/changy-0.4.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-02 10:02:06",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Tiendil",
"github_project": "changy",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "changy"
}