changie

repository·main·Indexed 21 days ago

https://github.com/miniscruff/changie

A language and framework agnostic tool for managing changelogs separately from commit history. Distributed as a single Go binary, changie uses a file-based approach to track changes as they occur, avoiding merge conflicts. It provides a CLI for initializing projects, creating change fragments, calculating semantic versions, and batching or merging unreleased changes into a final changelog.

Tokens
6.2K
Snippets
36
Records
44
Agent score
74%

What's inside changie

  1. Overview of Changie features

    main

    Changie is an automated changelog tool designed to assist with release preparation. It is language and framework agnostic, distributed as a single Go binary.

    Key capabilities include:

    • File-based changelog management: Keeps commit history and release notes decoupled.
    • Continuous tracking: Allows you to track changes during development while the context is fresh.
    • High customizability: Provides extensive configuration options to match specific project styles and requirements.
  2. Overview of Changie

    main
    Changie is a tool designed to separate your changelog from your commit messages to avoid conflicts. It uses file-based changelog management, allowing you to track changes as you work while the information is fresh. It is language and framework agnostic and is distributed as a single Go binary.
  3. Install Changie via GitHub Action

    main

    Use the miniscruff/changie-action to integrate Changie into your GitHub workflows. You can pass arguments to the changie CLI via the args input.

    - name: Batch a new minor version
      uses: miniscruff/changie-action@VERSION # view action repo for latest version
      with:
        version: latest # use the latest changie version
        args: batch minor
  4. Batch changes for a release with changie batch

    main

    When preparing a release, use the batch command to group all unreleased changes into a single version. You can specify the versioning strategy in three ways:

    1. Semver bump values: Provide <major|minor|patch> to indicate the type of version bump.
    2. Explicit version: Provide a specific <version> string.
    3. Automatic bumps: Provide auto if you have configured kinds in your .changie.yaml to support automatic version detection.
    # changie supports semver bump values
    changie batch <major|minor|patch>
    
    # using an explicit version
    changie batch <version>
    
    # or using auto if you have kinds configured for auto bumps
    changie batch auto
  5. Migrate an existing CHANGELOG to Changie

    main

    If you are introducing Changie to a project that already has a CHANGELOG.md, follow these steps to preserve your history and transition to the new format:

    1. Rename your current file: Rename your existing CHANGELOG.md to a temporary name.
    2. Initialize Changie: Follow the quick start guide to set up the project structure.
    3. Restore history: Move your renamed changelog into the newly generated changes/ folder. Name the file after your most recent release version.
      • Example: If your last release was v1.2.0, move the file to changes/v1.2.0.md.
      • Note: If you use a file extension other than .md, ensure the filename in the changes/ folder matches.
    4. Preserve headers: Copy the heading/title from your old changelog and paste it into the generated header.tpl.md file.
    5. Verify: Run changie merge to regenerate the main changelog and verify that the history and formatting are correct.

    Once completed, you can use Changie normally without needing to manually recreate individual files for every previous version.

  6. Install Changie via Docker

    main

    You can run Changie using Docker images hosted on GitHub Packages. When running in Docker, use an interactive terminal (-it) to complete prompts, and consider passing your current user and group ID to ensure created files have the correct permissions.

    # Basic run (replace 'latest' with a specific version or command)
    docker run \
        --mount type=bind,source=$PWD,target=/src \
        -w /src \
        ghcr.io/miniscruff/changie \
        latest
    
    # Recommended run for interactive prompts and correct file permissions
    docker run \
        --mount type=bind,source=$PWD,target=/src \
        -w /src \
        -it \
        --user $(id -u ${USER}):$(id -g ${USER}) \
        ghcr.io/miniscruff/changie \
        new