
Generate Your Changelog From GitHub Issues - skywinder
https://github.com/skywinder/github-changelog-generator
======
scrapcode
I really appreciate the attention to detail in every little thing including
the README. Very inspiring.

This is a serious question for HN: Is it considered rude to make pull requests
to fix grammar? The English is great, but is made more apparent in some
locations (such as headers in the README) that it is a second language, but
the first thing I thought to myself was "that'd be rude".

~~~
skywinder
Yep. I know, my english is not well. So, I will much apreciate a PR with
grammar fixes.

~~~
duaneb
In this case, you'd want 'good' instead of 'well'—your english is good and you
speak english well.

~~~
skywinder
Good to know! :) Thanks!

------
RandomBK
I see this being very useful for generating a rough draft for the changelog
that you can then edit and elaborate on. I find that not all commits change
public facing APIs, so it would still be necessary go go over it and remove
internal changes.

------
zimbatm
Might be better than what I'm currently using.

The `git changelog` command from the git-extras package is also quite useful.
It just takes the git log messages from the git history until the last tag and
updates the `{History,Changelog}.md`. [https://github.com/tj/git-
extras/blob/master/bin/git-changel...](https://github.com/tj/git-
extras/blob/master/bin/git-changelog)

------
rlpb
I don't understand why a changelog is necessary nowadays. Surely all the
benefits that the author addresses here could be dynamic features of Github,
Gitlab, etc?

He does answer the FAQ "I already use GitHub Releases. Why do I need this?"
but his answer doesn't really address the point that this comes down to
missing functionality in such tooling and should be fixed there, rather than
in a static file generator.

~~~
tenfingers
A generated changelog and/or a list of changes straight out of source control
is not a substitute for a good release notes files. In fact, while I used to
do the same in the past (back to cvsps!), I now just use the log as a template
for what I'm going to write, to remember what I did.

As an _user_ I'm not interested in source details, minor cosmetic fixes and
internals. I want to know what's new compared to the last release, what are
the user facing changes, and any upgrade issues I might be facing. These are
usually expressed just in a few paragraphs in a very discursive fashion. I
personally hate straight-form-source changelogs. I do not read them as an user
(too verbose), I don't use them as a developer (I use the scm directly!).

There's a tendency for developers using git to conflate the two, since history
can be rewritten. I think it's a major mistake. Commit logs are meant to aid
developers. Commit logs will inevitably contain redundant information about
the same logical change, even when you try hard to hide it. This is all
useless information for users. On the contrary, dumbing down the history just
for the sake of readability will also hurt the developers in the long run.

~~~
rlpb
I'm all for release notes being written. Just not changelogs.

------
hiroshi3110
I have used similar tool called `git-pr-release` which create release PR from
bunch of topic PRs. I added a function that create a Github release from
release PRs. [https://github.com/hiroshi/git-pr-
release/tree/create_releas...](https://github.com/hiroshi/git-pr-
release/tree/create_release#the---release-flag)

------
mikegerwitz
For those looking to generate changelogs, but not from issues or something
GitHub-specific, gnulib has a tool to generate changelogs from commit
messages:

[http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob;f=bu...](http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob;f=build-
aux/gitlog-to-changelog)

~~~
skywinder
>Dumping a diff of commit logs. Just don’t do that, you’re helping nobody.
(c)[https://github.com/olivierlacan/keep-a-
changelog](https://github.com/olivierlacan/keep-a-changelog)

It's very hard to maintain it in a good maner. The Issues fits for this
purpose much better. (JMHO)

------
farslan
This is very nice. I was creating manual changelog via Github releases. I
really like that way because I can see the latest changes immediately and pick
the relevant changes:

[https://github.com/fatih/vim-go/releases](https://github.com/fatih/vim-
go/releases)

------
tonyhb
It would work well if your issues are all correctly formatted (ie "Fix: XYZ",
"Add: XYZ"). For open source projects, though, you'd have a ton of "Closed
Issue" items for random questions where people treat issues as forums. That
puts me off.

~~~
skywinder
Hey, thats for a labels! As I mention in README: any issue, that has label
"question duplicate invalid wontfix" will be excluded by default. And you can
change list of this labels.

~~~
tonyhb
Awesome! I totally didn't see that. My own fault for skimming!

------
jonperl
Very cool. We have been building a slack bot to do something similar, for
internal release notes [https://github.com/DispatchMe/meteor-
rosie](https://github.com/DispatchMe/meteor-rosie)

------
evantahler
Question/Poll:

Do you prefer `changelog.md` or the releases tool built into github (IE:
[https://github.com/evantahler/actionhero/releases](https://github.com/evantahler/actionhero/releases)).

~~~
insin
Both: keeping a changelog and copying a section to the latest relase after
tagging it, since they're both Markdown.

~~~
skywinder
Yep. I would like to implement it also: [https://github.com/skywinder/github-
changelog-generator/issu...](https://github.com/skywinder/github-changelog-
generator/issues/56)

------
alfonsodev
In the projects I work we prefix every commit with codename and 3 digits, I
extract the change log from this command:

git log v0.3...v0.4 --oneline | grep -oh -B 1 "CODENAME-[0-9][0-9][0-9]" |
sort | uniq

~~~
skywinder
I will add this feature in the future to this script also!
[https://github.com/skywinder/github-changelog-
generator/issu...](https://github.com/skywinder/github-changelog-
generator/issues/51)

