bzr-feed Patch for Shared Repositories

December 19, 2007

I’ve started using shared repositories in Bazaar lately but the current version (revision 9) of bzr-feed had trouble recognizing them. Rather than write another one, I decided to fix it.

Here is a small patch which does the trick:

=== modified file 'bzr-feed.py'
--- bzr-feed.py 2007-09-23 06:28:24 +0000
+++ bzr-feed.py 2007-12-20 04:14:57 +0000
@@ -116,13 +116,16 @@
 try:
     dir = cgi.FieldStorage().getvalue("dir")
     repo = BzrDir.open(dir).open_repository()
+    branch_dir = dir
+    if cgi.FieldStorage().has_key("branch"):
+        branch_dir += '/' + cgi.FieldStorage().getvalue("branch")
 except:
     status(404, "Repository Not Found")
 if not len(repo.all_revision_ids()):
     status(404, "No Revisions Found")
 
 # Basic branch info
-branch = BzrDir.open(dir).open_branch()
+branch = BzrDir.open(branch_dir).open_branch()
 start_rev = branch.revno()-9
 if (start_rev < 1): start_rev = 1
 first_rev = repo.get_revisions(repo.all_revision_ids()[0:])[0]

Basically, in the case of a shared repository, we now have to track the repository path, still dir, and the particular branch, branch_dir. For shared repositories, simply adding the branch CGI parameter should do the trick. For standalone repositories, the repository and branch directories are the same. That is, unless you have a shared repository it works as before so the branch keyword is not needed.

After applying the above patch, I generate my feeds by running it locally using something like this:

export HTTP_HOST=code.jblevins.org
export SERVER_PORT=80
export REQUEST_URI="/bzr-feed/index.atom"
python bzr-feed.py dir=~/projects/bzr-feed\&branch=trunk > index.atom