Things to be Done
=================

- Release 0.2 with configuration files.

- Add a feature where an initial directory structure can be specified

- Add a feature to show the current configuration

- Lose the awkward iterator interface to Trees and Branches.  Since we
  frequently want to mutate the tree while going through the files, we
  usually consume the iterator anyways

- Track down bugs:

  2. Not specifying a configuration file results in a key error:

::

    Traceback (most recent call last):
      File "/Library/Frameworks/Python.framework/Versions/Current/bin/gen_random_history.py", line 7, in <module>
        execfile(__file__)
      File "/Users/nmb/src/bzr/mcrepogen/gen_random_history.py", line 104, in <module>
        generate(options.output, options.revisions, options.config)
      File "/Users/nmb/src/bzr/mcrepogen/gen_random_history.py", line 81, in generate
        mutators, editors = _objects_from_config(config)
      File "/Users/nmb/src/bzr/mcrepogen/gen_random_history.py", line 44, in _objects_from_config
        mutator_section = config_obj['mutators']
      File "/Library/Frameworks/Python.framework/Versions/5.0.0/lib/python2.5/site-packages/configobj.py", line 580, in __getitem__
        val = dict.__getitem__(self, key)
    KeyError: 'mutators'
      

  1. From dirstate (filed as 455696):

::

    ------------------------------------------------------------
    Traceback (most recent call last):
      File "<ipython console>", line 1, in <module>
      File "evolve.py", line 50, in evolve
        tree = transition.step(tree)
      File "transition.py", line 32, in step
        tree = mutator.mutate(tree)
      File "mutators.py", line 238, in mutate
        _move(f, choice(directories))
      File "mutators.py", line 232, in _move
        input_tree.move(fromfile, to_path)
      File "bzrtreebranch.py", line 201, in move
        self._tree.rename_one(path, destination)
      File "/Library/Frameworks/Python.framework/Versions/5.0.0/lib/python2.5/site-packages/bzrlib/mutabletree.py", line 52, in tree_write_locked
        return unbound(self, *args, **kwargs)
      File "/Library/Frameworks/Python.framework/Versions/5.0.0/lib/python2.5/site-packages/bzrlib/workingtree_4.py", line 1245, in rename_one
        WorkingTree.rename_one(self, from_rel, to_rel, after)
      File "/Library/Frameworks/Python.framework/Versions/5.0.0/lib/python2.5/site-packages/bzrlib/mutabletree.py", line 52, in tree_write_locked
        return unbound(self, *args, **kwargs)
      File "/Library/Frameworks/Python.framework/Versions/5.0.0/lib/python2.5/site-packages/bzrlib/workingtree.py", line 1535, in rename_one
        self._write_inventory(inv)
      File "/Library/Frameworks/Python.framework/Versions/5.0.0/lib/python2.5/site-packages/bzrlib/mutabletree.py", line 52, in tree_write_locked
        return unbound(self, *args, **kwargs)
      File "/Library/Frameworks/Python.framework/Versions/5.0.0/lib/python2.5/site-packages/bzrlib/workingtree_4.py", line 1270, in _write_inventory
        self.current_dirstate().set_state_from_inventory(inv)
      File "/Library/Frameworks/Python.framework/Versions/5.0.0/lib/python2.5/site-packages/bzrlib/dirstate.py", line 2629, in set_state_from_inventory
        fullscan=True)
      File "/Library/Frameworks/Python.framework/Versions/5.0.0/lib/python2.5/site-packages/bzrlib/dirstate.py", line 2797, in update_minimal
        other_key = list(existing_keys)[0]
    IndexError: list index out of range

