<commit_before>verbot
======

    A tool for managing version numbers using Semantic Versioning and Git



Synopsis
========

    verbot [--verbose] <command> [options]

        --verbose
            Output informative details as operations are performed.



Commands
========

    help
        Display usage information

    calc --release
    calc --prerelease
        Calculate and output the current version number

        Details on how version numbers are calculated can be found in the
        "Version Calculation" section.

        --release
            Always output a release version number.  If the current commit
            hasn't been tagged as a release, output a release version as if it
            was.

        --prerelease
            Always output a pre-release version number.  If the current commit
            has been tagged as a release, output a pre-release version as if
            it wasn't.

    write
    write --release
    write --prerelease
        Record the current version number in source code files, and then
        output it

        Details on how version numbers are calculated can be found in the
        "Version Calculation" section.

        Details on where version numbers are recorded in source code files can
        be found in the "Versions in Source Code" section.

        --release
            Always output a release version number.  If the current commit
            hasn't been tagged as a release, output a release version as if it
            was.

        --prerelease
            Always output a pre-release version number.  If the current commit
            has been tagged as a release, output a pre-release version as if
            it wasn't.

    reset
        Record a default "9999.0.0-alpha" version number in source code files

        Details on where version numbers are recorded in source code files can
        be found in the "Versions in Source Code" section.

    read
        Output the version number currently recorded in source code files

        Details on where version numbers are recorded in source code files can
        be found in the "Versions in Source Code" section.

    release
        Release the version being developed on a master or -master branch

        Specifically:

            Remove the prerelease and build components from the current
            version, and commit

            Tag with `MAJOR.MINOR.PATCH`

            Create or move the `MAJOR.MINOR-latest` branch

            Create or move the `MAJOR-latest` branch, if appropriate

            Create or move the `latest` branch, if appropriate

            Increment to the next patch version, add the -master prerelease
            version component, and commit

    push [--dry-run]
        `git push` any changed or missing version-related branches and tags.

        --dry-run
            Outputs what branches or tags would be pushed, but doesn't
            actually do it.

        The operation fails if there are uncommitted changes in the
        repository.

    check
        Check basic assumptions about the local repository required for verbot
        to operate.

    repair
        Check basic assumptions about the local repository required for verbot
        to operate and, where possible, automatically correct problems.

    check-remote
        Check basic assumptions about the remote repsitory required for verbot
        to operate.

        Specifically:
            There are no remote release tags that differ from their local
            equivalents.



Version Calculation
===================

    Commits tagged as releases simply take their version numbers directly from
    the release tags.

    All other commits need to have their version numbers calculated.

    Verbot calculates versions by working forward from the previous tagged
    release, taking into account whether there have been any major or minor
    changes, the number of commits, the current commit date, and the current
    commit hash.

    The resulting version numbers sort according to topological order in the
    Git commit graph relative to the previous release, followed by commit
    date, followed by short commit hashes to guarantee uniqueness.<commit_msg>Bring readme up to date with current state<commit_after>verbot
======

    A tool for managing Semantic Versioning releases from Git repositories



Synopsis
========

    verbot [--verbose] <command> [options]

        --verbose
            Output informative details as operations are performed.



Commands
========

    check
        Check for correctness of commits, releases, and branches

    repair
        Check for correctness of commits, releases, and branches and, where
        possible, automatically correct problems

    release
        Tag the current commit as a release, adjusting master and latest
        branches accordingly

    write
    write --release
    write --prerelease
        Calculate the version number of the current commit, write it to
        appropriate locations in source code files, and output it

        Details on how version numbers are calculated can be found in the
        "Version Calculation" section.

        Details on where version numbers are recorded in source code files can
        be found in the "Versions in Source Code" section.

        --release
            Always output a release version number.  If the current commit
            hasn't been tagged as a release, output a release version number
            as if it was.

        --prerelease
            Always output a pre-release version number.  If the current commit
            has been tagged as a release, output a pre-release version number
            as if it wasn't.

    reset
        Record a default "9999.0.0-alpha" version number in source code files

        Details on where version numbers are recorded in source code files can
        be found in the "Versions in Source Code" section.

    calc --release
    calc --prerelease
        Calculate the version number of the current commit and output it

        Details on how version numbers are calculated can be found in the
        "Version Calculation" section.

        --release
            Always output a release version number.  If the current commit
            hasn't been tagged as a release, output a release version number
            as if it was.

        --prerelease
            Always output a pre-release version number.  If the current commit
            has been tagged as a release, output a pre-release version number
            as if it wasn't.

    read
        Read the version number currently recorded in source code files and
        output it

        Details on where version numbers are recorded in source code files can
        be found in the "Versions in Source Code" section.

    help
        Display usage information



Version Calculation
===================

    Commits tagged as releases simply take their version numbers directly from
    the release tags.

    All other commits need to have their version numbers calculated.

    Verbot calculates versions by working forward from the previous tagged
    release, taking into account whether there have been any major or minor
    changes, the number of commits, the current commit date, and the current
    commit hash.

    The resulting version numbers sort according to topological order in the
    Git commit graph relative to the previous release, followed by commit
    date, followed by short commit hashes to guarantee uniqueness.
{'fraction_non_alphanumeric': 0.03924418604651163, 'fraction_numerical': 0.0015856236786469344, 'mean_word_length': 2.296602787456446, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1236655', 'n_tokens_mistral': 1717, 'n_tokens_neox': 1579, 'n_words': 954}