Rev 283: Fix corner cases in get_previous(). in http://people.samba.org/bzr/jelmer/bzr-svn/bzr.dev
Jelmer Vernooij
jelmer at samba.org
Sun Dec 24 00:32:22 GMT 2006
------------------------------------------------------------
revno: 283
revision-id: jelmer at samba.org-20061224002517-f4670do78x74rd0t
parent: jelmer at samba.org-20061223225657-abfdb3voizollc83
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: main
timestamp: Sun 2006-12-24 01:25:17 +0100
message:
Fix corner cases in get_previous().
modified:
branchprops.py branchprops.py-20061223204623-80lvm7pjrpsgk0dd-1
logwalker.py logwalker.py-20060621215743-c13fhfnyzh1xzwh2-1
tests/test_logwalker.py test_logwalker.py-20060622141944-pkocc3rj8g62ukbi-1
=== modified file 'branchprops.py'
--- a/branchprops.py 2006-12-23 22:56:57 +0000
+++ b/branchprops.py 2006-12-24 00:25:17 +0000
@@ -82,7 +82,10 @@
current = self.get_property(path, revnum, name, "")
(prev_path, prev_revnum) = self.log.get_previous(path, revnum)
- previous = self.get_property(prev_path, prev_revnum, name, "")
+ if prev_path is None and prev_revnum == -1:
+ previous = ""
+ else:
+ previous = self.get_property(prev_path, prev_revnum, name, "")
if len(previous) > len(current) or current[0:len(previous)] != previous:
mutter('original part changed!')
return ""
=== modified file 'logwalker.py'
--- a/logwalker.py 2006-12-23 22:56:57 +0000
+++ b/logwalker.py 2006-12-24 00:25:17 +0000
@@ -55,11 +55,12 @@
class NotSvnBranchPath(BzrError):
- _fmt = """{%(branch_path)s} is not a valid Svn branch path"""
+ _fmt = """{%(branch_path)s}:%(revnum)s is not a valid Svn branch path"""
- def __init__(self, branch_path):
+ def __init__(self, branch_path, revnum=None):
BzrError.__init__(self)
self.branch_path = branch_path
+ self.revnum = revnum
class LogWalker(object):
@@ -164,7 +165,7 @@
return
if not branch_path is None and not self.scheme.is_branch(branch_path):
- raise NotSvnBranchPath(branch_path)
+ raise NotSvnBranchPath(branch_path, revnum)
if branch_path:
branch_path = branch_path.strip("/")
@@ -275,6 +276,8 @@
if row is None and path == "":
return 0
+ assert row is not None, "now latest change for %r:%d" % (path, revnum)
+
return row[0]
def touches_path(self, path, revnum):
@@ -318,7 +321,9 @@
self.fetch_revisions(revnum)
if revnum == 0:
return (None, -1)
- row = self.db.execute("select copyfrom_path, copyfrom_rev from changed_path where path='%s' and rev=%d" % (path, revnum)).fetchone()
- if row[1] == -1:
+ row = self.db.execute("select action, copyfrom_path, copyfrom_rev from changed_path where path='%s' and rev=%d" % (path, revnum)).fetchone()
+ if row[2] == -1:
+ if row[0] == 'A':
+ return (None, -1)
return (path, revnum-1)
- return row
+ return (row[1], row[2])
=== modified file 'tests/test_logwalker.py'
--- a/tests/test_logwalker.py 2006-12-23 22:56:57 +0000
+++ b/tests/test_logwalker.py 2006-12-24 00:25:17 +0000
@@ -340,6 +340,20 @@
self.assertEqual(("trunk", 1), walker.get_previous("trunk", 2))
+ def test_get_previous_added(self):
+ repos_url = self.make_client("a", "dc")
+ self.build_tree({'dc/trunk/afile': "data"})
+ self.client_add("dc/trunk")
+ self.client_commit("dc", "My Message")
+ self.build_tree({'dc/trunk/afile': "data2"})
+ self.client_set_prop("dc/trunk", "myprop", "mydata")
+ self.client_commit("dc", "My Message")
+
+ walker = logwalker.LogWalker(TrunkBranchingScheme(),
+ transport=SvnRaTransport(repos_url))
+
+ self.assertEqual((None, -1), walker.get_previous("trunk", 1))
+
def test_get_previous_copy(self):
repos_url = self.make_client("a", "dc")
self.build_tree({'dc/trunk/afile': "data"})
More information about the bazaar-commits
mailing list