Feed generators for bazaar
As a way of introducing this topic, I decided to make my own feed generator in part because using mailing's to notify users of changes was just annoying to me. Also as of version 0.18 bazaar does not have a plugin for push email notification, which is what I wanted (when users pushed their changes to the central repository). So I figured a feed would be a perfect solution.
Other existing feed generators
There are several existing feed generators for bazaar already. They are:
BranchFeed: This package installs as a plugin and after every commit/push updates a file .bzr/branch/branch.atom.
bzr-feed: This is a cgi-script that generates the feed on the fly.
Why I made my own
bzr-feed unfortunately did not handle shared repositories for me, and I'm not much of a python programmer, so I couldn't change it easily. BranchFeed produced, on my branch, a feed that my rss reader didn't care for as well. So I decided to write another branch feed generator. Mine has the following traits:
- Written in php (quick and dirty language that most web servers have running.
- Generates a fairly pretty rss2.0 feed of any bazaar url you send to it.
- Takes a parameter to specify how many revisions to show in the feed.
- The same script will also generate a web page for the revision history shown in the feed, thus giving you something useful to click on in your rss reader.
- The script also produces a diff (does not work for remote repositories since bazaar doesn't support remote repository diff'ing just yet), so when you click on a particular feed element, it brings up the diff in your web-browser.
- Has a simple Ruby on Rails type format string for how the rss is generated for each element, and how the html is generated, so it can be customized easily.
- You can lock down the script to only serve from a list of possible url regexps, or you can specify a single url, so that users can't try using your web server to view their stuff on another server.
- Only makes to shell calls to bzr in the php script, once to get the current revision number, and once to get all the revision logs it will post.
