Here's another solution I hacked together: whatchanged.
It takes the name of the binary package you're interested in as the only argument. To use a recent SRU as an example:
This is what it does:
- Check if there's an update candidate; exit if there's none
- If a candidate exists, create temporary directories and fetch the source packages for both the installed version and the candidate into them
- Compare the two with
debdiff and output to stdout (you'll probably want to redirect for easier reading)
- Clean up the temporary directories.
It probably needs to better handle certain things that may go wrong during source retrieval, the flow control is probably a bit off, and there must be more elegant ways for version checking, but it worked fine in my limited testing so far. For now, consider it a quick hack that works, and improvements are most welcome. I'll push it to a bzr repository and/or create a Launchpad project if it's useful to a few people.
Edit: Rather than let it rot on pastebin, I've started a Launchpad project for it; you can get the latest trunk revision with
bzr branch lp:whatchanged. Feel free to report bugs, branch it, rewrite it in Perl, etc.