Generate a Diff from a plugin

Patrick Dobbs patrick.dobbs at supplierselect.com
Thu Jun 18 16:21:43 BST 2009


Hi,

We're using BZR with the "Decentralized with shared mainline" workflow. 
We want to integrate with our bug tracker (http://www.rap-x.com), but we 
need to be able to work offline. So we've created a Push plugin that 
loops through revisions in the current push, checks each revision for a 
bug id, and then posts this bug through a soap call:

def post_push_hook(push_result):
    current_rev_no = push_result.old_revno
    source = push_result.source_branch
    while current_rev_no <= push_result.new_revno:
        current_rev_id = source.get_rev_id(current_rev_no)
        message = source.repository.get_revision(current_rev_id).message
        bug_message = re.search("[\s|^](\#)(\d+)",message)
        if bug_message:
            bug_id = bug_message.group(2)
            do_bugtracking_stuff(message,bug_id)

However, we'd like to be able to get a diff for each revision at the 
same time (the DIFF will be added to the bug tracker comment). I've dug 
a bit into bzrlib but have got confused with 
branches/trees/repositories/deltas and was hoping that someone more au 
fait with the api could advise me.

So, in summary, can anyone on this list advise me how, given a Branch 
object and two revision numbers, it is best to generate a diff (as a 
string)?

Thanks for any suggestions.

Patrick








More information about the bazaar mailing list