
New patches:

[bzr API: tree inventory
Lalo Martins <lalo.martins@gmail.com>**20060328092456
 
 The bzr API changed again; now the Branch object doesn't provide a
 get_inventory() method anymore, since conceptually, branches don't
 have inventories (branches have trees, which have inventories).
] {
hunk ./vcpx/bzr.py 134
-            inv = self._b.get_inventory(self._b.last_revision())
-            diff = compare_trees(self._b.revision_tree(last_revision),
-                                 self._b.working_tree())
+            basis_tree = self._b.basis_tree()
+            inv = basis_tree.inventory
+            diff = compare_trees(basis_tree, self._b.working_tree())
}

[bzrlib 0.8 stage 1
Lalo Martins <lalo.martins@gmail.com>**20060330081514
 
 Partial upgrade of bzr.py for the bzrlib 0.8 api.  Missing only
 _applyChangeset() which is causing me quite a headache.
] {
hunk ./vcpx/bzr.py 6
+#            Lalo Martins <lalo.martins@gmail.com>
hunk ./vcpx/bzr.py 16
+import os
+from workdir import WorkingDir
hunk ./vcpx/bzr.py 20
+from bzrlib.bzrdir import BzrDir
hunk ./vcpx/bzr.py 23
+from bzrlib import errors
hunk ./vcpx/bzr.py 26
+    def __init__(self, repository):
+        WorkingDir.__init__(self, repository)
+        # TODO: check if there is a "repository" in the configuration,
+        # and use it as a bzr repository
+        self._branch = None
+        self._working_tree = None
+        try:
+            self._bzrdir = BzrDir.open(self.basedir)
+        except errors.NotBranchError:
+            self._bzrdir = None
+        else:
+            self.__open_branch()
+
+    def __open_branch(self):
+        if self._branch is not None:
+            print repr(self._branch), 'already opened'
+            return
+        if self._bzrdir is None:
+            raise RuntimeError("Can't open branch if bzrdir doesn't exist")
+        self._branch = self._bzrdir.open_branch()
+        self._working_tree = self._bzrdir.open_workingtree()
+
+    #############################
hunk ./vcpx/bzr.py 57
-        r = parent.get_revision(revision)
+        r = parent.repository.get_revision(revision)
hunk ./vcpx/bzr.py 93
-        from bzrlib import fetch
+        self.__open_branch()
hunk ./vcpx/bzr.py 95
-        parent = Branch.open(self.repository.repository)
-        repo = self._getRepo()
+        parent = BzrDir.open(self.repository.repository).open_branch()
hunk ./vcpx/bzr.py 97
-        revisions = repo.missing_revisions(parent)
-        fetch.greedy_fetch(repo, parent)
+        revisions = self._branch.missing_revisions(parent)
+        self._branch.fetch(parent)
hunk ./vcpx/bzr.py 107
+        raise NotImplemented("this method wasn't upgraded to "
+                             "bzrlib 0.8 yet, sorry")
+
hunk ./vcpx/bzr.py 112
-        repo = self._getRepo()
-        parent = Branch.open(self.repository.repository)
+        self.__open_branch()
hunk ./vcpx/bzr.py 114
-        oldrevno = repo.revno()
+        parent = BzrDir.open(self.repository.repository).open_branch()
+
+        oldrevno = self._branch.revno()
hunk ./vcpx/bzr.py 119
-        repo.append_revision(changeset.revision)
+        self._branch.append_revision(changeset.revision)
hunk ./vcpx/bzr.py 131
-        from bzrlib.clone import copy_branch
-
-        parent = Branch.open(self.repository.repository)
+        parent = BzrDir.open(self.repository.repository)
+        parent_branch = parent.open_branch()
hunk ./vcpx/bzr.py 135
-            revid = parent.get_rev_id(1)
+            revid = parent_branch.get_rev_id(1)
hunk ./vcpx/bzr.py 143
-        self._b = copy_branch(parent, self.basedir, revid)
+        self._bzrdir = parent.clone(self.basedir, revid)
hunk ./vcpx/bzr.py 145
-        return self._changesetFromRevision(parent, revid)
+        return self._changesetFromRevision(parent_branch, revid)
hunk ./vcpx/bzr.py 147
+    #################################
hunk ./vcpx/bzr.py 159
-        last_revision = self._b.last_revision()
+        self.__open_branch()
+
+        last_revision = self._branch.last_revision()
hunk ./vcpx/bzr.py 167
-            basis_tree = self._b.basis_tree()
+            basis_tree = self._branch.basis_tree()
hunk ./vcpx/bzr.py 169
-            diff = compare_trees(basis_tree, self._b.working_tree())
+            diff = compare_trees(basis_tree, self._working_tree)
hunk ./vcpx/bzr.py 191
-        self._b.working_tree().add(new_entries)
+        self._working_tree.add(new_entries)
hunk ./vcpx/bzr.py 221
-        self._b.working_tree().commit(logmessage, committer=author,
+        self._bzrdir.open_workingtree().commit(logmessage, committer=author,
hunk ./vcpx/bzr.py 230
-        self._b.working_tree().remove(entries)
+        self._working_tree.remove(entries)
hunk ./vcpx/bzr.py 243
-        self._b.working_tree().rename_one(oldentry, newentry)
+        self._working_tree.rename_one(oldentry, newentry)
hunk ./vcpx/bzr.py 254
-        if not exists(join(self.basedir, self.repository.METADIR)):
+        if self._bzrdir is None:
hunk ./vcpx/bzr.py 277
-            self._b = Branch.initialize(self.basedir)
+            self._bzrdir = BzrDir.create(self.basedir)
+            self._branch = self._bzrdir.create_branch()
+            self._working_tree = self._bzrdir.create_workingtree()
hunk ./vcpx/bzr.py 281
-            self._b = Branch.open(self.basedir)
-
-    def _getRepo(self):
-        try:
-            return self._b
-        except AttributeError:
-            self._b = Branch.open(self.basedir)
-            return self._b
+            self.__open_branch()
}

Context:

[Update hglib backend to work with recent versions of Mercurial.
Travis Cross <travis@crosswirecorp.com>**20060224200653
 Added required parameters to the calls to pull and clone.
] 
[Fix to hglib: don't try to .split() date as it is already a tuple.
Travis Cross <travis@crosswirecorp.com>**20060224200525] 
[In hglib, check if a file is in the manifest before trying to rename it.
Travis Cross <travis@crosswirecorp.com>**20060224200005] 
[Separate option name from its value
lele@metapensiero.it**20060221150654] 
[Remove spurious and dead code
lele@metapensiero.it**20060221110359
 I'm not able to trace the origin of this code, reasonably that loop
 was in a support method and then moved inside __init__().
 Good catch, Evgeny!
] 
[Suggest #tailor IRC channel, not #darcs
lele@metapensiero.it**20060216205756] 
[Disallow encodings other than utf-8 for mercurial
Brendan Cully <brendan@kublai.com>**20060216201024] 
[hglib doesn't accept unicode strings for path names, so encode them
Brendan Cully <brendan@kublai.com>**20060216200909] 
[Don't force the LANG on svn commit
lele@nautilus.homeip.net**20060214163944
 Tailor used LANG=C to be able to catch the revision number generated
 by commit. It now assumes the revision number is the integer value
 printed out by svn in the last line of commit output.
] 
[Clever change to stop misreading the boolean expression as a keyword argument
lele@nautilus.homeip.net**20060125235421] 
[Fix handling of tla archives with "untagged-source unrecognized" set
Cameron Patrick <cameron@patrick.wattle.id.au>**20060212173351
 If a tla archive has the "untagged-source unrecognized" option in its
 tagging-method file, tla will complain if there are any foreign files
 present (e.g. the _darcs directory containing darcs metadata).  The
 tla backend was supposed to fix this but the code there didn't work
 properly, as it was too fussy about tla exit codes and the output
 formats of `tla tree-lint`.
 This patch makes it work again (tested with tla 1.3.3).
] 
[More informative error messages
lele@metapensiero.it**20060209194125] 
[Fix to #30: handle CVS target, creating repository and working dir
lele@metapensiero.it**20060209193342] 
[Use "initialize+pull" instead of "get" when the directory already exist
lele@metapensiero.it**20060209193158] 
[Added a comment at top to clarify the strange markup
lele@metapensiero.it**20060203192712] 
[Fix typo
lele@metapensiero.it**20060203192642] 
[Convert the delay into a float
lele@metapensiero.it**20060128112524
 This fixes #34.
] 
[Test also the default case for look-for-adds
lele@metapensiero.it**20060124172039] 
[Allow 'look-for-adds' for darcs repositories
lele@metapensiero.it**20060124171536
 I'm little bit worried that this may hide real bugs, but here it is.
] 
[When collapsing two changesets into one, make sure the tags from the second go into the combined one.  Fixes ticket #26.
tailor23494@aaronkaplan.info**20060120225053] 
[Do not stop on GetUpstreamChangesetsFailure
lele@metapensiero.it**20060118105809
 When operating on several projects, do not stop on this kind of error,
 that most often is related to overloaded CVS servers, but keep going
 with the other projects.
] 
[There's no "string" builtin type, use "basestring" instead.
lele@metapensiero.it**20060118091638] 
[Annotate the characters that tailor washes out of Subversion XML logs
lele@metapensiero.it**20060118091528
 when filter-badchars is set to True.
] 
[Fix cut-n-paste error
lele@metapensiero.it**20051228174346
 This most probably caused some breakage in projects using distinct
 shared directories for source and target repositories.
] 
[M-x whitespace-cleanup
lele@metapensiero.it**20051227134851] 
[Do not add entries inside a moved/copied directory on bzr target
lele@metapensiero.it**20051227134834
 The fix to #24 and indirectly #23 triggered (actually, the test did) a
 similar issue solved for Subversion with [840] and [841]. This patch
 applies a similar solution for BazaarNG, to prevent addition within a
 renamed/copied directory. Specifically, this may happen for example
 in a changeset coming from Svn that
 
 1. copies a directory
 2. replaces (a Subversion "R" event) an item in the target with
    something else
] 
[Reset the notion of external copies at each changeset
lele@metapensiero.it**20051227122808
 Changesets [840] and [841] introduced a bug in the Subversion log
 parser, outlined by #24. This fix the case by resetting the list of
 copied paths at each changeset.
] 
[Avoid execution of too long command lines
lele@metapensiero.it**20051226181934
 Now the mechanism that executes external commands respects a maximum
 size for the command line, eventually executing the external command
 multiple times operating on a slice of the original arguments at a
 time.
] 
[Do not use bzr's smart_add_tree as it ignores entries
marienz@gentoo.org**20051226094327
 Also, do not add rename targets as they are already considered by bzr.
] 
[Parametrize the temporary directory used by tests
lele@metapensiero.it**20051224190640] 
[Simplify rst2html command line
lele@metapensiero.it**20051224190005
 Recent docutils automatically embeds the right stylesheet.
] 
[Explicitly deprecate the current svndump backend
lele@metapensiero.it**20051224185919] 
[New option ignore-externals on svn source backend
lele@metapensiero.it**20051224185547
 This **changes** the default behaviour of Tailor svn source backend: now
 it uses `--ignore-externals` to checkouts and updates. You can override
 the default putting "ignore-externals = False" in the svn repository
 section. 
] 
[TAG Version 0.9.20
lele@metapensiero.it**20051223153837] 
Patch bundle hash:
ab68a0bab18368b4cfa98ce7bb0b4b0ed56dd8a5
