Closed ungoldman closed 1 year ago
Thanks for gathering those. Will do. :-)
On Apr 4, 2015, at 07:05, Nate Goldman notifications@github.com wrote:
This is not strictly an issue, but FYI a few folks have been making tools based around the conventions established so far by this project. Here are a few I have participated in or found:
https://github.com/bcomnes/changelog-init https://github.com/ngoldman/changelog-parser https://github.com/ngoldman/gh-release https://github.com/bigwhoop/trellog https://github.com/contentful-labs/keepachangelog Might be helpful/beneficial to link to these in the README.
— Reply to this email directly or view it on GitHub.
I have also just pushed a github plugin for semantic versioning that looks for a changelog:
Also Changehub
I’d like to add auto-changelog to the mix, which is something I’ve been working on recently with this schema in mind. It parses your git log
and attempts to build a somewhat sensible changelog from what it finds.
this is a tutorial w an interesting technique for solving the problem. https://github.com/coders-kitchen/tut-releaseNotesFromTags
I'm working on a service for parsing and subscribing on release notes. This is my pet-project.
It is more generic than changehub.io and is not tied to github's releases, though is able to parse not only plain-text files, but also github's releases, html pages, ios and google stores and even group commit messages around version numbers.
Since changehub was never fully launched, not in proper function at least, we created a Stackrecord. It's a GitHub based web hosting service for changelogs that sticks to keepachangelog guidelines. Registration is free and open, the project is currently in beta phase. The Stackrecord also offers an API and a CLI application.
@stackrecord it whould be nice to have https://raw.githubusercontent.com/stackrecord/stack-cli/master/CHANGELOG.md in the format suggested by keep a changelog. Right now it is not markdown et all.
And it will be cool to have http://stackrecord.com/CHANGELOG.md as I do at https://allmychanges.com/CHANGELOG.md :)
@svetlyak40wt you are absolutely right! We are working on it. Cheers!
Hey guys! Been working on changelogapp. It functions as both a command line application to parse, manipulate and stringify keepachangelog changelogs, and as an npm module. This is a hobby project that I believe is mildly similar to @stackrecord, would love for you to check it out and hear your thoughts! 😊
@samholmes1337 changelogapp looks interesting. Does it store data in the intermediate json file, or parses a markdown each time when it need to add a section or a new version?
@samholmes1337 I'll add the changelogapp to the https://allmychanges.com/help/changelog-generators/ if you don't mind. I think it very useful tool which will help people to keep a right formatting which is good for my project too :)
@svetlyak40wt it just parses the markdown every time a new addition or change is made, trying to make the implementation as clean as possible. And yeah that'd be awesome please do!
@samholmes1337
Just checked it out, it is a awesome idea.
It might also help guide a person how to keep a changelog. For example the generator might contain examples or suggestion where to place the changes (weather to place them to changed or removed etc, or what changed or added means etc.), so that users might be informed of a convention but not forced to comply to it.
Adding the option to generate github compare links as well would be a good addition.
Hi everyone!
we are working on a tool to work with the keepachangelog format. All comments and feedback are welcome :bowtie: !
I've written a rudimentary Java library for parsing keepachangelog format:
https://github.com/colindean/keepachangelog-parser-java
I'm still intending to hone it and working on the edge cases (e.g. unreleased
and yanked
) and making it a little more configurable. I intend to write a Gradle plugin which uses this library to transform CHANGELOG.md
into a changelog.json
or somesuch as a build artifact.
Edit 2017-06-06: Added support for unreleased and yanked, released library on Jcenter.
Hello, I wrote a git for changelog.
It's called devist ; a ruby git-like app that helps you keep proper changelog files.
Although this tool does not follow all rules of keepachangelog
it's still inspired from it. The format has been specifically crafted to be visible in raw and md format, and the tool offer export to HTML as well as various other options and features.
Head out to website to get started.
Also, it's open source so catch up with a star. - https://github.com/duraki/devist
Is there a tool that can convert a CHANGELOG to an Atom/RSS feed ?
@Lucas-C auto-changelog
is pretty flexible and supports custom handlebars templates. I'm sure it would be possible to generate a changelog in RSS format. If not I'd be interested in adding it as a feature.
Thanks @CookPete, but auto-changelog
seems to generate a changelog, not to be able to eat a standard CHANGELOG.md
@Lucas-C keepachangelog-parser-java provides a decent interface on top of keepachange-formatted markdown. You could combine that with an RSS library like Rome to generate a feed. Rome has a quick tutorial on how to use it.
It'd probably look something like this pseudo-Java typed by hand and not checked and my Java 8 is rusty:
import cx.cad.keepachangelog.ChangelogParser;
import com.rometools.rome.feed.synd.*;
ChangelogData data = ChangelogParser.parse(markdownTextAsStringOrFile);
SyndFeed feed = new SyndFeedImpl();
feed.setFeedType(feedType);
feed.setTitle("Changelog feed for " + data.getProjectName());
feed.setLink("http://example.com/somewhere/"+data.getProjectName()+".rss");
feed.setDescription(data.getDescription());
SortedSet<ChangelogEntry> changelogEntries = data.getEntries();
SortedSet<SyndEntry> entries = changelogEntries.map( (changelogEntry) -> {
SyndEntry entry = new SyndEntryImpl();
entry.setTitle(changelogEntry.getVersion() + (changelogEntry.isYanked() ? "[YANKED]" : "");
//entry.setLink(""); // may not make sense in this context?
entry.setPublishedDate(changelogEntry.getDate());
entry.setDescription(changelogEntry.getDescription());
SyndContent description = new SyndContentImpl();
String sectionText = formatChangelogEntrySectionText(changelogEntry.getSections());
description.setType("text/plain");
description.setValue(sectionText);
return entry;
});
feed.setEntries(entries);
Writer writer = new FileWriter(fileName);
SyndFeedOutput output = new SyndFeedOutput();
output.output(feed,writer);
writer.close();
System.out.println("The feed has been written to the file ["+fileName+"]");
function String formatChangelogEntrySectionText(SortedSet<ChangelogSection> sections) {
//implementation left as an exercise for the reader
}
Honestly, I've wanted to do something like this for a long time. I don't know when I'll have time to do it, though!
TYVM @colindean, that sounds promising and would fit very well in my current stack !
Is there a tool that can convert a CHANGELOG to an Atom/RSS feed ?
Allmychange.com is able to parse almost any changelog format and produce a single RSS feed for all projects you are tracking.
However, I've abandoned the project last year. Wan't to rewrite it from Python to Common Lisp some day. That will be fun!
Thanks @svetlyak40wt ! I had seen it in this thread above, and it looks awesome. Plus it is open-source, so it could be use internally in a company. However it looks a bit heavyweight as it requires Redis & MySQL whereas I just want to generate a RSS feed XML file from a changelog Markdown file : https://github.com/AllMyChanges/allmychanges.com#how-to-setup
@Lucas-C actually, AllMyChanges is a service for end users who want to track software changed. It is for subscription. All you need it to add your library's changelog there. Just paste a github URL if it is opensource, or URL pointing to a changelog, if it is closed.
For example, here is a plain text changelog of AMCH: http://allmychanges.com/CHANGELOG.md and here is it's parsed version which you can subscribe on: https://allmychanges.com/p/web/allmychanges/
You don't want to generate RSS youself, belive me :)
Pitching in one I just pushed to PyPi creates a CHANGELOG.md based on keep-a-changelog -> https://github.com/akshaybabloo/release-exporter
Just released https://github.com/brightcove/kacl for automating changelog releases for node projects. It pairs really nicely with gh-release for fully automated releasing by just running npm version
.
Just to add to the noise here, I wrote https://github.com/ianfixes/keepachangelog_manager_gem
As far as I can tell, it's the only one of these tools that's focused on automating the release process of these changelogs -- the point in time at which the Unreleased
section is reset and all the stuff that was in there gets put under an official semver-format version.
In other words, the release process becomes scriptable:
#!/bin/bash
# assuming you've just merged a pull request on GitHub, this script
# releases your code and updates the relevant files with the new version
# pull down the merged commit
git pull --rebase
# Update the changelog to a new patch version
NEW_VERSION=$(bundle exec keepachangelog_manager.rb --increment-patch)
# could also explicitly set one of the fields:
# NEW_VERSION=$(bundle exec keepachangelog_manager.rb --minor=3)
echo "Do any other steps related to releasing $NEW_VERSION"
git add CHANGELOG.md # and any other files
git commit -m "v$NEW_VERSION" bump"
git tag -a v$NEW_VERSION -m "Released version $NEW_VERSION"
git push && git push --tags
I recently shipped spotless-changelog. If you happen to have used the spotless code formatter, it's the same idea, but for the keepachangelog format. There's a gradle plugin, and also a separate library if you want to just grab the parser on its own.
The workflow for the gradle plugin is that as you update the [Unreleased]
section, it calculates the appropriate next version by parsing the unreleased fixes / new features / breaking changes. When you run gradlew changelogPush
, it sets the correct version, builds the jar, publishes to mavenCentral, bumps the changelog, commits the bumped changelog, tags, and pushes. I've been using it for about two weeks to work out the kinks and get to 1.0, and its made our releases so much easier. (release announcement on twitter if you'd like to signal boost)
I think it would be great if the keepachangelog site aggregated tools compatible with keepachangelog. It's the difference between "you should indent with two spaces and always use semicolons!" vs prettier, gofmt, rustfmt, google-java-format, etc.
Yet another changelog parser which works nicely on monorepo. https://github.com/tomodian/release
We have nearly a hundred CHANGELOG.md files in our monorepo, so it was impossible to maintain the versions manually. The release cli saves my time, a lot.
It's written in Go, so please try it and love to hear your feedbacks!
This is not strictly an issue, but FYI a few folks have been making tools based around the conventions established so far by this project. Here are a few I have participated in or found:
Might be helpful/beneficial to link to these in the README. :smile: