Rev 1109: Move update code to separate function. in http://people.samba.org/bzr/jelmer/bzr-svn/cext
Jelmer Vernooij
jelmer at samba.org
Thu Jun 19 16:17:00 BST 2008
At http://people.samba.org/bzr/jelmer/bzr-svn/cext
------------------------------------------------------------
revno: 1109
revision-id: jelmer at samba.org-20080619151659-3qwqov4pv3aoqvti
parent: jelmer at samba.org-20080619140332-8lnsdcix06pj2t45
parent: jelmer at samba.org-20080619140637-nxobzdjoac3l6rkx
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: cext
timestamp: Thu 2008-06-19 17:16:59 +0200
message:
Move update code to separate function.
modified:
auth.py auth.py-20071209174622-w8d42k6nm5yhxvi8-1
branch.py svnbranch.py-20051017135706-11c749eb0dab04a7
fetch.py fetch.py-20060625004942-x2lfaib8ra707a8p-1
wc.c wc.pyx-20080313142018-10l8l23vha2j9e6b-1
workingtree.py workingtree.py-20060306120941-b083cb0fdd4a69de
------------------------------------------------------------
revno: 950.3.183
revision-id: jelmer at samba.org-20080619140637-nxobzdjoac3l6rkx
parent: jelmer at samba.org-20080619135842-8kg5be1na8cgdptp
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Thu 2008-06-19 16:06:37 +0200
message:
Use property rather than function for busy data.
modified:
fetch.py fetch.py-20060625004942-x2lfaib8ra707a8p-1
ra.py ra.py-20080615005305-t5221niknu8rm6bt-1
transport.py transport.py-20060406231150-b3472d06b3a0818d
=== modified file 'auth.py'
--- a/auth.py 2008-06-19 14:03:32 +0000
+++ b/auth.py 2008-06-19 15:16:59 +0000
@@ -133,6 +133,7 @@
return ra.get_ssl_client_cert_pw_prompt_provider(
get_ssl_client_cert_pw, tries)
+
def get_stock_svn_providers():
providers = [ra.get_simple_provider(),
ra.get_username_provider(),
=== modified file 'branch.py'
--- a/branch.py 2008-06-17 20:27:33 +0000
+++ b/branch.py 2008-06-19 15:16:59 +0000
@@ -24,7 +24,7 @@
from bzrlib.revision import is_null, ensure_null, NULL_REVISION
from bzrlib.workingtree import WorkingTree
-from bzrlib.plugins.svn import core
+from bzrlib.plugins.svn import core, wc
from bzrlib.plugins.svn.commit import push
from bzrlib.plugins.svn.config import BranchConfig
from bzrlib.plugins.svn.core import SubversionException
@@ -33,6 +33,7 @@
from bzrlib.plugins.svn.repository import SvnRepository
from bzrlib.plugins.svn.transport import bzr_to_svn_url
+import os
class FakeControlFiles(object):
"""Dummy implementation of ControlFiles.
@@ -173,7 +174,7 @@
:param revision_id: Tip of the checkout.
:return: WorkingTree object of the checkout.
"""
- import os, wc
+ from bzrlib.plugins.svn.workingtree import update_wc
if revision_id is not None:
revnum = self.lookup_revision_id(revision_id)
else:
@@ -183,8 +184,14 @@
svn_url = bzr_to_svn_url(self.base)
wc.ensure_adm(to_location, self.repository.uuid, bzr_to_svn_url(self.base),
svn_url, revnum)
+ adm = wc.WorkingCopy(None, to_location)
+ conn = self.repository.transport.get_connection()
+ try:
+ update_wc(adm, to_location, conn, revnum)
+ finally:
+ if not conn.busy:
+ self.repository.transport.add_connection(conn)
wt = WorkingTree.open(to_location)
- wt.update(["."], revnum=revnum)
return wt
def create_checkout(self, to_location, revision_id=None, lightweight=False,
=== modified file 'fetch.py'
--- a/fetch.py 2008-06-19 14:03:32 +0000
+++ b/fetch.py 2008-06-19 15:16:59 +0000
@@ -676,7 +676,7 @@
reporter.finish()
finally:
if conn is not None:
- if not conn.is_busy():
+ if not conn.busy:
self.source.transport.add_connection(conn)
except:
editor.abort()
=== modified file 'wc.c'
--- a/wc.c 2008-06-05 14:48:23 +0000
+++ b/wc.c 2008-06-19 15:16:59 +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", NULL);
+ ret = PyObject_CallFunction(self, "finish", "");
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", NULL);
+ ret = PyObject_CallFunction(self, "abort", "");
if (ret == NULL)
return py_svn_error();
return NULL;
@@ -443,7 +443,7 @@
Py_RETURN_NONE;
}
-static PyObject *adm_crawl_revisions(PyObject *self, PyObject *args)
+static PyObject *adm_crawl_revisions(PyObject *self, PyObject *args, PyObject *kwargs)
{
char *path;
PyObject *reporter;
@@ -452,15 +452,22 @@
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_ParseTuple(args, "sO|bbbO", &path, &reporter, &restore_files, &recurse, &use_commit_times,
- ¬ify_func))
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sO|bbbO", kwnames, &path,
+ &reporter, &restore_files, &recurse,
+ &use_commit_times, ¬ify_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,
@@ -596,7 +603,7 @@
{ "add", adm_add, METH_VARARGS, NULL },
{ "copy", adm_copy, METH_VARARGS, NULL },
{ "delete", adm_delete, METH_VARARGS, NULL },
- { "crawl_revisions", adm_crawl_revisions, METH_VARARGS, NULL },
+ { "crawl_revisions", (PyCFunction)adm_crawl_revisions, METH_VARARGS|METH_KEYWORDS, 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 },
=== modified file 'workingtree.py'
--- a/workingtree.py 2008-06-19 14:03:32 +0000
+++ b/workingtree.py 2008-06-19 15:16:59 +0000
@@ -51,6 +51,18 @@
import os
import urllib
+def update_wc(adm, basedir, conn, revnum):
+ # FIXME: honor SVN_CONFIG_SECTION_HELPERS:SVN_CONFIG_OPTION_DIFF3_CMD
+ # FIXME: honor SVN_CONFIG_SECTION_MISCELLANY:SVN_CONFIG_OPTION_USE_COMMIT_TIMES
+ # FIXME: honor SVN_CONFIG_SECTION_MISCELLANY:SVN_CONFIG_OPTION_PRESERVED_CF_EXTS
+ editor = adm.get_update_editor(basedir, False, True)
+ assert editor is not None
+ reporter = conn.do_update(revnum, "", True, editor)
+ adm.crawl_revisions(basedir, reporter, restore_files=False,
+ recurse=True, use_commit_times=False)
+ # FIXME: handle externals
+
+
def generate_ignore_list(ignore_map):
"""Create a list of ignores, ordered by directory.
@@ -68,7 +80,7 @@
class SvnWorkingTree(WorkingTree):
"""WorkingTree implementation that uses a Subversion Working Copy for storage."""
def __init__(self, bzrdir, local_path, branch):
- version = svn.wc.check_wc(local_path)
+ version = wc.check_wc(local_path)
self._format = SvnWorkingTreeFormat(version)
self.basedir = local_path
assert isinstance(self.basedir, unicode)
@@ -76,6 +88,7 @@
self._branch = branch
self._get_wc()
(min_rev, max_rev, switch, modified) = wc.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)
self.base_revid = branch.generate_revision_id(self.base_revnum)
@@ -140,20 +153,12 @@
# FIXME: should be able to use -1 here
revnum = self.branch.get_revnum()
adm = self._get_wc()
- # FIXME: honor SVN_CONFIG_SECTION_HELPERS:SVN_CONFIG_OPTION_DIFF3_CMD
- # FIXME: honor SVN_CONFIG_SECTION_MISCELLANY:SVN_CONFIG_OPTION_USE_COMMIT_TIMES
- # FIXME: honor SVN_CONFIG_SECTION_MISCELLANY:SVN_CONFIG_OPTION_PRESERVED_CF_EXTS
try:
- editor = adm.get_update_editor(self.basedir, use_commit_times=False, recurse=True)
- assert editor is not None
conn = self.branch.repository.transport.get_connection()
try:
- reporter = conn.do_update(revnum, True, editor)
- adm.crawl_revisions(self.basedir, reporter, restore_files=False, recurse=True,
- use_commit_times=False)
+ update_wc(adm, self.basedir, conn, revnum)
finally:
self.branch.repository.transport.add_connection(conn)
- # FIXME: handle externals
finally:
adm.close()
return revnum
More information about the bazaar-commits
mailing list