Rev 1077: Don't return actual branch path from iter_changes() since this is also not returned by svn_ra_get_log(). in file:///data/jelmer/bzr-svn/rm-logpath/
Jelmer Vernooij
jelmer at samba.org
Thu Apr 3 21:44:01 BST 2008
At file:///data/jelmer/bzr-svn/rm-logpath/
------------------------------------------------------------
revno: 1077
revision-id: jelmer at samba.org-20080403204333-d5b721bj1sps1841
parent: jelmer at samba.org-20080402173552-qakpsv1d9ge0v2jc
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: rm-logpath
timestamp: Thu 2008-04-03 22:43:33 +0200
message:
Don't return actual branch path from iter_changes() since this is also not returned by svn_ra_get_log().
modified:
logwalker.py logwalker.py-20060621215743-c13fhfnyzh1xzwh2-1
repository.py repository.py-20060306123302-1f8c5069b3fe0265
scheme.py scheme.py-20060516195850-95181aae6b272f9e
tests/test_logwalker.py test_logwalker.py-20060622141944-pkocc3rj8g62ukbi-1
tests/test_scheme.py test_scheme.py-20060621221855-va2xabhlxpmc9llx-1
transport.py transport.py-20060406231150-b3472d06b3a0818d
=== modified file 'logwalker.py'
--- a/logwalker.py 2008-03-31 12:23:54 +0000
+++ b/logwalker.py 2008-04-03 20:43:33 +0000
@@ -168,7 +168,7 @@
revprops = lazy_dict(self._get_transport().revprop_list, revnum)
if changes.changes_path(revpaths, path, True):
- yield (path, revpaths, revnum, revprops)
+ yield (revpaths, revnum, revprops)
i += 1
if limit != 0 and i == limit:
break
@@ -307,26 +307,24 @@
log_entry = self.actual._get_transport().iter_log(path, revnum, revnum, 1, True, True, []).next()
return log_entry.revision
- def iter_changes(self, path, revnum, limit=0):
+ def iter_changes(self, path, from_revnum, to_revnum=0, limit=0):
"""Return iterator over all the revisions between revnum and 0 named path or inside path.
:param path: Branch path to start reporting (in revnum)
:param revnum: Start revision.
- :return: An iterator that yields tuples with (path, paths, revnum, revprops)
+ :return: An iterator that yields tuples with (paths, revnum, revprops)
where paths is a dictionary with all changes that happened in path
in revnum.
"""
assert revnum >= 0
- for log_entry in self._get_transport().iter_log(path, revnum, 0, limit, True, True, []):
+ for log_entry in self._get_transport().iter_log(path, from_revnum, to_revnum, limit, True, True, []):
revpaths = {}
for k,v in log_entry.changed_paths.items():
revpaths[k] = (v.action, v.copyfrom_path, v.copyfrom_rev)
revnum = log_entry.revision
- next = changes.find_prev_location(revpaths, path, revnum)
revprops = lazy_dict(self._get_transport().revprop_list, revnum)
- yield (path, revpaths, revnum, revprops)
- path = next[0]
+ yield (revpaths, revnum, revprops)
def get_revision_paths(self, revnum):
"""Obtain dictionary with all the changes in a particular revision.
=== modified file 'repository.py'
--- a/repository.py 2008-03-31 03:00:42 +0000
+++ b/repository.py 2008-04-03 20:43:33 +0000
@@ -280,7 +280,7 @@
latest_revnum = self.transport.get_latest_revnum()
- for (_, paths, revnum, revprops) in self._log.iter_changes("", latest_revnum):
+ for (paths, revnum, revprops) in self._log.iter_changes("", latest_revnum):
if pb:
pb.update("discovering revisions", revnum, latest_revnum)
yielded_paths = set()
@@ -567,23 +567,27 @@
assert mapping.is_branch(branch_path) or mapping.is_tag(branch_path), \
"Mapping %r doesn't accept %s as branch or tag" % (mapping, branch_path)
- for (bp, paths, revnum, revprops) in self._log.iter_changes(branch_path, revnum):
- assert revnum > 0 or bp == ""
- assert mapping.is_branch(bp) or mapping.is_tag(bp), "%r is not a valid path" % bp
+ for (paths, revnum, revprops) in self._log.iter_changes(branch_path, revnum):
+ assert revnum > 0 or branch_path == ""
+ assert mapping.is_branch(branch_path) or mapping.is_tag(branch_path), "%r is not a valid path" % branch_path
- if (paths.has_key(bp) and paths[bp][1] is not None and
- not (mapping.is_branch(paths[bp][1]) or mapping.is_tag(paths[bp][1]))):
+ if (paths.has_key(branch_path) and paths[branch_path][1] is not None and
+ not (mapping.is_branch(paths[branch_path][1]) or mapping.is_tag(paths[branch_path][1]))):
# Make it look like the branch started here if the mapping
# doesn't support weird paths as branches
- for c in self._log.find_children(paths[bp][1], paths[bp][2]):
- path = c.replace(paths[bp][1], bp+"/", 1).replace("//", "/")
+ for c in self._log.find_children(paths[branch_path][1], paths[branch_path][2]):
+ path = c.replace(paths[branch_path][1], branch_path+"/", 1).replace("//", "/")
paths[path] = ('A', None, -1)
- paths[bp] = ('A', None, -1)
+ paths[branch_path] = ('A', None, -1)
- yield (bp, paths, revnum, revprops)
+ yield (branch_path, paths, revnum, revprops)
return
- yield (bp, paths, revnum, revprops)
+ yield (branch_path, paths, revnum, revprops)
+
+ next = find_prev_location(paths, branch_path, revnum)
+ if next is not None:
+ (branch_path, _) = next
def iter_reverse_branch_changes(self, branch_path, revnum, mapping):
"""Return all the changes that happened in a branch
@@ -701,9 +705,8 @@
pb = ui.ui_factory.nested_progress_bar()
try:
- for i in xrange(from_revnum, to_revnum+1):
+ for (paths, i, revprops) in self._log.iter_changes("", from_revnum, to_revnum+1):
pb.update("finding branches", i, to_revnum+1)
- paths = self._log.get_revision_paths(i)
for p in sorted(paths.keys()):
if scheme.is_branch(p) or scheme.is_tag(p):
if paths[p][0] in ('R', 'D') and p in created_branches:
=== modified file 'scheme.py'
--- a/scheme.py 2008-03-30 21:43:54 +0000
+++ b/scheme.py 2008-04-03 20:43:33 +0000
@@ -446,7 +446,7 @@
pb = ui.ui_factory.nested_progress_bar()
scheme_cache = {}
try:
- for (bp, revpaths, revnum, revprops) in changed_paths:
+ for (revpaths, revnum, revprops) in changed_paths:
assert isinstance(revpaths, dict)
pb.update("analyzing repository layout", last_revnum-revnum,
last_revnum)
=== modified file 'tests/test_logwalker.py'
--- a/tests/test_logwalker.py 2008-03-30 21:43:54 +0000
+++ b/tests/test_logwalker.py 2008-04-03 20:43:33 +0000
@@ -83,10 +83,10 @@
walker = self.get_log_walker(transport=SvnRaTransport(repos_url))
self.assertEquals([
- ("branches/abranch/foo", {"branches/abranch": ('A', 'trunk', 2)}, 3),
- ("trunk/foo", {"trunk/foo": ('A', None, -1),
+ ({"branches/abranch": ('A', 'trunk', 2)}, 3),
+ ({"trunk/foo": ('A', None, -1),
"trunk": ('A', None, -1)}, 1)
- ], [l[:3] for l in walker.iter_changes("branches/abranch/foo", 3)])
+ ], [l[:2] for l in walker.iter_changes("branches/abranch/foo", 3)])
def test_get_revision_paths(self):
repos_url = self.make_client("a", "dc")
@@ -323,9 +323,9 @@
self.client_commit("dc", "Cm1")
walker = self.get_log_walker(transport=SvnRaTransport(repos_url))
- self.assertEqual([("trunk", {"trunk/data": ('A', None, -1),
+ self.assertEqual([({"trunk/data": ('A', None, -1),
"trunk": ('A', None, -1)}, 3)],
- [l[:3] for l in walker.iter_changes("trunk", 3)])
+ [l[:2] for l in walker.iter_changes("trunk", 3)])
def test_follow_history(self):
repos_url = self.make_client("a", "dc")
@@ -335,8 +335,7 @@
self.client_add("dc/foo")
self.client_commit("dc", "My Message")
- for (branch, paths, rev, revprops) in walker.iter_changes("", 1):
- self.assertEqual(branch, "")
+ for (paths, rev, revprops) in walker.iter_changes("", 1):
self.assertTrue(rev == 0 or paths.has_key("foo"))
self.assertTrue(rev in (0,1))
@@ -344,7 +343,7 @@
repos_url = self.make_client("a", "dc")
walker = self.get_log_walker(transport=SvnRaTransport(repos_url))
- self.assertEqual([('', {'': ('A', None, -1)}, 0)], [l[:3] for l in walker.iter_changes("", 0)])
+ self.assertEqual([({'': ('A', None, -1)}, 0)], [l[:2] for l in walker.iter_changes("", 0)])
def test_later_update(self):
repos_url = self.make_client("a", "dc")
@@ -355,8 +354,7 @@
self.client_add("dc/foo")
self.client_commit("dc", "My Message")
- for (branch, paths, rev, revprops) in walker.iter_changes("", 1):
- self.assertEqual(branch, "")
+ for (paths, rev, revprops) in walker.iter_changes("", 1):
self.assertTrue(rev == 0 or paths.has_key("foo"))
self.assertTrue(rev in (0,1))
@@ -375,9 +373,9 @@
walker = self.get_log_walker(transport=SvnRaTransport(repos_url))
- items = [l[:3] for l in walker.iter_changes("branches/abranch", 2)]
- self.assertEqual([('branches/abranch', {'branches/abranch': ('A', 'trunk', 1)}, 2),
- ('trunk', {'branches': (u'A', None, -1),
+ items = [l[:2] for l in walker.iter_changes("branches/abranch", 2)]
+ self.assertEqual([({'branches/abranch': ('A', 'trunk', 1)}, 2),
+ ({'branches': (u'A', None, -1),
'trunk/afile': ('A', None, -1),
'trunk': (u'A', None, -1)}, 1)], items)
=== modified file 'tests/test_scheme.py'
--- a/tests/test_scheme.py 2008-03-31 01:21:48 +0000
+++ b/tests/test_scheme.py 2008-04-03 20:43:33 +0000
@@ -592,22 +592,22 @@
class TestGuessBranchingSchemeFromHistory(TestCase):
def test_simple(self):
scheme = guess_scheme_from_history([
- ("", {"trunk": ('M', None, None)}, 0, None)], 1)
+ ({"trunk": ('M', None, None)}, 0, None)], 1)
self.assertIsInstance(scheme, TrunkBranchingScheme)
self.assertEqual(0, scheme.level)
def test_simple_with_relpath(self):
scheme = guess_scheme_from_history([
- ("", {"trunk": ('M', None, None)}, 0, None)], 1,
+ ({"trunk": ('M', None, None)}, 0, None)], 1,
relpath="trunk")
self.assertIsInstance(scheme, TrunkBranchingScheme)
self.assertEqual(0, scheme.level)
def test_simple_prefer_relpath(self):
scheme = guess_scheme_from_history([
- ("", {"trunk": ('M', None, None)}, 1, None),
- ("", {"trunk": ('M', None, None)}, 2, None),
- ("", {"trunk/bar": ('M', None, None)}, 3, None),
+ ({"trunk": ('M', None, None)}, 1, None),
+ ({"trunk": ('M', None, None)}, 2, None),
+ ({"trunk/bar": ('M', None, None)}, 3, None),
], 3,
relpath="trunk/bar")
self.assertIsInstance(scheme, SingleBranchingScheme)
@@ -615,17 +615,17 @@
def test_simple_notwant_single(self):
scheme = guess_scheme_from_history([
- ("", {"foo": ('M', None, None)}, 1, None),
- ("", {"foo": ('M', None, None)}, 2, None),
- ("", {"foo/bar": ('M', None, None)}, 3, None),
+ ({"foo": ('M', None, None)}, 1, None),
+ ({"foo": ('M', None, None)}, 2, None),
+ ({"foo/bar": ('M', None, None)}, 3, None),
], 3)
self.assertIsInstance(scheme, NoBranchingScheme)
def test_simple_no_bp_common(self):
scheme = guess_scheme_from_history([
- ("", {"foo": ('M', None, None)}, 1, None),
- ("", {"trunk": ('M', None, None)}, 2, None),
- ("", {"trunk": ('M', None, None)}, 3, None),
+ ({"foo": ('M', None, None)}, 1, None),
+ ({"trunk": ('M', None, None)}, 2, None),
+ ({"trunk": ('M', None, None)}, 3, None),
], 3)
self.assertIsInstance(scheme, TrunkBranchingScheme)
=== modified file 'transport.py'
--- a/transport.py 2008-03-31 04:13:06 +0000
+++ b/transport.py 2008-04-03 20:43:33 +0000
@@ -358,14 +358,20 @@
def next(self):
self.semaphore.acquire()
- return self.pending.pop()
+ ret = self.pending.pop()
+ if isinstance(ret, Exception):
+ raise ret
+ return ret
def run(self):
def rcvr(log_entry, pool):
self.pending.append(log_entry)
self.semaphore.release()
- self.get_log(rcvr)
- self.pending.append(None)
+ try:
+ self.get_log(rcvr)
+ self.pending.append(None)
+ except Exception, e:
+ self.pending.append(e)
self.semaphore.release()
fetcher = logfetcher(lambda rcvr: self.get_log(path, from_revnum, to_revnum, limit, discover_changed_paths, strict_node_history, revprops, rcvr))
More information about the bazaar-commits
mailing list