Rev 1264: Merge 0.4. in http://people.samba.org/bzr/jelmer/bzr-svn/svn-1.5

Jelmer Vernooij jelmer at samba.org
Tue Jul 22 21:55:22 BST 2008


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

------------------------------------------------------------
revno: 1264
revision-id: jelmer at samba.org-20080722205519-icl84xe4w566b9pw
parent: jelmer at samba.org-20080721200913-081k6lixwxtt8g2t
parent: jelmer at samba.org-20080721210745-28ed2bjxu6bp9361
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: svn-1.5
timestamp: Tue 2008-07-22 22:55:19 +0200
message:
  Merge 0.4.
modified:
  branch.py                      svnbranch.py-20051017135706-11c749eb0dab04a7
  fetch.py                       fetch.py-20060625004942-x2lfaib8ra707a8p-1
  fileids.py                     fileids.py-20060714013623-u5iiyqqnko11grcf-1
  repository.py                  repository.py-20060306123302-1f8c5069b3fe0265
  tests/test_commit.py           test_commit.py-20060624213521-l5kcufywkh9mnilk-1
  tests/test_repository.py       test_repos.py-20060508151940-ddc49a59257ca712
    ------------------------------------------------------------
    revno: 1196.1.292
    revision-id: jelmer at samba.org-20080721210745-28ed2bjxu6bp9361
    parent: jelmer at samba.org-20080721210418-i4t2wsxno5lqflig
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: 0.4
    timestamp: Mon 2008-07-21 23:07:45 +0200
    message:
      Use project name when finding tags.
    modified:
      branch.py                      svnbranch.py-20051017135706-11c749eb0dab04a7
    ------------------------------------------------------------
    revno: 1196.1.291
    revision-id: jelmer at samba.org-20080721210418-i4t2wsxno5lqflig
    parent: jelmer at samba.org-20080721205407-sryed0a0thp1o01m
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: 0.4
    timestamp: Mon 2008-07-21 23:04:18 +0200
    message:
      Fix some tests.
    modified:
      tests/test_repository.py       test_repos.py-20060508151940-ddc49a59257ca712
    ------------------------------------------------------------
    revno: 1196.1.290
    revision-id: jelmer at samba.org-20080721205407-sryed0a0thp1o01m
    parent: jelmer at samba.org-20080721204623-0q57gn7cyjr3nqzm
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: 0.4
    timestamp: Mon 2008-07-21 22:54:07 +0200
    message:
      Make project argument mandatory.
    modified:
      repository.py                  repository.py-20060306123302-1f8c5069b3fe0265
    ------------------------------------------------------------
    revno: 1196.1.289
    revision-id: jelmer at samba.org-20080721204623-0q57gn7cyjr3nqzm
    parent: jelmer at samba.org-20080721202804-9619h2v4r9q6pynq
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: 0.4
    timestamp: Mon 2008-07-21 22:46:23 +0200
    message:
      Make get_revision_paths private.
    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
    ------------------------------------------------------------
    revno: 1196.1.288
    revision-id: jelmer at samba.org-20080721202804-9619h2v4r9q6pynq
    parent: jelmer at samba.org-20080721201738-2fsmn0hvs83vylik
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: 0.4
    timestamp: Mon 2008-07-21 22:28:04 +0200
    message:
      Fix test.
    modified:
      tests/test_commit.py           test_commit.py-20060624213521-l5kcufywkh9mnilk-1
    ------------------------------------------------------------
    revno: 1196.1.287
    revision-id: jelmer at samba.org-20080721201738-2fsmn0hvs83vylik
    parent: jelmer at samba.org-20080721194233-3mq364sd27qvy3cu
    committer: Jelmer Vernooij <jelmer at samba.org>
    branch nick: 0.4
    timestamp: Mon 2008-07-21 22:17:38 +0200
    message:
      Pass to_revnum to history iterating functions.
    modified:
      branch.py                      svnbranch.py-20051017135706-11c749eb0dab04a7
      fetch.py                       fetch.py-20060625004942-x2lfaib8ra707a8p-1
      fileids.py                     fileids.py-20060714013623-u5iiyqqnko11grcf-1
      repository.py                  repository.py-20060306123302-1f8c5069b3fe0265
=== modified file 'branch.py'
--- a/branch.py	2008-07-19 13:17:41 +0000
+++ b/branch.py	2008-07-21 21:07:45 +0000
@@ -56,14 +56,12 @@
 
 
 class SubversionTags(BasicTags):
-    def __init__(self, branch, layout=None, project=""):
+    def __init__(self, branch):
         self.branch = branch
         self.repository = branch.repository
-        self.layout = layout or self.repository.get_layout()
-        self.project = project
 
     def set_tag(self, tag_name, tag_target):
-        path = self.layout.get_tag_path(tag_name, self.project)
+        path = self.branch.layout.get_tag_path(tag_name, self.branch.project)
         parent = urlutils.dirname(path)
         try:
             (from_bp, from_revnum, mapping) = self.repository.lookup_revision_id(tag_target)
@@ -96,8 +94,8 @@
             raise NoSuchTag(tag_name)
 
     def get_tag_dict(self):
-        return self.repository.find_tags(project=self.project, 
-                                         layout=self.layout)
+        return self.repository.find_tags(project=self.branch.project, 
+                                         layout=self.branch.layout)
 
     def get_reverse_tag_dict(self):
         """Returns a dict with revisions as keys
@@ -112,7 +110,7 @@
         return rev
 
     def delete_tag(self, tag_name):
-        path = self.layout.get_tag_path(tag_name, self.project)
+        path = self.branch.layout.get_tag_path(tag_name, self.branch.project)
         parent = urlutils.dirname(path)
         conn = self.repository.transport.connections.get(urlutils.join(self.repository.base, parent))
         if conn.check_path(urlutils.basename(path), self.repository.get_latest_revnum()) != core.NODE_DIR:
@@ -159,6 +157,7 @@
         self._lock_mode = None
         self._lock_count = 0
         self.mapping = self.repository.get_mapping()
+        self.layout = self.repository.get_layout()
         self._branch_path = branch_path.strip("/")
         self.base = urlutils.join(self.repository.base, self._branch_path).rstrip("/")
         self._revmeta_cache = None
@@ -172,7 +171,8 @@
             if num == ERR_FS_NO_SUCH_REVISION:
                 raise NotBranchError(self.base)
             raise
-        if not self.mapping.is_branch(branch_path):
+        (type, self.project, _, ip) = self.layout.parse(branch_path)
+        if type != 'branch' or ip != '':
             raise NotSvnBranchPath(branch_path, mapping=self.mapping)
 
     def _make_tags(self):
@@ -401,7 +401,7 @@
         if self._revmeta_cache is None:
             pb = ui.ui_factory.nested_progress_bar()
             try:
-                self._revmeta_cache = list(self.repository.iter_reverse_branch_changes(self.get_branch_path(), self.get_revnum(), self.mapping, pb=pb))
+                self._revmeta_cache = list(self.repository.iter_reverse_branch_changes(self.get_branch_path(), self.get_revnum(), to_revnum=0, mapping=self.mapping, pb=pb))
             finally:
                 pb.finished()
         return self._revmeta_cache

=== modified file 'fetch.py'
--- a/fetch.py	2008-07-21 19:56:11 +0000
+++ b/fetch.py	2008-07-22 20:55:19 +0000
@@ -547,7 +547,8 @@
                 (branch_path, revnum, mapping) = self.source.lookup_revision_id(revision_id)
             except NoSuchRevision:
                 return # Ghost
-            for revmeta in self.source.iter_reverse_branch_changes(branch_path, revnum, mapping):
+            for revmeta in self.source.iter_reverse_branch_changes(branch_path, revnum, 
+                                                                   to_revnum=0, mapping=mapping):
                 if pb:
                     pb.update("determining revisions to fetch", revnum-revmeta.revnum, revnum)
                 revid = revmeta.get_revision_id(mapping)

=== modified file 'fileids.py'
--- a/fileids.py	2008-07-07 10:25:14 +0000
+++ b/fileids.py	2008-07-22 20:55:19 +0000
@@ -152,7 +152,7 @@
             map = {}
 
         # No history -> empty map
-        for revmeta in self.repos.iter_reverse_branch_changes(branch, revnum, mapping):
+        for revmeta in self.repos.iter_reverse_branch_changes(branch, revnum, to_revnum=0, mapping=mapping):
             revid = revmeta.get_revision_id(mapping)
             todo.append(revmeta)
    
@@ -252,7 +252,7 @@
         # No history -> empty map
         try:
             pb = ui.ui_factory.nested_progress_bar()
-            for revmeta in self.repos.iter_reverse_branch_changes(branch, revnum, mapping):
+            for revmeta in self.repos.iter_reverse_branch_changes(branch, revnum, to_revnum=0, mapping=mapping):
                 pb.update("fetching changes for file ids", revnum-revmeta.revnum, revnum)
                 revid = revmeta.get_revision_id(mapping)
                 try:

=== modified file 'repository.py'
--- a/repository.py	2008-07-21 19:56:11 +0000
+++ b/repository.py	2008-07-22 20:55:19 +0000
@@ -411,7 +411,8 @@
         if revision_id in (None, NULL_REVISION):
             return
         (branch_path, revnum, mapping) = self.lookup_revision_id(revision_id)
-        for revmeta in self.iter_reverse_branch_changes(branch_path, revnum, mapping, pb=pb, 
+        for revmeta in self.iter_reverse_branch_changes(branch_path, revnum, to_revnum=0, 
+                                                        mapping=mapping, pb=pb, 
                                                         limit=limit):
             yield revmeta.get_revision_id(mapping)
 
@@ -472,8 +473,8 @@
         assert isinstance(path, str)
         assert isinstance(revnum, int)
 
-        iterator = self.iter_reverse_branch_changes(path, revnum, 
-                                                      mapping=mapping, limit=2)
+        iterator = self.iter_reverse_branch_changes(path, revnum, to_revnum=0,
+                                                    mapping=mapping, limit=2)
         revmeta = iterator.next()
         assert revmeta.branch_path == path
         assert revmeta.revnum == revnum
@@ -615,7 +616,7 @@
         return self._serializer.write_revision_to_string(
             self.get_revision(revision_id))
 
-    def iter_changes(self, branch_path, revnum, mapping=None, pb=None, limit=0):
+    def iter_changes(self, branch_path, from_revnum, to_revnum, mapping=None, pb=None, limit=0):
         """Iterate over all revisions backwards.
         
         :return: iterator that returns tuples with branch path, 
@@ -624,6 +625,7 @@
         assert isinstance(branch_path, str)
         assert mapping is None or mapping.is_branch(branch_path) or mapping.is_tag(branch_path), \
                 "Mapping %r doesn't accept %s as branch or tag" % (mapping, branch_path)
+        assert from_revnum >= to_revnum
 
         bp = branch_path
         i = 0
@@ -632,7 +634,8 @@
         # because we're skipping some revs
         # TODO: Rather than fetching everything if limit == 2, maybe just 
         # set specify an extra X revs just to be sure?
-        for (paths, revnum, revprops) in self._log.iter_changes([branch_path], revnum, pb=pb):
+        for (paths, revnum, revprops) in self._log.iter_changes([branch_path], from_revnum, to_revnum, 
+                                                                pb=pb):
             assert bp is not None
             next = find_prev_location(paths, bp, revnum)
             assert revnum > 0 or bp == ""
@@ -659,14 +662,15 @@
             else:
                 bp = next[0]
 
-    def iter_reverse_branch_changes(self, branch_path, revnum, mapping=None, pb=None, limit=0):
+    def iter_reverse_branch_changes(self, branch_path, from_revnum, to_revnum, 
+                                    mapping=None, pb=None, limit=0):
         """Return all the changes that happened in a branch 
         until branch_path,revnum. 
 
         :return: iterator that returns RevisionMetadata objects.
         """
-        history_iter = self.iter_changes(branch_path, revnum, mapping, pb=pb, 
-                                         limit=limit)
+        history_iter = self.iter_changes(branch_path, from_revnum, to_revnum, 
+                                         mapping, pb=pb, limit=limit)
         for (bp, paths, revnum, revprops) in history_iter:
             if not bp in paths:
                 svn_fileprops = {}
@@ -737,7 +741,7 @@
         return branches
 
     @needs_read_lock
-    def find_tags(self, layout=None, revnum=None, project=None):
+    def find_tags(self, project, layout=None, revnum=None):
         """Find tags underneath this repository for the specified project.
 
         :param layout: Repository layout to use
@@ -761,7 +765,7 @@
                 pb.tick()
                 npb = ui.ui_factory.nested_progress_bar()
                 try:
-                    it = self.iter_changes(bp, revnum, mapping, pb=npb, limit=2)
+                    it = self.iter_changes(bp, revnum, to_revnum=0, mapping=mapping, pb=npb, limit=2)
                     (bp, paths, rev, _) = it.next()
                     if paths.has_key(bp):
                         del paths[bp]

=== modified file 'tests/test_commit.py'
--- a/tests/test_commit.py	2008-07-04 02:19:08 +0000
+++ b/tests/test_commit.py	2008-07-21 20:28:04 +0000
@@ -597,7 +597,7 @@
         tree1 = master_branch.repository.revision_tree(revid1)
         tree2 = master_branch.repository.revision_tree(revid2)
         delta = tree2.changes_from(tree1)
-        mutter("changes %r" % list(master_branch.repository.iter_reverse_branch_changes("", 2, master_branch.repository.get_mapping())))
+        mutter("changes %r" % list(master_branch.repository.iter_reverse_branch_changes("", 2, 0, master_branch.repository.get_mapping())))
         self.assertEquals(0, len(delta.added))
         self.assertEquals(0, len(delta.removed))
         self.assertEquals(1, len(delta.renamed))

=== modified file 'tests/test_repository.py'
--- a/tests/test_repository.py	2008-07-15 14:06:23 +0000
+++ b/tests/test_repository.py	2008-07-21 21:04:18 +0000
@@ -64,7 +64,7 @@
         self.assertEqual([
             ('', {'foo': ('A', None, -1)}, 1), 
             ('', {'': ('A', None, -1)}, 0)],
-            [(l.branch_path, l.paths, l.revnum) for l in repos.iter_reverse_branch_changes("", 1, NoBranchingScheme())])
+            [(l.branch_path, l.paths, l.revnum) for l in repos.iter_reverse_branch_changes("", 1, 0, NoBranchingScheme())])
 
     def test_make_working_trees(self):
         repos_url = self.make_repository("a")
@@ -108,7 +108,7 @@
         dc.close()
 
         repos = Repository.open(repos_url)
-        ret = list(repos.iter_changes('bla/bar', 2, BzrSvnMappingv3(SingleBranchingScheme('bla/bar'))))
+        ret = list(repos.iter_changes('bla/bar', 2, 0, BzrSvnMappingv3(SingleBranchingScheme('bla/bar'))))
         self.assertEquals(1, len(ret))
         self.assertEquals("bla/bar", ret[0][0])
 
@@ -186,7 +186,7 @@
         repos_url = self.make_repository("a")
         repos = Repository.open(repos_url)
         self.assertRaises(NoSuchRevision, list, 
-               repos.iter_reverse_branch_changes("/", 20, NoBranchingScheme()))
+               repos.iter_reverse_branch_changes("/", 20, 0, NoBranchingScheme()))
 
     def test_follow_branch_switched_parents(self):
         repos_url = self.make_client('a', 'dc')
@@ -201,7 +201,7 @@
         self.client_update("dc")
         self.client_commit("dc", "commit")
         repos = Repository.open(repos_url)
-        results = [(l.branch_path, l.paths, l.revnum) for l in repos.iter_reverse_branch_changes("pygments/trunk", 3, TrunkBranchingScheme(1))]
+        results = [(l.branch_path, l.paths, l.revnum) for l in repos.iter_reverse_branch_changes("pygments/trunk", 3, 0, TrunkBranchingScheme(1))]
 
         # Results differ per Subversion version
         # For <= 1.4:
@@ -238,7 +238,7 @@
         dc.close()
 
         repos = Repository.open(repos_url)
-        changes = repos.iter_reverse_branch_changes("pygments", 2, SingleBranchingScheme("pygments"))
+        changes = repos.iter_reverse_branch_changes("pygments", 2, 0, SingleBranchingScheme("pygments"))
         self.assertEquals([('pygments',
               {'pygments/bla': ('A', None, -1), 'pygments': ('A', None, -1)},
                 2)],
@@ -360,7 +360,7 @@
         set_branching_scheme(repos, TrunkBranchingScheme())
 
         self.assertEqual(1, len(list(repos.iter_reverse_branch_changes("branches/brancha",
-            1, TrunkBranchingScheme()))))
+            1, 0, TrunkBranchingScheme()))))
 
     def test_branch_log_specific_ignore(self):
         repos_url = self.make_client("a", "dc")
@@ -381,7 +381,7 @@
         set_branching_scheme(repos, TrunkBranchingScheme())
 
         self.assertEqual(1, len(list(repos.iter_reverse_branch_changes("branches/brancha",
-            2, TrunkBranchingScheme()))))
+            2, 0, TrunkBranchingScheme()))))
 
     def test_find_branches(self):
         repos_url = self.make_client("a", "dc")
@@ -412,7 +412,7 @@
 
         repos = Repository.open(repos_url)
         set_branching_scheme(repos, TrunkBranchingScheme())
-        tags = repos.find_tags()
+        tags = repos.find_tags("")
         self.assertEquals({"brancha": repos.generate_revision_id(1, "tags/brancha", repos.get_mapping()),
                            "branchab": repos.generate_revision_id(1, "tags/branchab", repos.get_mapping())}, tags)
 
@@ -430,7 +430,7 @@
 
         repos = Repository.open(repos_url)
         set_branching_scheme(repos, TrunkBranchingScheme())
-        tags = repos.find_tags()
+        tags = repos.find_tags("")
         self.assertEquals({"brancha": repos.generate_revision_id(1, "trunk", repos.get_mapping())}, tags)
 
     def test_find_tags_modified(self):
@@ -453,7 +453,7 @@
 
         repos = Repository.open(repos_url)
         set_branching_scheme(repos, TrunkBranchingScheme())
-        tags = repos.find_tags()
+        tags = repos.find_tags("")
         self.assertEquals({"brancha": repos.generate_revision_id(3, "tags/brancha", repos.get_mapping())}, tags)
 
     def test_find_branchpaths_moved(self):
@@ -1076,7 +1076,7 @@
         self.assertEquals([('trunk', {'trunk': (u'M', None, -1)}, 3), 
                            ('trunk', {'trunk': (u'M', None, -1)}, 2), 
                            ('trunk', {'trunk/bla': (u'A', None, -1), 'trunk': (u'A', None, -1)}, 1)], 
-                   [(l.branch_path, l.paths, l.revnum) for l in oldrepos.iter_reverse_branch_changes("trunk", 3, TrunkBranchingScheme())])
+                   [(l.branch_path, l.paths, l.revnum) for l in oldrepos.iter_reverse_branch_changes("trunk", 3, 0, TrunkBranchingScheme())])
 
     def test_control_code_msg(self):
         if ra.version()[1] >= 5:




More information about the bazaar-commits mailing list