Controlling bazaar from python

Jeremy Wilkins jeb at jdwilkins.co.uk
Wed Aug 8 18:57:52 BST 2007


Hi,

I've had a look through builtins.py and the blackbox tests and have
set off trying to get status information. I've tried the following
simple program

#!/usr/bin/env python

from bzrlib import builtins

sta = builtins.cmd_status()
sta.run(False, '/tmp/bzrtest/')

but get the following error

Traceback (most recent call last):
  File "test.py", line 6, in ?
    sta.run(False, '/tmp/bzrtest/')
  File "/opt/local/lib/python2.4/site-packages/bzrlib/commands.py",
line 622, in ignore_pipe
    result = func(*args, **kwargs)
  File "/opt/local/lib/python2.4/site-packages/bzrlib/builtins.py",
line 197, in run
    tree, file_list = tree_files(file_list)
  File "/opt/local/lib/python2.4/site-packages/bzrlib/builtins.py",
line 69, in tree_files
    return internal_tree_files(file_list, default_branch)
  File "/opt/local/lib/python2.4/site-packages/bzrlib/builtins.py",
line 94, in internal_tree_files
    tree = WorkingTree.open_containing(osutils.realpath(file_list[0]))[0]
  File "/opt/local/lib/python2.4/site-packages/bzrlib/workingtree.py",
line 356, in open_containing
    control, relpath = bzrdir.BzrDir.open_containing(path)
  File "/opt/local/lib/python2.4/site-packages/bzrlib/bzrdir.py", line
604, in open_containing
    return BzrDir.open_containing_from_transport(get_transport(url))
  File "/opt/local/lib/python2.4/site-packages/bzrlib/bzrdir.py", line
632, in open_containing_from_transport
    raise errors.NotBranchError(path=url)
bzrlib.errors.NotBranchError: Not a branch: /

Presumably I need to somehow tell the bzr what the working tree root
is? it seems to be looking in /. This is when running the program from
within the test bzr working tree.

Ideally what I'd like to be able to do is instantiate a bzr object
that represents a working tree and call methods to give me a list of
modified files, or added files, etc. At the moment I'm not really
understanding how I'm meant to be performing functions on the working
tree programmatically.

eg

bzr_wt = bzr('/tmp/bzrtest')
for moddedfile in bzr_wt.getModfiied():
    print (moddedfile.filename)

Thanks

jebw

On 8/7/07, Martin Pool <mbp at sourcefrog.net> wrote:
> On 8/7/07, Jeremy Wilkins <jeb at jdwilkins.co.uk> wrote:
> > I am thanks. I'd assumed the recommended method of integration was
> > treating bazaar like a  library but if os.system is the recommended
> > way, thats probably easiest for me.
> >
> > I'd had a look through the General HACKING HOWTO but that was more
> > focused on hacking on bazaar as opposed to integration issues.
>
> Using it as a library is the recommended way.
>
> --
> Martin
>



More information about the bazaar mailing list