{"id":14985638,"url":"https://github.com/logchange/logchange","last_synced_at":"2025-04-11T22:06:10.799Z","repository":{"id":43478185,"uuid":"420401610","full_name":"logchange/logchange","owner":"logchange","description":"🪵 logchange is a tool which helps creating CHANGELOG by keeping one format and solving merge request conflicts problem by extraction of new CHANGELOG entries to separate files","archived":false,"fork":false,"pushed_at":"2025-04-11T07:47:57.000Z","size":1719,"stargazers_count":61,"open_issues_count":10,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-11T22:05:33.081Z","etag":null,"topics":["automation","changelog","cicd","cli","docker","generator","java","markdown","maven-plugin","tool","yml"],"latest_commit_sha":null,"homepage":"https://logchange.dev","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/logchange.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-23T12:07:17.000Z","updated_at":"2025-04-11T07:47:58.000Z","dependencies_parsed_at":"2023-12-14T08:28:06.813Z","dependency_job_id":"946868e4-249d-4a21-9f49-4fa8113515d1","html_url":"https://github.com/logchange/logchange","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logchange%2Flogchange","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logchange%2Flogchange/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logchange%2Flogchange/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logchange%2Flogchange/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/logchange","download_url":"https://codeload.github.com/logchange/logchange/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248487715,"owners_count":21112191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","changelog","cicd","cli","docker","generator","java","markdown","maven-plugin","tool","yml"],"created_at":"2024-09-24T14:11:24.603Z","updated_at":"2025-04-11T22:06:10.784Z","avatar_url":"https://github.com/logchange.png","language":"Java","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/25181517/138590008-f98457b3-602a-4af5-9b28-0c499fe7e378.png\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/logchange/logchange/graphs/contributors\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/contributors/logchange/logchange\" alt=\"Contributors\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/logchange/logchange/pulse\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/commit-activity/m/logchange/logchange\" alt=\"Activity\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://hub.docker.com/repository/docker/logchange/logchange/\"\u003e\n        \u003cimg src=\"https://img.shields.io/docker/v/logchange/logchange?sort=semver\u0026color=green\u0026label=DockerHub\" alt=\"DockerHub\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://hub.docker.com/repository/docker/logchange/logchange/\"\u003e\n        \u003cimg src=\"https://img.shields.io/docker/pulls/logchange/logchange\" alt=\"DockerHub Pulls\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://central.sonatype.com/artifact/dev.logchange/logchange-maven-plugin\"\u003e\n        \u003cimg src=\"https://img.shields.io/maven-central/v/dev.logchange/logchange-maven-plugin.svg?label=Maven%20Central\" alt=\"Maven Central\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n🌳 `CHANGELOG.md` is one of the most important files in a repository. It allows others to find out about\nthe most important changes in the project in short time.\nTo achieve this, `CHANGELOG.md` should be created be in accordance with the rules, however there is no one\nstandard agreed by community.\n\n🪓 Another big problem with `CHANGELOG.md` is a problem with merge conflicts. Probably you, as a developer, also\nencounter it when someone merged changes to `CHANGELOG.md` before you.\n\n🌲 When you create new merge/pull request and in the meantime you will release version, with old-fashioned `CHANGELOG.md`\nyou have to remember, to move new changelog's entry up, to the new version section. With this tool you don't have to!\n\n🪓 If your PO is against you to use this tool in your projects, don't worry... just ask him to do `CHANGELOG.md` by\nhimself, and he will be the first one, who will ask you to use this tool. 🔥\n\n**🪵 To solve these problems, this project was created. It allows to keep a changelog style and reduce merge request\nconflicts by keeping every change in a separate YAML file and generate `CHANGELOG.md` during release.**\n\n📜 This tool is also helpful to create reliable release notes during your release process.\n\n### Reference\n\nThe convention is maintained according to the principles set out in\nthe [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and with some additions as a result from experience in\ndeveloping various types of projects.\n\nThe same problem with merge conflicts with `CHANGELOG.md` was described by\nGitLab. [LINK](https://about.gitlab.com/blog/2018/07/03/solving-gitlabs-changelog-conflict-crisis/)\n\n## Usage and installation\n\n### logchange is distributed as:\n\n- [**CLI** (binary)](https://github.com/logchange/logchange?tab=readme-ov-file#logchange-cli) - you can use it\n  regardless of the technology used in the project. Also, available as:\n  - [logchange homebrew formula][] available on Linux and macOS\n  - [logchange docker image][] suited for CI/CD\n- [**Maven Plugin**](https://github.com/logchange/logchange?tab=readme-ov-file#maven-plugin) - dedicated to projects\n  based on the [Maven][] tool\n- [**Gradle Plugin**](https://github.com/logchange/logchange?tab=readme-ov-file#gradle-plugin) - dedicated to projects\n  based on the [Gradle][] tool\n\n### Maven Plugin\n\n### Starting\n\nYou can choose between two options:\n\n1. Add a plugin to your `pom.xml`. For multi-module projects with one `CHANGELOG.md` add it in main `pom.xml`.\n\n```xml\n\n\u003cbuild\u003e\n    \u003cplugins\u003e\n        \u003cplugin\u003e\n            \u003cgroupId\u003edev.logchange\u003c/groupId\u003e\n            \u003cartifactId\u003elogchange-maven-plugin\u003c/artifactId\u003e\n            \u003cversion\u003e1.16.5\u003c/version\u003e\n        \u003c/plugin\u003e\n    \u003c/plugins\u003e\n\u003c/build\u003e\n```\n\n2. You don't have to add anything to your `pom.xml`, just use all commands with `groupId` and full plugin name, like\n   here:\n\n```shell\nmvn dev.logchange:logchange-maven-plugin:init \n```\n\nAfter choosing one of the options, how you prefer run this plugin, you can start using plugin as follows. Use this\ncommand from your terminal to create important directories and empty CHANGELOG.md\n\n```shell\nmvn logchange:init \n```\n\nIf you already had a `CHANGELOG.md` file you can move it to `changelog/archive.md` file. The name of the archive file\nhave to start from `archive` phrase (f.e. `archive-1.0.0.md`).\n\nAfter using `init` command (or just creating `changelog/unreleased` directory) your project is ready, and you can start\nadding new changelog entries by creating YAML files.\n\n**⚠️IMPORTANT:**\nIf you’re developing multiple versions simultaneously (whether on the same branch or separate\nbranches that you merge, cherry-pick, etc.), consider creating dedicated `unreleased` directories\nfor each version (e.g., `unreleased-1.3.7`). When you release a new version (say, `1.3.7`),\n**logchange** will look for `unreleased-1.3.7` first and release it as `v1.3.7`.\nIf this folder doesn’t exist, **logchange** will fall back to looking\nfor default `unreleased` directory (ps. `unreleased` can be changed by setting property `unreleasedVersionDir`).\n\nAlso, if you have two active main branches (e.g., `1.1.X` and `1.2.X`) but only a single\n`unreleased` folder, do **not** merge branch `1.1.X` into `1.2.X` before releasing.\nOtherwise, all YAML files from both versions will wind up in the same directory, resulting in a single,\ncombined release. Use dedicated `unreleased` directories.\n\n### Adding new change\n\nAdding new change is really simple, you can just add new YAML file to `changelog/unreleased` directory and keep format\npresented below, or you can use command to generate this file, this one will guide you through whole process:\n\n```shell\nmvn logchange:add\n```\n\nOn the other hand, if you would like to just generate an empty file with some default strings, you can use:\n\n```shell\nmvn logchange:add -Dempty -DfileName=000001-some-name.yml\n```\n\nYou can also run the following command to generate an example entry with pre-filled properties, \nwhich you can then modify as needed (don't forget to change the file name!):\n\n```shell\nmvn logchange:example\n```\n\n\n### YAML format\n\n```yml\n# This file is used by logchange tool to generate CHANGELOG.md 🌳 🪓 =\u003e 🪵\n# Visit https://github.com/logchange/logchange and leave a star 🌟\n# More info about configuration you can find https://github.com/logchange/logchange#yaml-format ⬅️\ntitle: Test title\nauthors:\n  - name: Peter\n    nick: marwin1991\n    url: https://github.com/marwin1991\nmerge_requests:\n  - 1\nissues:\n  - 1\nlinks: # links to different project's issue or external systems, like jira or redmine\n  - name: TASK_NUMBER\n    url: https://www.google.pl\ntype: fixed # Default: [added/changed/deprecated/removed/fixed/security/dependency_update/other] It can be overridden in logchange-config.yml\nimportant_notes:\n  - Update style.css on server during instalation 1\nconfigurations: # information about changes in available application configuration\n  - type: database parameter\n    action: add # [add/update/delete]\n    key: simpleparam.name.enabled\n    default_value: true\n    description: Enables displying feature name\n    more_info: \"You can put more information here, any text f.e !1 #1, even [link test](https://google.com)\" #if you want to use # sign, yaml value must be a string inside \"\"\n```\n\n|            Keyword             | Description                                                                                                                                         |\n|:------------------------------:|-----------------------------------------------------------------------------------------------------------------------------------------------------|\n|            `title`             | Description of change that has been made.                                                                                                           |\n|           `authors`            | List of change's authors.                                                                                                                           |\n|        `merge_requests`        | The merge requests' numbers which are adding this change.                                                                                           |\n|            `issues`            | List of issues associated with this change.                                                                                                         |\n|             `type`             | Type of the change. Default: `added/changed/deprecated/removed/fixed/security/dependency_update/other` It can be overridden in logchange-config.yml |\n|            `links`             | Any link to other project or external tool witch contains information about this change.                                                            |\n|       `important_notes`        | Important notes, that has to be included in release.                                                                                                |\n|        `configurations`        | Configurations changes important during release.                                                                                                    |\n|     `configurations.type`      | Type of configuration method, f.e via file application.properties or system environment's variables                                                 |\n|    `configurations.action`     | Define if configuration method was added (add) / updated (update) / deleted (delete)                                                                |\n|      `configurations.key`      | A key for configuration property                                                                                                                    |\n| `configurations.default_value` | Default value for configuration property                                                                                                            |\n|  `configurations.description`  | Description of configuration property                                                                                                               |\n|   `configurations.more_info`   | Here you can add anything even links (keep markdown format)                                                                                         |\n\n### Example usage\n\n- [this project](https://github.com/logchange/logchange/blob/main/CHANGELOG.md)\n- [integration test](https://github.com/logchange/logchange/blob/main/logchange-core/src/test/resources/GenerateChangelogIntegrationTest/EXPECTED_CHANGELOG.md)\n- [hofund project](https://github.com/logchange/hofund/blob/master/CHANGELOG.md)\n\n### Configuration\n\nYou can configure this plugin via `logchange-config.yml` file in `changelog` directory.\n\nCopy following section as default config.\n\n```yml\n# This file configures logchange tool 🌳 🪓 =\u003e 🪵 \n# Visit https://github.com/logchange/logchange and leave a star 🌟 \n# More info about configuration you can find https://github.com/logchange/logchange#configuration \nchangelog:\n  heading: Some information that will be display in the top of CHANGELOG.md\n  #  You can define custom entry types, which overriders default ones\n  #  [added/changed/deprecated/removed/fixed/security/dependency_update/other]\n  #  Remember to adjust labels below, to match new entry types f.e. add: New features\n  #  entryTypes: # you can define custom entry types\n  #    - key: add\n  #      order: 1\n  #    - key: fix\n  #      order: 2\n  #    - key: change\n  #      order: 3\n  #    - key: other\n  #      order: 4\n  labels:\n    unreleased: unreleased\n    important_notes: Important notes\n    types:\n      entryTypesLabels:\n        security: Security\n        other: Other\n        removed: Removed\n        added: Added\n        deprecated: Deprecated\n        fixed: Fixed\n        dependency_update: Dependency updates\n        changed: Changed\n      number_of_changes:\n        singular: change\n        plural: changes\n      security: Security\n      other: Other\n      removed: Removed\n      added: Added\n      deprecated: Deprecated\n      fixed: Fixed\n      dependency_update: Dependency updates\n      changed: Changed\n    configuration:\n      heading: Configuration changes\n      type: Type\n      actions:\n        add: Added\n        update: Updated\n        delete: Deleted\n      with_default_value: with default value\n      description: Description\n  templates:\n    entry: \"${prefix}${title} ${merge_requests} ${issues} ${links} ${authors}\"\n    author: \"([${name}](${url}) @${nick})\"\n    # see examples of templates at examples/templates\n    # if you are missing some function, which will simplify your template (f.e getNumberOfEntries()) \n    # feel free to create issue or pull request with change\n    version_summary_templates:\n      # Relative path to the changelog/.templates directory.\n      # Following definition will require from you existence of template at \n      # changelog/.templates/my-version-summary.html\n      # It will create my-version-summary.html in every version directory \n      # changelog/vX.X.X/my-version-summary.html\n      # HOW TO CREATE VERSION SUMMARY TEMPLATE?\n      # Main object is version and its type of https://github.com/logchange/logchange/blob/main/logchange-core/src/main/java/dev/logchange/core/domain/changelog/model/version/ChangelogVersion.java\n      - path: my-version-summary.html\n    changelog_templates:\n      # Relative path to the changelog/.templates directory.\n      # Following definition will require from you existence of template at \n      # changelog/.templates/my-changelog.html\n      # It will create my-changelog.html in every version directory \n      # changelog/vX.X.X/my-version-summary.html\n      # HOW TO CREATE CHANGELOG TEMPLATE?\n      # Main object is changelog and its type of https://github.com/logchange/logchange/blob/main/logchange-core/src/main/java/dev/logchange/core/domain/changelog/model/Changelog.java\n      - path: my-changelog.html\n#=======================================================================================================================\n# this section only makes sense when project is root of aggregation for other projects with changelogs \n# f.e. if we have repositories: mobile-app(root), mobile-app-android, mobile-app-ios \n# and in mobile-app we want to generate changelog with entries from also from mobile-app-android, mobile-app-ios\n# but mobile-app-android, mobile-app-ios have to have already released versions that we want to aggregate\naggregates:\n  projects:\n    - name: hofund\n      url: https://github.com/logchange/hofund/archive/refs/heads/master.tar.gz\n      type: tar.gz # currently only tar.gz is supported\n      input_dir: changelog # the name where dirs with versions are stored for this project\n    - name: logchange\n      url: https://github.com/logchange/logchange/archive/refs/heads/main.tar.gz\n      type: tar.gz\n      input_dir: changelog\n```\n\n### Templates\n\nThe `templates` section in the `logchange-config.yml` configuration file allows you to customize the format of entries\nin the `changelog.md` file. Individual elements of an entry can include:\n\n- `${prefix}` =\u003e `**Project_name** -` (used only with the `aggregate` command and specifies the project name from which\n  the entry was pulled)\n- `${title}` =\u003e `Description of the change`\n- `${merge_requests}` =\u003e `!1000`\n- `${issues}` =\u003e `#1234`\n- `${links}` =\u003e `[logchange](https://github.com/logchange/logchange)`\n- `${authors}` =\u003e `([Logchange team](https://github.com/orgs/logchange/teams/logchange-main-team) @logchange-main-team)`\n\n### Generating `CHANGELOG.md`\n\nEverytime you want to generate `CHANGELOG.md` you can use command:\n\n```shell\nmvn logchange:generate\n```\n\nTo prevent merge conflicts (it is idea of this project) generation of `CHANGELOG.md` should be done with use of CI/CD\nTool on a main\nbranch of a project during release.\n\n### Creating release (from unreleased directory)\n\nThis command is the preferred to create release and generates `CHANGELOG.md` (One of these command steps is to call the\ngenerate command).\nDuring release all files from `unreleased` directory are moved to `v.X.X.X` where X.X.X is the version from `pom.xml`.\nAfter moving files, command create file `release-date.txt` with current date, then generation of `CHANGELOG.md` and\nversions summaries is done.\n\n```shell\nmvn logchange:release\n```\n\n### Entries validation\n\nThe lint command is used to verify the existence of the `changelog` directory and to check that all `.yml` files within\nare syntactically correct.\nThis command is designed for the early detection of potential issues, particularly in a continuous integration\nenvironment,\nallowing developers to address problems before attempting to generate a changelog.\n\n```shell\nmvn logchange:lint\n```\n\n### Generating\n`changes.xml` for [maven-changes-plugin](https://maven.apache.org/plugins/maven-changes-plugin/index.html)\n\nAlong with `CHANGELOG.md` there is also the option of generating Maven's `changes.xml`.\nTo enable the option, add the parameter `ChangesXml`. To specify a different name, also add the\nparameter `outputFileXml`.\nAt the moment archives are not supported, rather `changes.xml` will only contain the releases generated by this plugin.\n\n```shell\nmvn logchange:release -DchangesXml\n```\n\nFor custom file name, add `-DoutputFileXml=CustomName.xml`\n\n```shell\nmvn logchange:release -DchangesXml -DoutputFileXml=CustomName.xml\n```\n\n### `CHANGELOG.md` structure overview\n\nTODO\n\n### Versions summaries\n\nDuring release `version-summary.md` is created, it is a file that contains current version changelog entries.\nYou can see example [**here**](https://github.com/logchange/logchange/blob/main/changelog/v0.4.0/version-summary.md).\n\nThis feature is really useful during creating releases on GitHub or GitLab, you can just attach the content of this file\nas release notes.\n\n### Archives\n\nIf your project already contains some `CHANGELOG.md` you don't have to rewrite it to `yml`. Only what have to do is to\nmove it to `changelog` directory and rename it to `archive.md` or `archiveXXXX.md` where XXXX is anything you want f.e.\n`-2.0.0`.\n\n**⚠️⚠️ IMPORTANT ⚠️⚠️** `archive-XXX.md` **has to be** in `changelog` directory (`changelog/archive-1.3.6.md`) do not\nadd any sub directories.\n\n### Quote or not to quote ?\n\nAccording to the official YAML specification one should:\n\n- Whenever applicable use the unquoted style since it is the most readable.\n- Use the single-quoted style (') if characters such as \" and \\ are being used inside the string to avoid escaping them\n  and therefore improve readability.\n- Use the double-quoted style (\") when the first two options aren't sufficient, i.e. in scenarios where more complex\n  line breaks are required or non-printable characters are needed.\n\n## Aggregating changelogs of the same version across different projects\n\nThe `aggregate` goal allows you to compile changelogs from multiple projects into a single,\nconsolidated changelog for a specified version.\nThis can be particularly useful when working with a set of related projects or microservices,\nproviding a centralized view of changes across these projects for a single release version.\n\n### Command\n\nTo aggregate changelogs for a specified version, use the following Maven command:\n\n```shell\nmvn logchange:aggregate -DaggregateVersion=\"X.X.X\"\n```\n\nAs `aggregateVersion` you can also use `unreleased`.\n\n### Parameters\n\n- **aggregateVersion** (required) – The version number to aggregate across all specified projects. This parameter\n  identifies the changelog entries for the specific version you want to compile.\n- **inputDir** (optional) – The directory where the `logchange-config.yml` file is located, defaulting to the\n  `changelog` directory.\n- **configFile** (optional) – The name of the configuration file, defaulting to `logchange-config.yml`.\n\n### Configuration\n\nIn the `logchange-config.yml` file, you define the projects to be aggregated in the aggregates section.\nEach project should be configured with its:\n\n- **name** - used as a prefix for changelog entries from each project, making it easy to identify the origin of each\n  entry in the aggregated changelog\n- **url** - the URL for downloading the project files as a `tar.gz` repository archive\n- **type** - specifies the type of archive to download; currently, only `tar.gz` format is supported.\n- **input_dir** - indicates the `changelog` directory for each project, where changelog entries for that project are\n  stored.\n\n## Logchange CLI\n\nThe logchange (CLI) is a standalone tool designed for managing CHANGELOGs, providing flexibility for projects that\ncannot or do not use Maven.\nIt allows you to create and maintain CHANGELOGs independently of your project’s technology stack while ensuring a\nconsistent format and resolving merge conflicts with ease.\n\nCLI tool offers all the available features of those of maven plugin:\n\n### Starting\n\nTODO\n\n### logchange init\n\n| Option                   | Default Value       | Description                                                                        |\n|--------------------------|---------------------|------------------------------------------------------------------------------------|\n| `--path, -p`             | `current directory` | Path indicating the directory in which the command is to be executed.              |\n| `--inputDir`             | `changelog`         | Specifies the input directory for the logchange data.                              |\n| `--unreleasedVersionDir` | `unreleased`        | Specifies the directory for unreleased changes where entries are stored.           |\n| `--outputFile`           | `CHANGELOG.md`      | Specifies the name of the output file where the generated changelog will be saved. |\n\n### logchange add\n\n| Option                   | Default Value       | Description                                                                                                                                                                                                                            |\n|--------------------------|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `--path, -p`             | `current directory` | Path indicating the directory in which the command is to be executed.                                                                                                                                                                  |\n| `--inputDir`             | `changelog`         | Specifies the input directory for the logchange data.                                                                                                                                                                                  |\n| `--unreleasedVersionDir` | `unreleased`        | Specifies the directory where created entries will be stored.                                                                                                                                                                          |\n| `--fileName`             | N/A                 | The name of the entry file.                                                                                                                                                                                                            |\n| `--batchMode`            | `false`             | Determines if the command should run in batch mode.                                                                                                                                                                                    |\n| `--empty`                | `false`             | Allows adding an empty entry.                                                                                                                                                                                                          |\n| `--title`                | N/A                 | The title of the CHANGELOG entry.                                                                                                                                                                                                      |\n| `--author`               | N/A                 | The author of the change, assigned to the CHANGELOG entry. The value should follow the format: `\"name; nick; url\"`, with fields separated by the `;` character.                                                                        |\n| `--authors`              | N/A                 | A list of authors, separated by commas. For each author, the same format as in the `--author` option applies, e.g., `\"John Doe; jdoe; https://github.com/logchange/hofund, Richard Roe; rroe; https://github.com/logchange/valhalla\"`. |\n| `--type`                 | N/A                 | The type of change (e.g., \"added\", \"changed\", etc.).                                                                                                                                                                                   |\n| `--link.name`            | N/A                 | The name of the link to be included in the change description.                                                                                                                                                                         |\n| `--link.url`             | N/A                 | The URL associated with the link, such as a bug report or issue.                                                                                                                                                                       |\n\n### logchange example\n\n| Option                   | Default Value       | Description                                                           |\n|--------------------------|---------------------|-----------------------------------------------------------------------|\n| `--path, -p`             | `current directory` | Path indicating the directory in which the command is to be executed. |\n| `--inputDir`             | `changelog`         | Specifies the input directory for the logchange data.                 |\n| `--unreleasedVersionDir` | `unreleased`        | Specifies the directory where created entries will be stored.         |\n| `--fileName`             | `00000-entry.yml`   | The name of the entry file.                                           |\n\n\n\n### logchange generate\n\n| Option         | Default Value          | Description                                                                        |\n|----------------|------------------------|------------------------------------------------------------------------------------|\n| `--path, -p`   | `current directory`    | Path indicating the directory in which the command is to be executed.              |\n| `--inputDir`   | `changelog`            | Specifies the input directory for the logchange data.                              |\n| `--outputFile` | `CHANGELOG.md`         | Specifies the name of the output file where the generated CHANGELOG will be saved. |\n| `--configFile` | `logchange-config.yml` | Specifies the name of configuration file.                                          |\n\n### logchange lint\n\n| Option         | Default Value          | Description                                                                        |\n|----------------|------------------------|------------------------------------------------------------------------------------|\n| `--path, -p`   | `current directory`    | Path indicating the directory in which the command is to be executed.              |\n| `--inputDir`   | `changelog`            | Specifies the input directory for the logchange data.                              |\n| `--outputFile` | `CHANGELOG.md`         | Specifies the name of the output file where the generated changelog will be saved. |\n| `--configFile` | `logchange-config.yml` | Specifies the name of configuration file.                                          |\n\n### logchange release\n\n| Option                   | Default Value          | Description                                                                        |\n|--------------------------|------------------------|------------------------------------------------------------------------------------|\n| `--path, -p`             | `current directory`    | Path indicating the directory in which the command is to be executed.              |\n| `--versionToRelease`     | N/A                    | Specifies the name of the version that we want to release (e.g., `2.1.1`).         |\n| `--unreleasedVersionDir` | `unreleased`           | Specifies the directory for unreleased changes where entries are stored.           |\n| `--inputDir`             | `changelog`            | Specifies the input directory for the logchange data.                              |\n| `--outputFile`           | `CHANGELOG.md`         | Specifies the name of the output file where the generated changelog will be saved. |\n| `--configFile`           | `logchange-config.yml` | Specifies the name of configuration file.                                          |\n| `--generateChangesXml`   | `false`                | Specifies whether to generate an XML file containing the changes.                  |\n| `--xmlOutputFile`        | `changes.xml`          | Specifies the name of the XML output file.                                         |\n\n### logchange aggregate\n\n| Option               | Default Value          | Description                                                           |\n|----------------------|------------------------|-----------------------------------------------------------------------|\n| `--path, -p`         | `current directory`    | Path indicating the directory in which the command is to be executed. |\n| `--aggregateVersion` | N/A                    | Specifies the version that the aggregation will be performed for.     |\n| `--inputDir`         | `changelog`            | Specifies the input directory for the logchange data.                 |\n| `--configFile`       | `logchange-config.yml` | Specifies the name of configuration file.                             |\n\n### logchange archive\n\n| Option         | Default Value          | Description                                                                             |\n|----------------|------------------------|-----------------------------------------------------------------------------------------|\n| `--path, -p`   | `current directory`    | Path indicating the directory in which the command is to be executed.                   |\n| `--version`    | N/A                    | Specifies the version up to which all released versions should be archived (inclusive). |\n| `--inputDir`   | `changelog`            | Specifies the input directory for the logchange data.                                   |\n| `--configFile` | `logchange-config.yml` | Specifies the name of configuration file.                                               |\n\n\n## Gradle Plugin\n\n### Starting\n\nAdd plugin to `build.gradle`:\n\n```groovy\nplugins {\n    ....\n    id 'dev.logchange' version '1.16.10'\n}\n```\n\nYou can also configure basic properties in `build.gradle`:\n(these are defaults so you don't have to define anything)\n\n```groovy\nlogchange {\n    rootPath = \".\"\n    inputDir = \"changelog\"\n    unreleasedVersionDir = \"unreleased\"\n    outputFile = \"CHANGELOG.md\"\n    configFile = \"logchange-config.yml\"\n    generateChangesXml = false\n    xmlOutputFile = \"changes.xml\"\n}\n```\n\n### Gradle Tasks\n\n```text\nLogchange tasks\n---------------\nlogchangeAdd - Creates new YML file with logchange structure in \u003cunreleasedVersionDir\u003e directory\nlogchangeExample - Creates new YML file with pre-filled properties in \u003cunreleasedVersionDir\u003e directory\nlogchangeArchive - Archives the list of released versions up to (and including) the specified version by transferring their summaries to archive.md file, merging all existing archives, and deleting the corresponding version directories.\nlogchangeAggregate - Aggregates projects changelogs to create one. Useful when we have many projects that make up one product.\nlogchangeGenerate - Generates changelog file (\u003coutputFile\u003e) based on .yml entries and archives (does not moves any files)\nlogchangeInit - Initialize directory (project) with basic logchange configuration and directory structure\nlogchangeLint - Lints and validates YML files and logchange config\nlogchangeRelease - Creates new changelog release by moving files from \u003cunreleasedVersionDir\u003e directory to vX.X.X directory\n```\n\n## CI/CD\n\n### GitHub Actions\n\n### GitLab CI/CD\n\n## TODO:\n\n- add command to create archive-X.md from selected directory\n\n## Development\n\n1. Java installed.\n2. `mvn` as a command in your terminal(needed for integration tests, IniteliJ does not support maven integration tests).\n\n[Maven]: https://maven.apache.org/\n[logchange docker image]: https://hub.docker.com/r/logchange/logchange\n[logchange homebrew formula]: https://github.com/logchange/homebrew-tap\n[Gradle]: https://gradle.org/\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogchange%2Flogchange","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flogchange%2Flogchange","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogchange%2Flogchange/lists"}