Generate beautiful changelogs from your Git commit history

Overview

clog-cli

Join the chat at https://gitter.im/thoughtram/clog

Build Status

A conventional changelog for the rest of us

About

clog creates a changelog automatically from your local git metadata. See the clogs changelog.md for an example.

The way this works, is every time you make a commit, you ensure your commit subject line follows the conventional format. Then when you wish to update your changelog, you simply run clog inside your local repository with any options you'd like to specify.

NOTE: clog also supports empty components by making commit messages such as alias: message or alias(): message (i.e. without the component)

Usage

There are two ways to use clog, as a binary via the command line or as a library in your applications via clog-lib.

Binary (Command Line)

In order to use clog via the command line you must first obtain a binary by either compiling it yourself, or downlading and installing one of the precompiled binaries.

cargo install

If you want to both compile and install clog using cargo you can simply run

cargo install clog-cli

Compiling

Follow these instructions to compile clog, then skip down to Installation.

  1. Ensure you have current version of cargo and Rust installed
  2. Clone the project $ git clone https://github.com/clog-tool/clog-cli && cd clog-cli
  3. Build the project $ cargo build --release
  4. Once complete, the binary will be located at target/release/clog

Using a Precompiled Binary

Currently there are no precompiled binaries available.

Note: The Mac distribution is available on npm via clog-cli.

Installation

Once you have downloaded, or compiled, clog you simply need to place the binary somewhere in your $PATH. If you are not familiar with $PATH read-on; otherwise skip down to Using clog.

Arch Linux

You can use clog-bin from the AUR, or follow the instructions for Linux / OS X

Linux / OS X

You have two options, place clog into a directory that is already located in your $PATH variable (To see which directories those are, open a terminal and type echo "${PATH//:/\n}", the quotation marks are important), or you can add a custom directory to your $PATH

Option 1 If you have write permission to a directory listed in your $PATH or you have root permission (or via sudo), simply copy the clog to that directory # sudo cp clog /usr/local/bin

Option 2 If you do not have root, sudo, or write permission to any directory already in $PATH you can create a directory inside your home directory, and add that. Many people use $HOME/.bin to keep it hidden (and not clutter your home directory), or $HOME/bin if you want it to be always visible. Here is an example to make the directory, add it to $PATH, and copy clog there.

Simply change bin to whatever you'd like to name the directory, and .bashrc to whatever your shell startup file is (usually .bashrc, .bash_profile, or .zshrc)

$ mkdir ~/bin
$ echo "export PATH=$PATH:$HOME/bin" >> ~/.bashrc
$ cp clog ~/bin
$ source ~/.bashrc
Windows

On Windows 7/8 you can add directory to the PATH variable by opening a command line as an administrator and running

C:\> setx path "%path%;C:\path\to\clog\binary"

Otherwise, ensure you have the clog binary in the directory which you operating in the command line from, because Windows automatically adds your current directory to PATH (i.e. if you open a command line to C:\my_project\ to use clog ensure clog.exe is inside that directory as well).

Using clog from the Command Line

clog works by reading your git metadata and specially crafted commit messages and subjects to create a changelog. clog has the following options availble.

USAGE:
    clog [FLAGS] [OPTIONS]

FLAGS:
    -F, --from-latest-tag    use latest tag as start (instead of --from)
    -h, --help               Prints help information
    -M, --major              Increment major version by one (Sets minor and patch to 0)
    -m, --minor              Increment minor version by one (Sets patch to 0)
    -p, --patch              Increment patch version by one
    -V, --version            Prints version information

OPTIONS:
    -C, --changelog <changelog>    A previous changelog to prepend new changes to (this is like
                                   using the same file for both --infile and --outfile and
                                   should not be used in conjuction with either)
    -c, --config <config>          The Clog Configuration TOML file to use (Defaults to
                                   '.clog.toml')**
    -T, --format <format>          The output format, defaults to markdown
                                   (valid values: markdown, json)
    -f, --from <from>              e.g. 12a8546
    -g, --git-dir <gitdir>         Local .git directory (defaults to current dir + '.git')*
    -i, --infile <infile>          A changelog to append to, but *NOT* write to (Useful in
                                   conjunction with --outfile)
    -o, --outfile <outfile>        Where to write the changelog (Defaults to stdout when omitted)
    -r, --repository <repo>        Repository used for generating commit and issue links
                                   (without the .git, e.g. https://github.com/clog-tool/clog-cli)
    -l, --link-style <style>       The style of repository link to generate
                                   (Defaults to github) [values: Github Gitlab Stash]
    -s, --subtitle <subtitle>      e.g. "Crazy Release Title"
    -t, --to <to>                  e.g. 8057684 (Defaults to HEAD when omitted)
        --setversion <ver>         e.g. 1.0.1
    -w, --work-tree <workdir>      Local working tree of the git project
                                   (defaults to current dir)*

* If your .git directory is a child of your project directory (most common, such as
/myproject/.git) AND not in the current working directory (i.e you need to use --work-tree or
--git-dir) you only need to specify either the --work-tree (i.e. /myproject) OR --git-dir (i.e.
/myproject/.git), you don't need to use both.

** If using the --config to specify a clog configuration TOML file NOT in the current working
directory (meaning you need to use --work-tree or --git-dir) AND the TOML file is inside your
project directory (i.e. /myproject/.clog.toml) you do not need to use --work-tree or --git-dir.

Try it!

In order to see it in action, you'll need a repository that already has some of those specially crafted commit messages in it's history. For this, we'll use the clog repository itself.

  1. Clone the repo git clone https://github.com/clog-tool/clog-cli && cd clog-cli

  2. Ensure you already clog binary from any of the steps above

  3. There are many, many ways to run clog. Note, in these examples we will be typing the same options over and over again, in times like that we could a clog TOML configuration file to specify those options that don't normally change. Also note, all these CLI options have short versions as well, we're using the long version because they're easier to understand.

  4. Let's start by picking up only new commits since our last release (this may not be a lot...or none)

  5. Run clog -r https://github.com/clog-tool/clog-cli --outfile only_new.md

  6. By default, clog outputs to stdout unless you have a file set inside a TOML configuration file. (Note, we could have used the shell > operator instead of --outfile)

  7. Anything options you set via the CLI will override anything you set the configuration file.

  8. Let's now tell clog where it can find our old changelog, and prepend any new commits to that old data

  9. Run clog -r https://github.com/clog-tool/clog-cli --infile changelog.md --outfile new_combined.md

  10. Finally, let's assume like most projects we just want to use one file, and prepend all new data to our old changelog (most useful)

  11. First make a backup of the changelog.md so you can compare it later cp changelog.md changelog.md.bak

  12. Run clog -r https://github.com/clog-tool/clog-cli --changelog changelog.md

  13. Try viewing any of the only_new.md, new_combined.md, changelog.md.bak, or changelog.md in your favorite markdown viewer to compare them.

As a Library

See the documentation or clog-lib for information on using clog in your applications. You can also see the clog crates.io page.

Default Options

clog can also be configured using a default configuration file so that you don't have to specify all the options each time you want to update your changelog. To do this add a .clog.toml file to your repository.

[clog]
# A repository link with the trailing '.git' which will be used to generate
# all commit and issue links
repository = "https://github.com/clog-tool/clog-cli"
# A constant release title
subtitle = "my awesome title"

# specify the style of commit links to generate, defaults to "github" if omitted
link-style = "github"

# The preferred way to set a constant changelog. This file will be read for old changelog
# data, then prepended to for new changelog data. It's the equivilant to setting
# both infile and outfile to the same file.
#
# Do not use with outfile or infile fields!
#
# Defaults to stdout when omitted
changelog = "mychangelog.md"

# This sets an output file only! If it exists already, new changelog data will be
# prepended, if not it will be created.
#
# This is useful in conjunction with the infile field if you have a separate file
# that you would like to append after newly created clog data
#
# Defaults to stdout when omitted
outfile = "MyChangelog.md"

# This sets the input file old! Any data inside this file will be appended to any
# new data that clog picks up
#
# This is useful in conjunction with the outfile field where you may wish to read
# from one file and append that data to the clog output in another
infile = "My_old_changelog.md"

# This sets the output format. There are two options "json" or "markdown" and
# defaults to "markdown" when omitted
output-format = "json"

# If you use tags, you can set the following if you wish to only pick
# up changes since your latest tag
from-latest-tag = true

Now you can update your MyChangelog.md with clog --patch (assuming you want to update from the latest tag version, and increment your patch version by 1).

Note: Any options you specify at the command line will override options set in your .clog.toml

Custom Sections

By default, clog will display three sections in your changelog, Features, Performance, and Bug Fixes. You can add additional sections by using a .clog.toml file. To add more sections, simply add a [sections] table, along with the section name and aliases you'd like to use in your commit messages:

[sections]
MySection = ["mysec", "ms"]

Now if you make a commit message such as mysec(Component): some message or ms(Component): some message there will be a new "MySection" section along side the "Features" and "Bug Fixes" areas.

NOTE: Sections with spaces are suppported, such as "My Special Section" = ["ms", "mysec"]

Companion Projects

  • Commitizen - A command line tool that helps you writing better commit messages.

LICENSE

clog is licensed under the MIT Open Source license. For more information, see the LICENSE file in this repository.

Comments
  • quesion: split repo into lib and cli

    quesion: split repo into lib and cli

    As far as I can see, the code base is already structured and spit into library and cli code. Now that we moved the code to this organisation, we could also consider having a dedicated cli and lib repo.

    Thoughts?

    type: RFC / question / discussion effort1: easy (hour) P3: important comp: cli comp: lib 
    opened by 0x-r4bbit 23
  • Fails to build

    Fails to build

    My versions, installed about a day (24 hours) ago:

    $ rustc --version
    rustc 0.13.0-nightly (99d6956c3 2014-12-18 20:32:07 +0000)
    
    $ cargo --version
    cargo 0.0.1-pre-nightly (5af754d 2014-12-18 01:50:48 +0000)
    

    If it matters, I'm on arch linux, using the rust-nightly-bin and cargo-nightly-bin AUR packages.


    cargo build in this repository gives (what looks like) syntax errors when attempting to build docopt. Their latest commits and release (0.6.16) fixes this.

    So cargo update -p docopt, and then cargo build --verbose results in the following error:

           Fresh docopt v0.6.16 (https://github.com/docopt/docopt.rs#3f39bcc7)
           Fresh docopt_macros v0.6.16 (https://github.com/docopt/docopt.rs#3f39bcc7)
       Compiling clog v0.2.0 (file:///home/rws/code/gen/clog2)
         Running `rustc /home/rws/code/gen/clog2/src/main.rs --crate-name clog --crate-type bin -g --out-dir /home/rws/code/gen/clog2/target --dep-info /home/rws/code/gen/clog2/target/.fingerprint/clog-76bd6c1d8f39f9ac/dep-bin-clog -L /home/rws/code/gen/clog2/target -L /home/rws/code/gen/clog2/target/deps --extern docopt_macros=/home/rws/code/gen/clog2/target/deps/libdocopt_macros-c59a259f9c0bfb33.so --extern docopt=/home/rws/code/gen/clog2/target/deps/libdocopt-29a30eb0650840d7.rlib`
    /home/rws/code/gen/clog2/src/main.rs:41:34: 41:35 error: macros that expand to items must either be surrounded with braces or followed by a semicolon
    /home/rws/code/gen/clog2/src/main.rs:41   flag_setversion: Option<String>)
                                                                             ^
    error: aborting due to previous error
    Could not compile `clog`.
    
    Caused by:
      Process didn't exit successfully: `rustc /home/rws/code/gen/clog2/src/main.rs --crate-name clog --crate-type bin -g --out-dir /home/rws/code/gen/clog2/target --dep-info /home/rws/code/gen/clog2/target/.fingerprint/clog-76bd6c1d8f39f9ac/dep-bin-clog -L /home/rws/code/gen/clog2/target -L /home/rws/code/gen/clog2/target/deps --extern docopt_macros=/home/rws/code/gen/clog2/target/deps/libdocopt_macros-c59a259f9c0bfb33.so --extern docopt=/home/rws/code/gen/clog2/target/deps/libdocopt-29a30eb0650840d7.rlib` (status=101)
    

    So add in a semicolon at the end of line 41 in src/main.rs, and then cargo build --verbose results in the following error:

           Fresh docopt v0.6.16 (https://github.com/docopt/docopt.rs#3f39bcc7)
           Fresh docopt_macros v0.6.16 (https://github.com/docopt/docopt.rs#3f39bcc7)
       Compiling clog v0.2.0 (file:///home/rws/code/gen/clog2)
         Running `rustc /home/rws/code/gen/clog2/src/main.rs --crate-name clog --crate-type bin -g --out-dir /home/rws/code/gen/clog2/target --dep-info /home/rws/code/gen/clog2/target/.fingerprint/clog-76bd6c1d8f39f9ac/dep-bin-clog -L /home/rws/code/gen/clog2/target -L /home/rws/code/gen/clog2/target/deps --extern docopt_macros=/home/rws/code/gen/clog2/target/deps/libdocopt_macros-c59a259f9c0bfb33.so --extern docopt=/home/rws/code/gen/clog2/target/deps/libdocopt-29a30eb0650840d7.rlib`
    /home/rws/code/gen/clog2/src/log_writer.rs:1:5: 1:39 error: unresolved import `std::collections::hashmap::HashMap`. Could not find `hashmap` in `std::collections`
    /home/rws/code/gen/clog2/src/log_writer.rs:1 use std::collections::hashmap::HashMap;
                                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /home/rws/code/gen/clog2/src/common.rs:2:5: 2:39 error: unresolved import `std::collections::hashmap::HashMap`. Could not find `hashmap` in `std::collections`
    /home/rws/code/gen/clog2/src/common.rs:2 use std::collections::hashmap::HashMap;
                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /home/rws/code/gen/clog2/src/section_builder.rs:1:5: 1:39 error: unresolved import `std::collections::hashmap::HashMap`. Could not find `hashmap` in `std::collections`
    /home/rws/code/gen/clog2/src/section_builder.rs:1 use std::collections::hashmap::HashMap;
                                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /home/rws/code/gen/clog2/src/section_builder.rs:2:5: 2:30 error: unresolved import `std::collections::hashmap`. There is no `hashmap` in `std::collections`
    /home/rws/code/gen/clog2/src/section_builder.rs:2 use std::collections::hashmap;
                                                          ^~~~~~~~~~~~~~~~~~~~~~~~~
    /home/rws/code/gen/clog2/src/section_builder.rs:3:37: 3:44 error: unresolved import `common::Feature`. There is no `Feature` in `common`
    /home/rws/code/gen/clog2/src/section_builder.rs:3 use common::{ LogEntry, SectionMap, Feature, Fix };
                                                                                          ^~~~~~~
    /home/rws/code/gen/clog2/src/section_builder.rs:3:46: 3:49 error: unresolved import `common::Fix`. There is no `Fix` in `common`
    /home/rws/code/gen/clog2/src/section_builder.rs:3 use common::{ LogEntry, SectionMap, Feature, Fix };
                                                                                                   ^~~
    /home/rws/code/gen/clog2/src/git.rs:3:26: 3:33 error: unresolved import `common::Feature`. There is no `Feature` in `common`
    /home/rws/code/gen/clog2/src/git.rs:3 use common:: { LogEntry, Feature, Fix, Unknown };
                                                                   ^~~~~~~
    /home/rws/code/gen/clog2/src/git.rs:3:35: 3:38 error: unresolved import `common::Fix`. There is no `Fix` in `common`
    /home/rws/code/gen/clog2/src/git.rs:3 use common:: { LogEntry, Feature, Fix, Unknown };
                                                                            ^~~
    /home/rws/code/gen/clog2/src/git.rs:3:40: 3:47 error: unresolved import `common::Unknown`. There is no `Unknown` in `common`
    /home/rws/code/gen/clog2/src/git.rs:3 use common:: { LogEntry, Feature, Fix, Unknown };
                                                                                 ^~~~~~~
    /home/rws/code/gen/clog2/src/main.rs:17:5: 17:23 error: unresolved import `docopt::FlagParser`. There is no `FlagParser` in `docopt`
    /home/rws/code/gen/clog2/src/main.rs:17 use docopt::FlagParser;
                                                ^~~~~~~~~~~~~~~~~~
    error: aborting due to 10 previous errors
    Could not compile `clog`.
    
    Caused by:
      Process didn't exit successfully: `rustc /home/rws/code/gen/clog2/src/main.rs --crate-name clog --crate-type bin -g --out-dir /home/rws/code/gen/clog2/target --dep-info /home/rws/code/gen/clog2/target/.fingerprint/clog-76bd6c1d8f39f9ac/dep-bin-clog -L /home/rws/code/gen/clog2/target -L /home/rws/code/gen/clog2/target/deps --extern docopt_macros=/home/rws/code/gen/clog2/target/deps/libdocopt_macros-c59a259f9c0bfb33.so --extern docopt=/home/rws/code/gen/clog2/target/deps/libdocopt-29a30eb0650840d7.rlib` (status=101)
    

    This is where I decided to stop and open this issue, because I have little to no knowledge of rust yet (just started).

    type: bug P2: required comp: lib 
    opened by vyp 16
  • Let me publish to npm?

    Let me publish to npm?

    Do you mind if I publish the binary to npm? Unless you have some auto-update magic going on that I'm not aware of, it would make getting updates easier (I'd be happy to keep the module updated). I did this with cloc (coincidentally a similar name) and it's been handy to be able to simply install it globally using the same package manager that I'm used to. I think it would help adoption as well.

    Let me know what you think.

    type: RFC / question / discussion effort1: easy (hour) P4: nice to have type: packaging comp: packaging 
    opened by kentcdodds 15
  • feat: implements better errors, abstract writers, and defaults to stdout

    feat: implements better errors, abstract writers, and defaults to stdout

    Closes #55 Closes #57 Closes #58 Closes #62 Closes #63

    ~~WIP: DO NOT MERGE~~

    This PR does a few things:

    • It creates a new abstraction layer which can be used to write changelogs of arbitrary formats provided you implement the clog::fmt::FormatWriter trait. Currently there is only two implementing structs MarkdownWriter and JsonWriter. ~~Also, it's not user selectable from the CLI (yet)~~, only when using the lib.
    • It also now defaults to printing to stdout unless there is an outfile field in the .clog.toml (or whatever config) or the user passes in the -o <file> option. ~~(See #64 for some oddities I noticed)~~
    • The Changelog updated [ snip ] has been changed to Changelog written (took X ms) to be created/updated agnostic. And also this only gets printed now when the changelog is not written to stdout.
    • Finally, it begins the basis for vastly improved errors, and writes all errors to stderr like a good unix tool :)

    Because of some of the changes, this PR is a BREAKING CHANGE (although not drastically). Because a solid 1.0 release is fast approaching, this shouldn't be an issue.

    To do before merge:

    • [x] Write update docs, since some items have changed
    • [x] Write docs for new items
    • [x] Implement a Json writer
    • [ ] ~~Implement an Html writer?~~
    • [x] Update README.md with any changes
    • [x] Test
    • [x] Rebuild docs
    • [x] Decide on #63 and implement
    • [x] Test the idea of Implementing something closer to an AST than trait based formats...

    There's a few places I think could be implemented in a more clean fashion as well, depending on how the testing goes I may make some minor changes.

    opened by kbknapp 12
  • chore: add more default sections

    chore: add more default sections

    Currently we ship with only Bug Fixes and Features the angular conventions we link to uses quite a few more sections as well. It'd be nice to ship with a few more of the default sections, perhaps not all of them, but at least a few that are nice to display in a changelog (such as performance, test, docs, etc.)

    type: chore effort1: easy (hour) P4: nice to have comp: config 
    opened by kbknapp 12
  • chore: clog should write to stdout

    chore: clog should write to stdout

    Currently, clog creates a markdown file by default. As discussed in https://github.com/thoughtram/clog/issues/57, I think it'd make sense if writers could be swapped out.

    This raises my next question: Unix commands usually write to stdout by default. If we implement a writer abstraction, so we can plug more into clog, we shouldn't prefer one over the other. Which brings me to the point, that it might be better if clog writes to stdout by default.

    Of course, this adds the complexity that you always have to provide a writer option in case you don't want to write to stdout, but this is how most/all UNIX commands work.

    Thoughts on this?

    type: RFC / question / discussion P3: important comp: cli 
    opened by 0x-r4bbit 11
  • `--setversion` flag not working for ubuntu.

    `--setversion` flag not working for ubuntu.

    Running clog on Ubuntu (3.13.0-105-generic #152-Ubuntu SMP Fri Dec 2 15:37:11 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux) with --setversion doesn't set the version in the changelog.

    Sample command: clog -r <REPO> --from <HASH> --setversion 1.7.0 | less

    Expected:

    <a name="1.7.0"></a>
    ##  (2017-01-03)
    
    
    #### Features
    
    * **package.json:**  new minimal package.json. ([a4715fee](https://github.com/jtk54/changelog-test/commit/a4715feee1281f593b7c17e2e10d9309869c79be))
    
    #### Bug Fixes
    
    * **BULLETS:**
      *  Differentiated bullets. ([dd8e477a](https://github.com/jtk54/changelog-test/commit/dd8e477a31235f141132f81f34cd039f1a8d08b9))
      *  Too many bullets. ([df0446e9](https://github.com/jtk54/changelog-test/commit/df0446e9effef13fabe1f56fbf44b1275b0e8b4d))
    * **HEADING:**  Heading 2 fix. ([e01cb7a8](https://github.com/jtk54/changelog-test/commit/e01cb7a824e20debbd098b14f4510e6ba7635b03))
    * **README:**  Added things. (#1) ([e5773e64](https://github.com/jtk54/changelog-test/commit/e5773e6489902799e9760df5c69d29e0f7e3894e))
    

    Actual:

    <a name=""></a>
    ##  (2017-01-03)
    
    
    #### Features
    
    * **package.json:**  new minimal package.json. ([a4715fee](https://github.com/jtk54/changelog-test/commit/a4715feee1281f593b7c17e2e10d9309869c79be))
    
    #### Bug Fixes
    
    * **BULLETS:**
      *  Differentiated bullets. ([dd8e477a](https://github.com/jtk54/changelog-test/commit/dd8e477a31235f141132f81f34cd039f1a8d08b9))
      *  Too many bullets. ([df0446e9](https://github.com/jtk54/changelog-test/commit/df0446e9effef13fabe1f56fbf44b1275b0e8b4d))
    * **HEADING:**  Heading 2 fix. ([e01cb7a8](https://github.com/jtk54/changelog-test/commit/e01cb7a824e20debbd098b14f4510e6ba7635b03))
    * **README:**  Added things. (#1) ([e5773e64](https://github.com/jtk54/changelog-test/commit/e5773e6489902799e9760df5c69d29e0f7e3894e))
    

    Using the minor version flag -m worked fine, but I want to use a different version format in the changelog output than what the git tags look like. I can always manually add the version in, but it would be nice to automate this.

    opened by jtk54 9
  • Add instructions on how to install the binaries

    Add instructions on how to install the binaries

    Love the work that is happening here.

    However, whereas the readme describes how I can use clog as a library, there's no information on how I can install and use the binaries. I know, it might be obvious to a lot of people, but to make it even easier for everyone, It'd be nice if there was a n instruction that tells you where to download the binary, where to put it on your system and finally, that you might have to configure your $PATH and how.

    type: docs effort1: easy (hour) P3: important 
    opened by 0x-r4bbit 9
  • chore: consider moving clog to it's own organisation

    chore: consider moving clog to it's own organisation

    Clog repositories are piling up in the thoughtram organisation, which is not a deal breaker, but it might be nicer to have an organisation for that project. We currently have repos for the cli tool (maybe even the library get's it's own repo in the future? @kbknapp), the website, logo media and so on and so forth. We might even end up with corresponding server repositories.

    What do you think?

    type: RFC / question / discussion effort1: easy (hour) P3: important 
    opened by 0x-r4bbit 8
  • feat: split bin and lib

    feat: split bin and lib

    ~~DO NOT MERGE~~

    The bin and lib are now split, but none of the docs have been written yet.

    • [x] Split bin and lib
    • [x] Add non-cli configuration options
    • [x] redo the readme
    • [x] add documentation

    Relates to #44

    opened by kbknapp 7
  • Version should probably be required

    Version should probably be required

    If no version is supplied and no repository link (e.g. cargo run) then the output is:

    <a name=""</a>
    ##  (2014-09-26)
    

    compared to something with a version & repository link:

    ## 0.2.0 (2014-09-23)
    

    So, other than the minor bug in the anchor tag (unclosed tag and I think the logic is reversed?).

    I think the version should be a required value, or print the date without brackets, or print a branch+sha1 as a version number. Either way something's fishy about that a tag and I'm not sure what's intended.

    type: chore effort1: easy (hour) P3: important comp: lib 
    opened by Ryman 7
  • Support exclamation mark after type/scope of the

    Support exclamation mark after type/scope of the "conventional commits" convention.

    Acording to conventional commits the following commit message is valid and should be considered a "breaking change":

    refactor!: drop support for Node 6
    

    (example taken directly from the conventional commit spec: https://www.conventionalcommits.org/en/v1.0.0/#commit-message-with--to-draw-attention-to-breaking-change)

    But it looks like clog ignores the commit messages that contain a ! after the type/scope.

    I realized that the readme of this project points to the angular commit convention, rather than the conventional commits specification.

    But would it be possible to consider the support of "conventional commit"?

    opened by jcornaz 0
  • add option to bump Cargo.toml/Cargo.lock

    add option to bump Cargo.toml/Cargo.lock

    Would it be possible to add an option to have the auto-version-incrementing also modify the version in Cargo.toml (and Cargo.lock)?

    For bonus points, can this also commit + tag a new version in git, like cargo-bump --git does?

    opened by zkat 0
  • feature request: auto-increment based on changes

    feature request: auto-increment based on changes

    Hi! I see that clog supports the --major/--minor/--patch flags. Is it possible to have the behavior be --auto, such that the tag is based on the actual commits?

    So, having a feat() means --minor, having a BREAKING CHANGES: means --major, and all other changes imply --patch.

    opened by zkat 0
  • Allow generation of changelog for specific components

    Allow generation of changelog for specific components

    I have a workspace that contains a library and a binary (distro-info and ubuntu-distro-info respectively in the examples below). These are released as separate crates, so I would like to maintain their changelogs separately, to make it easier for users of each separate component to understand what it is that changed. I'd like to be able to invoke clog-cli something like this:

    clog -r https;//github.com/OddBloke/distro-info-rs --component distro-info
    (cd ubuntu-distro-info;
     clog -r https;//github.com/OddBloke/distro-info-rs --component ubuntu-distro-info)
    

    For changes which affect everything, I would like to be able to use an "all" component, so being able to specify more than one component would be ideal:

    clog -r https;//github.com/OddBloke/distro-info-rs --component distro-info --component all
    

    (Potentially there could be a way of including/excluding the empty component, which could allow it to serve as the "all" component.)

    opened by OddBloke 4
  • [Bug] a type named `INT` has already been imported in this module

    [Bug] a type named `INT` has already been imported in this module

    1. Summary

    I can't install clog-cli to my Windows 10. I get an error:

       Compiling time v0.1.39
    error[E0252]: a type named `INT` has already been imported in this module
       --> C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\time-0.1.39\src\sys.rs:543:9
        |
    542 |     use winapi::um::winnt::*;
        |         --------------------- previous import of `INT` here
    543 |     use winapi::shared::minwindef::*;
        |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ already imported
    
    error: aborting due to previous error
    
    Build failed, waiting for other jobs to finish…
    error: failed to compile `clog-cli v0.9.3`, intermediate artifacts can be found at `C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.9v8i9cpON8iQ`
    
    Caused by:
      Could not compile `time`.
    

    2. Steps to reproduce

    Click here to see full output.
    D:\SashaBranchReleaseIt>cargo install clog-cli
        Updating registry `https://github.com/rust-lang/crates.io-index`
     Downloading clog-cli v0.9.3
     Downloading clog v0.9.1
     Downloading clap v2.21.3
     Downloading toml v0.1.30
     Downloading libc v0.2.36
     Downloading unicode-segmentation v1.2.0
     Downloading winapi v0.3.4
     Downloading winapi-x86_64-pc-windows-gnu v0.4.0
       Compiling unicode-width v0.1.4
       Compiling winapi-x86_64-pc-windows-gnu v0.4.0
       Compiling semver-parser v0.7.0
       Compiling regex-syntax v0.3.9
       Compiling unicode-segmentation v1.2.0
       Compiling rustc-serialize v0.3.24
       Compiling semver v0.6.0
       Compiling winapi v0.3.4
       Compiling winapi v0.2.8
       Compiling libc v0.2.36
       Compiling memchr v0.1.11
       Compiling winapi-build v0.1.1
       Compiling aho-corasick v0.5.3
       Compiling kernel32-sys v0.2.2
       Compiling vec_map v0.7.0
       Compiling ansi_term v0.9.0
       Compiling utf8-ranges v0.1.3
       Compiling toml v0.1.30
       Compiling bitflags v0.8.2
       Compiling strsim v0.6.0
       Compiling atty v0.2.6
       Compiling time v0.1.39
    error[E0252]: a type named `INT` has already been imported in this module
       --> C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\time-0.1.39\src\sys.rs:543:9
        |
    542 |     use winapi::um::winnt::*;
        |         --------------------- previous import of `INT` here
    543 |     use winapi::shared::minwindef::*;
        |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ already imported
    
    error: aborting due to previous error
    
    Build failed, waiting for other jobs to finish…
    error: failed to compile `clog-cli v0.9.3`, intermediate artifacts can be found at `C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.9v8i9cpON8iQ`
    
    Caused by:
      Could not compile `time`.
    
    To learn more, run the command again with --verbose.
    
    D:\SashaBranchReleaseIt>cargo install clog-cli --verbose
        Updating registry `https://github.com/rust-lang/crates.io-index`
       Compiling unicode-segmentation v1.2.0
       Compiling winapi v0.3.4
       Compiling bitflags v0.8.2
       Compiling winapi-build v0.1.1
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\unicode-segmentation-1.2.0\src\lib.rs --crate-name unicode_segmentation --crate-type lib -C opt-level=3 -C metadata=ba624edbc204a7c2 -C extra-filename=-ba624edbc204a7c2 --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --cap-lints allow`
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-0.3.4\build.rs --crate-name build_script_build --crate-type bin -C opt-level=3 --cfg "feature=\"winbase\"" --cfg "feature=\"processenv\"" --cfg "feature=\"sysinfoapi\"" --cfg "feature=\"timezoneapi\"" --cfg "feature=\"minwindef\"" --cfg "feature=\"ntdef\"" --cfg "feature=\"profileapi\"" --cfg "feature=\"std\"" --cfg "feature=\"minwinbase\"" --cfg "feature=\"consoleapi\"" -C metadata=cc03bbac9f4474bf --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\build\winapi-cc03bbac9f4474bf --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --cap-lints allow`
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\bitflags-0.8.2\src\lib.rs --crate-name bitflags --crate-type lib -C opt-level=3 -C metadata=c0b5cc4913a9b3e5 -C extra-filename=-c0b5cc4913a9b3e5 --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --cap-lints allow`
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-build-0.1.1\src\lib.rs --crate-name build --crate-type lib -C opt-level=3 -C metadata=493a7b0628804707 -C extra-filename=-493a7b0628804707 --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --cap-lints allow`
       Compiling unicode-width v0.1.4
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\unicode-width-0.1.4\src\lib.rs --crate-name unicode_width --crate-type lib -C opt-level=3 --cfg "feature=\"default\"" -C metadata=a0540559ee45d007 -C extra-filename=-a0540559ee45d007 --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --cap-lints allow`
       Compiling winapi-x86_64-pc-windows-gnu v0.4.0
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-x86_64-pc-windows-gnu-0.4.0\build.rs --crate-name build_script_build --crate-type bin -C opt-level=3 -C metadata=ac3c77c6ff485a52 --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\build\winapi-x86_64-pc-windows-gnu-ac3c77c6ff485a52 --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --cap-lints allow`
       Compiling vec_map v0.7.0
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\vec_map-0.7.0\src\lib.rs --crate-name vec_map --crate-type lib -C opt-level=3 -C metadata=06f6e98bca3b6cc7 -C extra-filename=-06f6e98bca3b6cc7 --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --cap-lints allow`
       Compiling libc v0.2.36
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\libc-0.2.36\src\lib.rs --crate-name libc --crate-type lib -C opt-level=3 --cfg "feature=\"use_std\"" --cfg "feature=\"default\"" -C metadata=f92b7bf35ccdd4c3 -C extra-filename=-f92b7bf35ccdd4c3 --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --cap-lints allow`
         Running `C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\build\winapi-x86_64-pc-windows-gnu-ac3c77c6ff485a52\build-script-build`
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-x86_64-pc-windows-gnu-0.4.0\src\lib.rs --crate-name winapi_x86_64_pc_windows_gnu --crate-type lib -C opt-level=3 -C metadata=0c054e90a7029256 -C extra-filename=-0c054e90a7029256 --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --cap-lints allow -L native=C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-x86_64-pc-windows-gnu-0.4.0\lib`
       Compiling winapi v0.2.8
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-0.2.8\src\lib.rs --crate-name winapi --crate-type lib -C opt-level=3 -C metadata=0889532d327ff4e2 -C extra-filename=-0889532d327ff4e2 --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --cap-lints allow`
       Compiling utf8-ranges v0.1.3
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\utf8-ranges-0.1.3\src\lib.rs --crate-name utf8_ranges --crate-type lib -C opt-level=3 -C metadata=5c6a6dacba3be7ce -C extra-filename=-5c6a6dacba3be7ce --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --cap-lints allow`
       Compiling strsim v0.6.0
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\strsim-0.6.0\src\lib.rs --crate-name strsim --crate-type lib -C opt-level=3 -C metadata=65ce24f53c047d6b -C extra-filename=-65ce24f53c047d6b --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --cap-lints allow`
       Compiling kernel32-sys v0.2.2
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\kernel32-sys-0.2.2\build.rs --crate-name build_script_build --crate-type bin -C opt-level=3 -C metadata=d6afa5bd3d7cfaef --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\build\kernel32-sys-d6afa5bd3d7cfaef --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --extern build=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps\libbuild-493a7b0628804707.rlib --cap-lints allow`
         Running `C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\build\kernel32-sys-d6afa5bd3d7cfaef\build-script-build`
       Compiling ansi_term v0.9.0
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\ansi_term-0.9.0\src\lib.rs --crate-name ansi_term --crate-type lib -C opt-level=3 -C metadata=aa5dcc2affa8dc75 -C extra-filename=-aa5dcc2affa8dc75 --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --cap-lints allow`
         Running `C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\build\winapi-cc03bbac9f4474bf\build-script-build`
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-0.3.4\src\lib.rs --crate-name winapi --crate-type lib -C opt-level=3 --cfg "feature=\"winbase\"" --cfg "feature=\"processenv\"" --cfg "feature=\"sysinfoapi\"" --cfg "feature=\"timezoneapi\"" --cfg "feature=\"minwindef\"" --cfg "feature=\"ntdef\"" --cfg "feature=\"profileapi\"" --cfg "feature=\"std\"" --cfg "feature=\"minwinbase\"" --cfg "feature=\"consoleapi\"" -C metadata=6116565125bc48cf -C extra-filename=-6116565125bc48cf --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --extern winapi_x86_64_pc_windows_gnu=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps\libwinapi_x86_64_pc_windows_gnu-0c054e90a7029256.rlib --cap-lints allow --cfg "feature=\"excpt\"" --cfg "feature=\"basetsd\"" --cfg "feature=\"ktmtypes\"" --cfg "feature=\"vcruntime\"" --cfg "feature=\"vadefs\"" --cfg "feature=\"winnt\"" --cfg "feature=\"cfg\"" --cfg "feature=\"winreg\"" --cfg "feature=\"guiddef\"" --cfg "feature=\"ntstatus\"" --cfg "feature=\"wincon\"" --cfg "feature=\"fileapi\"" --cfg "feature=\"libloaderapi\"" --cfg "feature=\"cfgmgr32\"" --cfg "feature=\"wingdi\"" --cfg "feature=\"processthreadsapi\"" --cfg "feature=\"windef\"" -l dylib=winapi_user32 -l dylib=winapi_gdi32 -l dylib=winapi_msimg32 -l dylib=winapi_kernel32 -l dylib=winapi_opengl32 -l dylib=winapi_advapi32 -l dylib=winapi_winspool -l dylib=winapi_setupapi -L native=C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-x86_64-pc-windows-gnu-0.4.0\lib`
       Compiling semver-parser v0.7.0
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\semver-parser-0.7.0\src\lib.rs --crate-name semver_parser --crate-type lib -C opt-level=3 -C metadata=08a6169b633161d7 -C extra-filename=-08a6169b633161d7 --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --cap-lints allow`
       Compiling memchr v0.1.11
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\memchr-0.1.11\src\lib.rs --crate-name memchr --crate-type lib -C opt-level=3 -C metadata=c555f740a543880f -C extra-filename=-c555f740a543880f --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --extern libc=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps\liblibc-f92b7bf35ccdd4c3.rlib --cap-lints allow`
       Compiling aho-corasick v0.5.3
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\aho-corasick-0.5.3\src\lib.rs --crate-name aho_corasick --crate-type lib -C opt-level=3 -C metadata=d1dfd931d7cac82f -C extra-filename=-d1dfd931d7cac82f --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --extern memchr=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps\libmemchr-c555f740a543880f.rlib --cap-lints allow`
       Compiling rustc-serialize v0.3.24
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\rustc-serialize-0.3.24\src\lib.rs --crate-name rustc_serialize --crate-type lib -C opt-level=3 -C metadata=b6c2409e75d05ee3 -C extra-filename=-b6c2409e75d05ee3 --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --cap-lints allow`
       Compiling semver v0.6.0
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\semver-0.6.0\src\lib.rs --crate-name semver --crate-type lib -C opt-level=3 --cfg "feature=\"default\"" -C metadata=12f8c27000eb56a7 -C extra-filename=-12f8c27000eb56a7 --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --extern semver_parser=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps\libsemver_parser-08a6169b633161d7.rlib --cap-lints allow`
       Compiling regex-syntax v0.3.9
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\regex-syntax-0.3.9\src\lib.rs --crate-name regex_syntax --crate-type lib -C opt-level=3 -C metadata=6602c4e3d91326a4 -C extra-filename=-6602c4e3d91326a4 --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --cap-lints allow`
       Compiling time v0.1.39
         Running `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\time-0.1.39\src\lib.rs --crate-name time --crate-type lib -C opt-level=3 -C metadata=1d49f43bd290269a -C extra-filename=-1d49f43bd290269a --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --extern libc=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps\liblibc-f92b7bf35ccdd4c3.rlib --extern winapi=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps\libwinapi-6116565125bc48cf.rlib --cap-lints allow -L native=C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-x86_64-pc-windows-gnu-0.4.0\lib`
    error[E0252]: a type named `INT` has already been imported in this module
       --> C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\time-0.1.39\src\sys.rs:543:9
        |
    542 |     use winapi::um::winnt::*;
        |         --------------------- previous import of `INT` here
    543 |     use winapi::shared::minwindef::*;
        |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ already imported
    
    error: aborting due to previous error
    
    Build failed, waiting for other jobs to finish…
    error: failed to compile `clog-cli v0.9.3`, intermediate artifacts can be found at `C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU`
    
    Caused by:
      Could not compile `time`.
    
    Caused by:
      process didn't exit successfully: `rustc C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\time-0.1.39\src\lib.rs --crate-name time --crate-type lib -C opt-level=3 -C metadata=1d49f43bd290269a -C extra-filename=-1d49f43bd290269a --out-dir C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --emit=dep-info,link -L dependency=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps --extern libc=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps\liblibc-f92b7bf35ccdd4c3.rlib --extern winapi=C:\Users\SASHAC~1\AppData\Local\Temp\cargo-install.U5lNbHH9D1OU\release\deps\libwinapi-6116565125bc48cf.rlib --cap-lints allow -L native=C:\Users\SashaChernykh\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-x86_64-pc-windows-gnu-0.4.0\lib` (exit code: 101)
    

    3. Environment

    Thanks.

    opened by Kristinita 0
  • Broken commit hash link generate for GitHub

    Broken commit hash link generate for GitHub

    Hello!

    Currently, I'm generating changelogs on a non-master branch develop on a GitHub project. The CHANGELOG.md file is generated properly but with broken commit hash links.

    For example, this link https://github.com/org/project/blob/develop/c21e6cc7 points to a non-existing GH page 😞.

    If I use the URL https://github.com/org/project/commit/a72c4419 it works nicely.

    I don't know if it's a clog or a clog-cli issue, that's why I've filed that here.

    Thanks for the great project! 🎉

    opened by mapaiva 1
Owner
Clog
Generate beautiful changelogs from your Git commit history
Clog
gstats — command line tool to print a developer handy summary of all git repositories below current directory

gstats Simple Rust tool to get quick summary info on git repos showing latest tag, branch, state. I implemented this to help me work with a the not to

Boon at Shift 12 Jun 10, 2021
A parallel universal-ctags wrapper for git repository

ptags A parallel universal-ctags wrapper for git repository Description ptags is a universal-ctags wrapper to have the following features. Search git

null 107 Dec 30, 2022
Git mirroring daemon

lohr lohr is a Git mirroring tool. I created it to solve a simple problem I had: I host my own git server at https://git.alarsyo.net, but want to mirr

Antoine Martin 29 Dec 3, 2022
cargo extension that can generate ebuilds using the in-tree eclasses

cargo-ebuild cargo ebuild is a Cargo subcommand that generates an ebuild recipe that uses cargo.eclass to build a Cargo based project for Gentoo Insta

Doug Goldstein 79 Dec 12, 2022
cargo extension that can generate BitBake recipes utilizing the classes from meta-rust

cargo-bitbake cargo bitbake is a Cargo subcommand that generates a BitBake recipe that uses meta-rust to build a Cargo based project for Yocto Install

null 60 Oct 28, 2022
Cargo command to create the README.md from your crate's documentation

Cargo rdme Cargo command to create your README from your crate’s documentation. Installation You can install cargo rdme with cargo by running cargo in

Diogo Sousa 42 Dec 24, 2022
Generate commit messages using GPT3 based on your changes and commit history.

Commit Generate commit messages using GPT-3 based on your changes and commit history. Install You need Rust and Cargo installed on your machine. See t

Brian Le 40 Jan 3, 2023
git-cliff can generate changelog files from the Git history by utilizing conventional commits as well as regex-powered custom parsers.⛰️

git-cliff can generate changelog files from the Git history by utilizing conventional commits as well as regex-powered custom parsers. The changelog template can be customized with a configuration file to match the desired format.

Orhun Parmaksız 5k Jan 9, 2023
A git prepare-commit-msg hook for authoring commit messages with GPT-3.

gptcommit A git prepare-commit-msg hook for authoring commit messages with GPT-3. With this tool, you can easily generate clear, comprehensive and des

Roger Zurawicki 3 Jan 19, 2023
rt-history: An RT-safe history log with error checking

rt-history: An RT-safe history log with error checking This is a bounded wait-free thread synchronization primitive which allows you to record the tim

Hadrien G. 3 Oct 11, 2022
Automatically commit all edits to a wip branch with GPT-3 commit messages

gwipt Automatic work-in-progress commits with descriptive commit messages generated by GPT-3 Codex Never again worry about the tension between "commit

Ben Weinstein-Raun 113 Jan 25, 2023
Easily add emojis to your git commit messages 😎

gimoji A CLI tool that makes it easy to add emojis to your git commit messages. It's very similar to (and is based on) gitmoji-cli but written in Rust

Zeeshan Ali Khan 12 May 29, 2023
Replay git history with some tweaks

Git-replay Overview Git-replay is a simple tool that replays the history of a Git repository but with some tweaks (i.e., it can change the author name

Tak-gun Na 3 Mar 22, 2022
🐢 Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands

Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands. Additionally, it provides optional and fully encrypted synchronisation of your history between machines, via an Atuin server.

Ellie Huxtable 4.6k Jan 1, 2023
Media Cleaner is a simple CLI tool to clean up your media library based on your Overseerr requests and Tautulli history, written in Rust.

Media Cleaner Media Cleaner is a simple CLI tool to clean up your media library based on your Overseerr requests and Tautulli history, written in Rust

Felix Bjerhem Aronsson 21 Mar 22, 2023
The Git Commit Message and Changelog Generation Framework :book:

git-journal ?? The Git Commit Message and Changelog Generation Framework Table of contents: TL;DR Installation Usage Default output Template output Co

Sascha Grunert 551 Jan 4, 2023
turbocommit is a Rust-based CLI tool that generates high-quality git commit messages in accordance with the Conventional Commits specification, using OpenAI's

turbocommit is a Rust-based CLI tool that generates high-quality git commit messages in accordance with the Conventional Commits specification, using OpenAI's `gpt-3.5-turbo` language model. It is easy to use and a cost-effective way to keep git commit history at a higher quality, helping developers stay on track with their work.

Sett 16 Mar 26, 2023
A git sub-command to view your git repository in the web browser

git-view A git sub-command to view your git repository in the web browser! About Are you also frustrated from moving your hands away from the keyboard

Hamothy 5 Sep 26, 2022
Git FIDO Helper - Sign your Git commits with multiple resident SSH keys

gfh Git FIDO helper, or God Fucking Help me. gfh is a tool for helping you sign your commits in Git with resident SSH keys stored on multiple FIDO dev

Michael Mitchell 16 Nov 30, 2022
A CLI tool that uses ChatGPT to automatically generate commit messages.

Auto Git Commit This project is a tool that uses the OpenAI GPT model to automatically generate commit messages for Git commits based on the changes m

XIAO YU 16 Mar 5, 2024