Rev 1110: Merge upstream. in http://people.samba.org/bzr/jelmer/bzr-svn/cext

Jelmer Vernooij jelmer at samba.org
Thu Jun 19 16:45:20 BST 2008


At http://people.samba.org/bzr/jelmer/bzr-svn/cext

------------------------------------------------------------
revno: 1110
revision-id: jelmer at samba.org-20080619154518-42h5p6fu8z4vefqy
parent: jelmer at samba.org-20080619151659-3qwqov4pv3aoqvti
parent: jelmer at samba.org-20080619153347-eysgz8ci9hvjr5r3
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: cext
timestamp: Thu 2008-06-19 17:45:18 +0200
message:
  Merge upstream.
modified:
  tests/__init__.py              __init__.py-20060508151940-e9f4d914801a2535
  tree.py                        tree.py-20060624222557-dudlwqcmkf22lt2s-1
  wc.c                           wc.pyx-20080313142018-10l8l23vha2j9e6b-1
  workingtree.py                 workingtree.py-20060306120941-b083cb0fdd4a69de
    ------------------------------------------------------------
    revno: 950.3.184
    revision-id: jelmer at samba.org-20080619153347-eysgz8ci9hvjr5r3
    parent: jelmer at samba.org-20080619140637-nxobzdjoac3l6rkx
    parent: jelmer at samba.org-20080619153326-z4fa3jgpyg5rbn02
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: 0.4
    timestamp: Thu 2008-06-19 17:33:47 +0200
    message:
      Merge use of own python bindings for wc.
    added:
      editor.c                       editor.c-20080602191336-frj7az1sdk13o1tw-1
      editor.h                       editor.h-20080602191336-frj7az1sdk13o1tw-2
      util.c                         util.c-20080531154025-s8ef6ej9tytsnkkw-1
      util.h                         util.h-20080531154025-s8ef6ej9tytsnkkw-2
      wc.c                           wc.pyx-20080313142018-10l8l23vha2j9e6b-1
    modified:
      errors.py                      errors.py-20061226172623-w1sbj8ynpo0eojqp-1
      setup.py                       setup.py-20060502115218-86950492da22353f
      tests/__init__.py              __init__.py-20060508151940-e9f4d914801a2535
      tree.py                        tree.py-20060624222557-dudlwqcmkf22lt2s-1
      workingtree.py                 workingtree.py-20060306120941-b083cb0fdd4a69de
    ------------------------------------------------------------
    revno: 950.9.3
    revision-id: jelmer at samba.org-20080619153326-z4fa3jgpyg5rbn02
    parent: jelmer at samba.org-20080619140810-f4ndo3wirlc2w7u2
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: 0.4-wc
    timestamp: Thu 2008-06-19 17:33:26 +0200
    message:
      Cherrypick own Python bindings for workingcopy management.
    removed:
      wc.py                          wc.py-20080617201206-br2171i7qnc473mz-1
    added:
      editor.c                       editor.c-20080602191336-frj7az1sdk13o1tw-1
      editor.h                       editor.h-20080602191336-frj7az1sdk13o1tw-2
      util.c                         util.c-20080531154025-s8ef6ej9tytsnkkw-1
      util.h                         util.h-20080531154025-s8ef6ej9tytsnkkw-2
      wc.c                           wc.pyx-20080313142018-10l8l23vha2j9e6b-1
    modified:
      errors.py                      errors.py-20061226172623-w1sbj8ynpo0eojqp-1
      setup.py                       setup.py-20060502115218-86950492da22353f
      tests/__init__.py              __init__.py-20060508151940-e9f4d914801a2535
      tree.py                        tree.py-20060624222557-dudlwqcmkf22lt2s-1
      workingtree.py                 workingtree.py-20060306120941-b083cb0fdd4a69de
    ------------------------------------------------------------
    revno: 950.9.2
    revision-id: jelmer at samba.org-20080619140810-f4ndo3wirlc2w7u2
    parent: jelmer at samba.org-20080617201754-q2q3jak510dod9ac
    parent: jelmer at samba.org-20080619140637-nxobzdjoac3l6rkx
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: 0.4-wc
    timestamp: Thu 2008-06-19 16:08:10 +0200
    message:
      Merge upstream.
    added:
      delta.py                       delta.py-20080617225125-jeg43afui0czkuwk-1
    modified:
      Makefile                       makefile.other-20080311181537-5svhje3v1flh1n4f-1
      __init__.py                    __init__.py-20051008155114-eae558e6cf149e1d
      auth.py                        auth.py-20071209174622-w8d42k6nm5yhxvi8-1
      commit.py                      commit.py-20060607190346-qvq128wgfubhhgm2-1
      convert.py                     svn2bzr.py-20051018015439-cb4563bff29e632d
      fetch.py                       fetch.py-20060625004942-x2lfaib8ra707a8p-1
      format.py                      format.py-20070917005147-94kb7zysotf82kqw-1
      logwalker.py                   logwalker.py-20060621215743-c13fhfnyzh1xzwh2-1
      mapping3/__init__.py           __init__.py-20080502174630-9324zh25kka98vlw-1
      ra.py                          ra.py-20080615005305-t5221niknu8rm6bt-1
      revspec.py                     revspec.py-20071106211507-q4fz2en91yrmjjl8-1
      tests/__init__.py              __init__.py-20060508151940-e9f4d914801a2535
      tests/test_branch.py           test_branch.py-20060508162215-74ffeb5d608f8e20
      tests/test_checkout.py         test_checkout.py-20070101154110-eevkc29qj0q7udz5-1
      tests/test_fetch.py            test_fetch.py-20070624210302-luvgwjmlfysk5qeq-1
      tests/test_workingtree.py      test_workingtree.py-20060622191524-0di7bc3q1ckdbybb-1
      transport.py                   transport.py-20060406231150-b3472d06b3a0818d
      tree.py                        tree.py-20060624222557-dudlwqcmkf22lt2s-1
      workingtree.py                 workingtree.py-20060306120941-b083cb0fdd4a69de
    ------------------------------------------------------------
    revno: 950.9.1
    revision-id: jelmer at samba.org-20080617201754-q2q3jak510dod9ac
    parent: jelmer at samba.org-20080617195350-opqh4swky27h0ky7
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: 0.4-wc
    timestamp: Tue 2008-06-17 22:17:54 +0200
    message:
      Add abstraction layer around working copy functions.
    added:
      wc.py                          wc.py-20080617201206-br2171i7qnc473mz-1
    modified:
      transport.py                   transport.py-20060406231150-b3472d06b3a0818d
      tree.py                        tree.py-20060624222557-dudlwqcmkf22lt2s-1
      workingtree.py                 workingtree.py-20060306120941-b083cb0fdd4a69de
=== modified file 'tests/__init__.py'
--- a/tests/__init__.py	2008-06-17 22:36:11 +0000
+++ b/tests/__init__.py	2008-06-19 15:45:18 +0000
@@ -84,7 +84,6 @@
 
         return self.open_local_bzrdir(repos_url, relpath)
 
-
     def make_checkout(self, repos_url, relpath):
         self.client_ctx.checkout(repos_url, relpath, "HEAD", "HEAD", 
                                  True, False)

=== modified file 'tree.py'
--- a/tree.py	2008-06-19 14:03:32 +0000
+++ b/tree.py	2008-06-19 15:45:18 +0000
@@ -261,7 +261,7 @@
         self._repository = workingtree.branch.repository
 
         def add_file_to_inv(relpath, id, revid, adm):
-            (delta_props, props) = adm.get_prop_diffs(self.workingtree.abspath(relpath))
+            (propchanges, props) = adm.get_prop_diffs(self.workingtree.abspath(relpath).encode("utf-8"))
             if props.has_key(properties.PROP_SPECIAL):
                 ie = self._inventory.add_path(relpath, 'symlink', id)
                 ie.symlink_target = open(self._abspath(relpath)).read()[len("link "):]
@@ -313,8 +313,7 @@
                 
                 if entry.kind == core.NODE_DIR:
                     subwc = wc.WorkingCopy(adm, 
-                            self.workingtree.abspath(subrelpath), 
-                                             False, 0, None)
+                            self.workingtree.abspath(subrelpath))
                     try:
                         add_dir_to_inv(subrelpath, subwc, id)
                     finally:

=== modified file 'wc.c'
--- a/wc.c	2008-06-19 15:16:59 +0000
+++ b/wc.c	2008-06-19 15:45:18 +0000
@@ -70,7 +70,7 @@
 static svn_error_t *py_ra_report_finish(void *baton, apr_pool_t *pool)
 {
     PyObject *self = (PyObject *)baton, *ret;
-	ret = PyObject_CallFunction(self, "finish", "");
+	ret = PyObject_CallFunction(self, "finish", NULL);
 	if (ret == NULL)
 		return py_svn_error();
     return NULL;
@@ -79,7 +79,7 @@
 static svn_error_t *py_ra_report_abort(void *baton, apr_pool_t *pool)
 {
     PyObject *self = (PyObject *)baton, *ret;
-	ret = PyObject_CallFunction(self, "abort", "");
+	ret = PyObject_CallFunction(self, "abort", NULL);
 	if (ret == NULL)
 		return py_svn_error();
     return NULL;
@@ -138,7 +138,9 @@
 }
 
 static PyMemberDef entry_members[] = {
+	{ "name", T_STRING, offsetof(EntryObject, entry.name), READONLY, NULL },
 	{ "copyfrom_url", T_STRING, offsetof(EntryObject, entry.copyfrom_url), READONLY, NULL },
+	{ "copyfrom_rev", T_LONG, offsetof(EntryObject, entry.copyfrom_rev), READONLY, NULL },
 	{ "url", T_STRING, offsetof(EntryObject, entry.url), READONLY, NULL },
 	{ "repos", T_STRING, offsetof(EntryObject, entry.repos), READONLY, NULL },
 	{ "schedule", T_INT, offsetof(EntryObject, entry.schedule), READONLY, NULL },
@@ -350,7 +352,7 @@
 	apr_array_header_t *propchanges;
 	apr_hash_t *original_props;
 	AdmObject *admobj = (AdmObject *)self;
-	svn_prop_t *el;
+	svn_prop_t el;
 	int i;
 	PyObject *py_propchanges, *py_orig_props;
 
@@ -364,9 +366,9 @@
 				path, admobj->adm, temp_pool));
 	py_propchanges = PyList_New(propchanges->nelts);
 	for (i = 0; i < propchanges->nelts; i++) {
-		el = APR_ARRAY_IDX(propchanges, i, svn_prop_t *);
+		el = APR_ARRAY_IDX(propchanges, i, svn_prop_t);
 		PyList_SetItem(py_propchanges, i, 
-					   Py_BuildValue("(ss#)", el->name, el->value->data, el->value->len));
+		   Py_BuildValue("(ss#)", el.name, el.value->data, el.value->len));
 	}
 	py_orig_props = prop_hash_to_dict(original_props);
 	apr_pool_destroy(temp_pool);
@@ -443,7 +445,7 @@
 	Py_RETURN_NONE;
 }
 
-static PyObject *adm_crawl_revisions(PyObject *self, PyObject *args, PyObject *kwargs)
+static PyObject *adm_crawl_revisions(PyObject *self, PyObject *args)
 {
 	char *path;
 	PyObject *reporter;
@@ -452,22 +454,15 @@
 	apr_pool_t *temp_pool;
 	AdmObject *admobj = (AdmObject *)self;
 	svn_wc_traversal_info_t *traversal_info;
-	char *kwnames[] = { "path", "reporter", "restore_files", "recurse", "use_commit_times", "notify_func", NULL };
 
-	if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sO|bbbO", kwnames, &path, 
-									 &reporter, &restore_files, &recurse, 
-									 &use_commit_times, &notify_func))
+	if (!PyArg_ParseTuple(args, "sO|bbbO", &path, &reporter, &restore_files, &recurse, &use_commit_times,
+						  &notify_func))
 		return NULL;
 
 	temp_pool = Pool();
 	if (temp_pool == NULL)
 		return NULL;
 	traversal_info = svn_wc_init_traversal_info(temp_pool);
-	if (traversal_info == NULL) {
-		PyErr_NoMemory();
-		return NULL;
-	}
-
 	RUN_SVN_WITH_POOL(temp_pool, svn_wc_crawl_revisions2(path, admobj->adm, 
 				&py_ra_reporter, (void *)reporter, 
 				restore_files, recurse, use_commit_times, 
@@ -603,7 +598,7 @@
 	{ "add", adm_add, METH_VARARGS, NULL },
 	{ "copy", adm_copy, METH_VARARGS, NULL },
 	{ "delete", adm_delete, METH_VARARGS, NULL },
-	{ "crawl_revisions", (PyCFunction)adm_crawl_revisions, METH_VARARGS|METH_KEYWORDS, NULL },
+	{ "crawl_revisions", adm_crawl_revisions, METH_VARARGS, NULL },
 	{ "get_update_editor", adm_get_update_editor, METH_VARARGS, NULL },
 	{ "close", (PyCFunction)adm_close, METH_NOARGS, NULL },
 	{ "entry", (PyCFunction)adm_entry, METH_VARARGS, NULL },
@@ -660,6 +655,26 @@
     return PyBool_FromLong(svn_wc_is_normal_prop(name));
 }
 
+static PyObject *is_adm_dir(PyObject *self, PyObject *args)
+{
+	char *name;
+	apr_pool_t *pool;
+	svn_boolean_t ret;
+
+	if (!PyArg_ParseTuple(args, "s", &name))
+		return NULL;
+
+	pool = Pool();
+	if (pool == NULL)
+		return NULL;
+
+	ret = svn_wc_is_adm_dir(name, pool);
+
+	apr_pool_destroy(pool);
+
+    return PyBool_FromLong(ret);
+}
+
 static PyObject *is_wc_prop(PyObject *self, PyObject *args)
 {
 	char *name;
@@ -785,6 +800,7 @@
 	{ "get_default_ignores", get_default_ignores, METH_VARARGS, NULL },
 	{ "get_adm_dir", (PyCFunction)get_adm_dir, METH_NOARGS, NULL },
 	{ "get_pristine_copy_path", get_pristine_copy_path, METH_VARARGS, NULL },
+	{ "is_adm_dir", is_adm_dir, METH_VARARGS, NULL },
 	{ "is_normal_prop", is_normal_prop, METH_VARARGS, NULL },
 	{ "is_entry_prop", is_entry_prop, METH_VARARGS, NULL },
 	{ "is_wc_prop", is_wc_prop, METH_VARARGS, NULL },

=== modified file 'workingtree.py'
--- a/workingtree.py	2008-06-19 15:16:59 +0000
+++ b/workingtree.py	2008-06-19 15:45:18 +0000
@@ -31,7 +31,7 @@
 from bzrlib.transport.local import LocalTransport
 from bzrlib.workingtree import WorkingTree, WorkingTreeFormat
 
-from bzrlib.plugins.svn import core, properties, wc
+from bzrlib.plugins.svn import core, properties
 from bzrlib.plugins.svn.branch import SvnBranch
 from bzrlib.plugins.svn.commit import _revision_id_to_svk_feature
 from bzrlib.plugins.svn.convert import SvnConverter
@@ -47,6 +47,7 @@
 from bzrlib.plugins.svn.transport import (SvnRaTransport, bzr_to_svn_url, 
                        svn_config) 
 from bzrlib.plugins.svn.tree import SvnBasisTree
+from bzrlib.plugins.svn.wc import *
 
 import os
 import urllib
@@ -80,14 +81,14 @@
 class SvnWorkingTree(WorkingTree):
     """WorkingTree implementation that uses a Subversion Working Copy for storage."""
     def __init__(self, bzrdir, local_path, branch):
-        version = wc.check_wc(local_path)
+        version = check_wc(local_path)
         self._format = SvnWorkingTreeFormat(version)
         self.basedir = local_path
         assert isinstance(self.basedir, unicode)
         self.bzrdir = bzrdir
         self._branch = branch
         self._get_wc()
-        (min_rev, max_rev, switch, modified) = wc.revision_status(self.basedir, None, True, None)
+        (min_rev, max_rev, switch, modified) = revision_status(self.basedir, None, True, None)
         assert min_rev >= 0 and max_rev >= 0, "min rev: (%d, %d)" % (min_rev, max_rev)
         self.base_revnum = max_rev
         self.base_tree = SvnBasisTree(self)
@@ -95,29 +96,30 @@
 
         self.read_working_inventory()
 
-        self.controldir = os.path.join(self.basedir, wc.get_adm_dir(), 'bzr')
+        self.controldir = os.path.join(self.basedir, get_adm_dir(), 
+                                       'bzr')
         try:
             os.makedirs(self.controldir)
             os.makedirs(os.path.join(self.controldir, 'lock'))
         except OSError:
             pass
         control_transport = bzrdir.transport.clone(urlutils.join(
-                                                   wc.get_adm_dir(), 'bzr'))
+                                                   get_adm_dir(), 'bzr'))
         self._control_files = LockableFiles(control_transport, 'lock', LockDir)
 
     def get_ignore_list(self):
-        ignore_globs = set([wc.get_adm_dir()])
+        ignore_globs = set([get_adm_dir()])
         ignore_globs.update(ignores.get_runtime_ignores())
         ignore_globs.update(ignores.get_user_ignores())
 
-        def dir_add(adm, prefix, patprefix):
-            ignorestr = adm.prop_get(properties.PROP_IGNORE, 
+        def dir_add(wc, prefix, patprefix):
+            ignorestr = wc.prop_get(properties.PROP_IGNORE, 
                                     self.abspath(prefix).rstrip("/"))
             if ignorestr is not None:
                 for pat in ignorestr.splitlines():
                     ignore_globs.add(urlutils.joinpath(patprefix, pat))
 
-            entries = adm.entries_read(False)
+            entries = wc.entries_read(False)
             for entry in entries:
                 if entry == "":
                     continue
@@ -128,7 +130,7 @@
 
                 subprefix = os.path.join(prefix, entry)
 
-                subwc = wc.WorkingCopy(adm, self.abspath(subprefix))
+                subwc = WorkingCopy(wc, self.abspath(subprefix))
                 try:
                     dir_add(subwc, subprefix, urlutils.joinpath(patprefix, entry))
                 finally:
@@ -138,12 +140,12 @@
         try:
             dir_add(adm, "", ".")
         finally:
-            adm.close()
+            wc.close()
 
         return ignore_globs
 
     def is_control_filename(self, path):
-        return wc.is_adm_dir(path)
+        return is_adm_dir(path)
 
     def apply_inventory_delta(self, changes):
         raise NotImplementedError(self.apply_inventory_delta)
@@ -175,19 +177,20 @@
         # FIXME: Use to_file argument
         # FIXME: Use verbose argument
         assert isinstance(files, list)
-        adm = self._get_wc(write_lock=True)
+        wc = self._get_wc(write_lock=True)
         try:
             for file in files:
-                adm.delete(self.abspath(file))
+                wc.delete(self.abspath(file))
         finally:
-            adm.close()
+            wc.close()
 
         for file in files:
             self._change_fileid_mapping(None, file)
         self.read_working_inventory()
 
     def _get_wc(self, relpath="", write_lock=False):
-        return wc.WorkingCopy(None, self.abspath(relpath).rstrip("/"), write_lock)
+        return WorkingCopy(None, self.abspath(relpath).rstrip("/"), 
+                                write_lock)
 
     def _get_rel_wc(self, relpath, write_lock=False):
         dir = os.path.dirname(relpath)
@@ -200,8 +203,7 @@
         for entry in from_paths:
             try:
                 to_wc = self._get_wc(to_dir, write_lock=True)
-                to_wc.copy(self.abspath(entry), 
-                            os.path.basename(entry), None, None)
+                to_wc.copy(self.abspath(entry), os.path.basename(entry))
             finally:
                 to_wc.close()
             try:
@@ -278,36 +280,36 @@
                     pass
 
         def find_copies(url, relpath=""):
-            adm = self._get_wc(relpath)
-            entries = adm.entries_read(False)
+            wc = self._get_wc(relpath)
+            entries = wc.entries_read(False)
             for entry in entries.values():
                 subrelpath = os.path.join(relpath, entry.name)
                 if entry.name == "" or entry.kind != 'directory':
                     if ((entry.copyfrom_url == url or entry.url == url) and 
-                        not (entry.schedule in (wc.SCHEDULE_DELETE,
-                                                wc.SCHEDULE_REPLACE))):
+                        not (entry.schedule in (SCHEDULE_DELETE,
+                                                SCHEDULE_REPLACE))):
                         yield os.path.join(
                                 self.branch.get_branch_path().strip("/"), 
                                 subrelpath)
                 else:
                     find_copies(subrelpath)
-            adm.close()
+            wc.close()
 
         def find_ids(entry, rootwc):
             relpath = urllib.unquote(entry.url[len(entry.repos):].strip("/"))
-            assert entry.schedule in (wc.SCHEDULE_NORMAL, 
-                                      wc.SCHEDULE_DELETE,
-                                      wc.SCHEDULE_ADD,
-                                      wc.SCHEDULE_REPLACE)
-            if entry.schedule == wc.SCHEDULE_NORMAL:
+            assert entry.schedule in (SCHEDULE_NORMAL, 
+                                      SCHEDULE_DELETE,
+                                      SCHEDULE_ADD,
+                                      SCHEDULE_REPLACE)
+            if entry.schedule == SCHEDULE_NORMAL:
                 assert entry.revision >= 0
                 # Keep old id
                 return self.path_to_file_id(entry.cmt_rev, entry.revision, 
                         relpath)
-            elif entry.schedule == wc.SCHEDULE_DELETE:
+            elif entry.schedule == SCHEDULE_DELETE:
                 return (None, None)
-            elif (entry.schedule == wc.SCHEDULE_ADD or 
-                  entry.schedule == wc.SCHEDULE_REPLACE):
+            elif (entry.schedule == SCHEDULE_ADD or 
+                  entry.schedule == SCHEDULE_REPLACE):
                 # See if the file this file was copied from disappeared
                 # and has no other copies -> in that case, take id of other file
                 if (entry.copyfrom_url and 
@@ -322,7 +324,7 @@
 
         def add_dir_to_inv(relpath, adm, parent_id):
             assert isinstance(relpath, unicode)
-            entries = adm.entries_read(False)
+            entries = wc.entries_read(False)
             entry = entries[""]
             assert parent_id is None or isinstance(parent_id, str), \
                     "%r is not a string" % parent_id
@@ -348,7 +350,7 @@
                 assert entry
                 
                 if entry.kind == core.NODE_DIR:
-                    subwc = wc.WorkingCopy(adm, self.abspath(subrelpath))
+                    subwc = WorkingCopy(wc, self.abspath(subrelpath))
                     try:
                         add_dir_to_inv(subrelpath, subwc, id)
                     finally:
@@ -392,7 +394,7 @@
             revnum = self.branch.lookup_revision_id(
                     newrevtree.inventory[id].revision)
 
-            adm.process_committed(self.abspath(path).rstrip("/"), 
+            wc.process_committed(self.abspath(path).rstrip("/"), 
                           False, revnum, 
                           time_to_cstring(newrev.timestamp), 
                           newrev.committer)
@@ -400,23 +402,23 @@
             if newrevtree.inventory[id].kind != 'directory':
                 return
 
-            entries = adm.entries_read(True)
+            entries = wc.entries_read(True)
             for entry in entries:
                 if entry == "":
                     continue
 
-                subwc = wc.WorkingCopy(adm, os.path.join(self.basedir, path, entry), write_lock=True)
+                subwc = WorkingCopy(wc, os.path.join(self.basedir, path, entry))
                 try:
                     update_settings(subwc, os.path.join(path, entry))
                 finally:
                     subwc.close()
 
         # Set proper version for all files in the wc
-        adm = self._get_wc(write_lock=True)
+        wc = self._get_wc(write_lock=True)
         try:
-            update_settings(adm, "")
+            update_settings(wc, "")
         finally:
-            adm.close()
+            wc.close()
         self.base_revid = revid
 
     def smart_add(self, file_list, recurse=True, action=None, save=True):
@@ -439,7 +441,7 @@
                 if not self.inventory.has_filename(f):
                     if save:
                         mutter('adding %r', file_path)
-                        adm.add(file_path, None, 0, None, None, None)
+                        wc.add(file_path)
                     added.append(file_path)
                 if recurse and osutils.file_kind(file_path) == 'directory':
                     # Filter out ignored files and update ignored
@@ -452,7 +454,7 @@
                             ignored.setdefault(ignore_glob, []).append(c_path)
                         todo.append(c_path)
             finally:
-                adm.close()
+                wc.close()
             if todo != []:
                 cadded, cignored = self.smart_add(todo, recurse, action, save)
                 added.extend(cadded)
@@ -472,7 +474,7 @@
             adm = self._get_wc(os.path.dirname(f), write_lock=True)
             try:
                 try:
-                    adm.add(os.path.join(self.basedir, f))
+                    wc.add(os.path.join(self.basedir, f))
                     if ids is not None:
                         self._change_fileid_mapping(ids.next(), f, adm)
                 except SubversionException, (_, num):
@@ -482,7 +484,7 @@
                         raise NoSuchFile(path=f)
                     raise
             finally:
-                adm.close()
+                wc.close()
         self.read_working_inventory()
 
     def basis_tree(self):
@@ -536,7 +538,7 @@
         existing = "".join(map(lambda (path, id): "%s\t%s\n" % (path, id), new_entries.items()))
         if existing != "":
             subwc.prop_set(SVN_PROP_BZR_FILEIDS, existing.encode("utf-8"), self.basedir)
-        if adm is None:
+        if wc is None:
             subwc.close()
 
     def _get_base_branch_props(self):
@@ -545,7 +547,7 @@
 
     def _get_new_file_ids(self, adm):
         committed = self._get_base_branch_props().get(SVN_PROP_BZR_FILEIDS, "")
-        existing = adm.prop_get(SVN_PROP_BZR_FILEIDS, self.basedir)
+        existing = wc.prop_get(SVN_PROP_BZR_FILEIDS, self.basedir)
         if existing is None or committed == existing:
             return {}
         return dict(map(lambda x: str(x).split("\t"), 
@@ -570,7 +572,7 @@
             else:
                 bzr_merge = ""
 
-            adm.prop_set(SVN_PROP_BZR_ANCESTRY+str(self.branch.mapping.scheme), 
+            wc.prop_set(SVN_PROP_BZR_ANCESTRY+str(self.branch.mapping.scheme), 
                                  self._get_bzr_merges(self._get_base_branch_props()) + bzr_merge, 
                                  self.basedir)
             
@@ -583,11 +585,10 @@
                 except InvalidRevisionId:
                     pass
 
-            adm.prop_set(SVN_PROP_SVK_MERGE, 
-                             serialize_svk_features(svk_merges), self.basedir, 
-                             False)
+            wc.prop_set(SVN_PROP_SVK_MERGE, 
+                             serialize_svk_features(svk_merges), self.basedir)
         finally:
-            adm.close()
+            wc.close()
 
     def add_pending_merge(self, revid):
         merges = self.pending_merges()
@@ -601,14 +602,14 @@
         merged = self._get_bzr_merges(self._get_base_branch_props()).splitlines()
         adm = self._get_wc()
         try:
-            merged_data = adm.prop_get(
+            merged_data = wc.prop_get(
                 SVN_PROP_BZR_ANCESTRY+str(self.branch.mapping.scheme), self.basedir)
             if merged_data is None:
                 set_merged = []
             else:
                 set_merged = merged_data.splitlines()
         finally:
-            adm.close()
+            wc.close()
 
         assert (len(merged) == len(set_merged) or 
                len(merged)+1 == len(set_merged))
@@ -698,13 +699,13 @@
         
         # Open related remote repository + branch
         try:
-            adm = wc.WorkingCopy(None, self.local_path)
+            wc = WorkingCopy(None, self.local_path)
         except SubversionException, (msg, ERR_WC_UNSUPPORTED_FORMAT):
             raise UnsupportedFormatError(msg, kind='workingtree')
         try:
             self.svn_url = adm.entry(self.local_path, True).url
         finally:
-            adm.close()
+            wc.close()
 
         self.remote_transport = SvnRaTransport(self.svn_url)
         self.remote_bzrdir = SvnRemoteAccess(self.remote_transport)




More information about the bazaar-commits mailing list