Rev 647: Fix more tests. in file:///data/jelmer/bzr-svn/noschemes/
Jelmer Vernooij
jelmer at samba.org
Sun Feb 3 22:42:32 GMT 2008
At file:///data/jelmer/bzr-svn/noschemes/
------------------------------------------------------------
revno: 647
revision-id:jelmer at samba.org-20080203224230-25pj7p5215mp5jjq
parent: jelmer at samba.org-20080203212755-9sqre2vif4p80nuw
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: noschemes
timestamp: Sun 2008-02-03 23:42:30 +0100
message:
Fix more tests.
modified:
commit.py commit.py-20060607190346-qvq128wgfubhhgm2-1
mapping.py mapping.py-20080128201303-6cp01phc0dmc0kiv-1
repository.py repository.py-20060306123302-1f8c5069b3fe0265
tests/test_commit.py test_commit.py-20060624213521-l5kcufywkh9mnilk-1
tests/test_mapping.py test_mapping.py-20080201131338-0zd86eznn4bojtee-1
workingtree.py workingtree.py-20060306120941-b083cb0fdd4a69de
=== modified file 'commit.py'
--- a/commit.py 2008-02-03 18:03:33 +0000
+++ b/commit.py 2008-02-03 22:42:30 +0000
@@ -30,9 +30,23 @@
from copy import deepcopy
from cStringIO import StringIO
from errors import ChangesRootLHSHistory, MissingPrefix, RevpropChangeFailed
+from svk import generate_svk_feature, serialize_svk_features, parse_svk_features
+from mapping import parse_revision_id
from repository import (SvnRepositoryFormat, SvnRepository)
import urllib
+def _revision_id_to_svk_feature(revid):
+ """Create a SVK feature identifier from a revision id.
+
+ :param revid: Revision id to convert.
+ :return: Matching SVK feature identifier.
+ """
+ assert isinstance(revid, str)
+ (uuid, branch, revnum, _) = parse_revision_id(revid)
+ # TODO: What about renamed revisions? Should use
+ # repository.lookup_revision_id here.
+ return generate_svk_feature(uuid, branch, revnum)
+
def _check_dirs_exist(transport, bp_parts, base_rev):
"""Make sure that the specified directories exist.
@@ -128,6 +142,20 @@
return self.repository.branchprop_list.get_property(self.base_path, self.base_revnum, name, default)
(self._svn_revprops, self._svnprops) = self.base_mapping.export_revision(self.branch.get_branch_path(), timestamp, timezone, committer, revprops, revision_id, self.base_revno+1, merges, get_branch_file_property)
+ if len(merges) > 0:
+ old_svk_features = parse_svk_features(get_branch_file_property(SVN_PROP_SVK_MERGE, ""))
+ svk_features = set(old_svk_features)
+
+ # SVK compatibility
+ for merge in merges:
+ try:
+ svk_features.add(_revision_id_to_svk_feature(merge))
+ except InvalidRevisionId:
+ pass
+
+ if old_svk_features != svk_features:
+ self._svnprops[SVN_PROP_SVK_MERGE] = serialize_svk_features(svk_features)
+
def mutter(self, text):
if 'commit' in debug.debug_flags:
mutter(text)
=== modified file 'mapping.py'
--- a/mapping.py 2008-02-03 20:52:24 +0000
+++ b/mapping.py 2008-02-03 22:42:30 +0000
@@ -27,10 +27,6 @@
import time
import urllib
-from svk import (SVN_PROP_SVK_MERGE, svk_features_merged_since,
- parse_svk_features, serialize_svk_features,
- parse_svk_feature, generate_svk_feature)
-
MAPPING_VERSION = 3
SVN_PROP_BZR_PREFIX = 'bzr:'
@@ -502,48 +498,12 @@
parse_revision_metadata(
get_branch_file_property(SVN_PROP_BZR_REVISION_INFO, ""), rev)
- def _svk_merged_revisions(self, get_branch_file_property):
- """Find out what SVK features were merged in a revision.
-
- """
- current = get_branch_file_property(SVN_PROP_SVK_MERGE, "")
- (prev_path, prev_revnum) = self._log.get_previous(branch, revnum)
- if prev_path is None and prev_revnum == -1:
- previous = ""
- else:
- previous = self.branchprop_list.get_property(prev_path.encode("utf-8"),
- prev_revnum, SVN_PROP_SVK_MERGE, "")
- for feature in svk_features_merged_since(current, previous):
- revid = self._svk_feature_to_revision_id(feature)
- if revid is not None:
- yield revid
-
- def _svk_feature_to_revision_id(self, feature):
- """Convert a SVK feature to a revision id for this repository.
-
- :param feature: SVK feature.
- :return: revision id.
- """
- try:
- (uuid, bp, revnum) = parse_svk_feature(feature)
- except errors.InvalidPropertyValue:
- return None
- if uuid != self.uuid:
- return None
- if not self.scheme.is_branch(bp) and not self.scheme.is_tag(bp):
- return None
- return self.generate_revision_id(revnum, bp)
-
def get_rhs_parents(self, revprops, get_branch_file_property):
rhs_parents = []
bzr_merges = get_branch_file_property(SVN_PROP_BZR_ANCESTRY+str(self.scheme), None)
if bzr_merges is not None:
return parse_merge_property(bzr_merges.splitlines()[-1])
- svk_merges = get_branch_file_property(SVN_PROP_SVK_MERGE, None)
- if svk_merges is not None:
- return self._svk_merged_revisions(get_branch_file_property)
-
return []
def get_rhs_ancestors(self, revprops, get_branch_file_property):
@@ -558,18 +518,6 @@
return {}
return parse_fileid_property(fileids)
- def _revision_id_to_svk_feature(self, revid):
- """Create a SVK feature identifier from a revision id.
-
- :param revid: Revision id to convert.
- :return: Matching SVK feature identifier.
- """
- assert isinstance(revid, str)
- (uuid, branch, revnum, _) = self.__class__.parse_revision_id(revid)
- # TODO: What about renamed revisions? Should use
- # repository.lookup_revision_id here.
- return generate_svk_feature(uuid, branch, revnum)
-
def _record_merges(self, merges, get_branch_file_property):
"""Store the extra merges (non-LHS parents) in a file property.
@@ -579,19 +527,6 @@
old = get_branch_file_property(SVN_PROP_BZR_ANCESTRY+str(self.scheme), "")
svnprops = { SVN_PROP_BZR_ANCESTRY+str(self.scheme): old + "\t".join(merges) + "\n" }
- old_svk_features = parse_svk_features(get_branch_file_property(SVN_PROP_SVK_MERGE, ""))
- svk_features = set(old_svk_features)
-
- # SVK compatibility
- for merge in merges:
- try:
- svk_features.add(self._revision_id_to_svk_feature(merge))
- except InvalidRevisionId:
- pass
-
- if old_svk_features != svk_features:
- svnprops[SVN_PROP_SVK_MERGE] = serialize_svk_features(svk_features)
-
return svnprops
def export_revision(self, branch_root, timestamp, timezone, committer, revprops, revision_id, revno, merges,
=== modified file 'repository.py'
--- a/repository.py 2008-02-03 19:41:38 +0000
+++ b/repository.py 2008-02-03 22:42:30 +0000
@@ -46,9 +46,25 @@
from revids import RevidMap
from scheme import (BranchingScheme, ListBranchingScheme,
parse_list_scheme_text, guess_scheme_from_history)
+from svk import (SVN_PROP_SVK_MERGE, svk_features_merged_since,
+ parse_svk_feature)
from tree import SvnRevisionTree
import urllib
+def svk_feature_to_revision_id(feature, mapping):
+ """Convert a SVK feature to a revision id for this repository.
+
+ :param feature: SVK feature.
+ :return: revision id.
+ """
+ try:
+ (uuid, bp, revnum) = parse_svk_feature(feature)
+ except errors.InvalidPropertyValue:
+ return None
+ if not mapping.is_branch(bp) and not mapping.is_tag(bp):
+ return None
+ return mapping.generate_revision_id(uuid, revnum, bp)
+
class SvnRepositoryFormat(RepositoryFormat):
"""Repository format for Subversion repositories (accessed using svn_ra).
@@ -387,6 +403,23 @@
parents_list.append(parents)
return parents_list
+ def _svk_merged_revisions(self, branch, revnum, mapping,
+ get_branch_property):
+ """Find out what SVK features were merged in a revision.
+
+ """
+ current = get_branch_property(branch, revnum, SVN_PROP_SVK_MERGE, "")
+ (prev_path, prev_revnum) = self._log.get_previous(branch, revnum)
+ if prev_path is None and prev_revnum == -1:
+ previous = ""
+ else:
+ previous = self.branchprop_list.get_property(prev_path.encode("utf-8"),
+ prev_revnum, SVN_PROP_SVK_MERGE, "")
+ for feature in svk_features_merged_since(current, previous):
+ revid = svk_feature_to_revision_id(feature, mapping)
+ if revid is not None:
+ yield revid
+
def revision_parents(self, revision_id, get_branch_fileprop=None):
"""See Repository.revision_parents()."""
parent_ids = []
@@ -401,7 +434,11 @@
svn_revprops = self.transport.revprop_list(revnum)
- parent_ids.extend(mapping.get_rhs_parents(svn_revprops, get_branch_fileprop))
+ extra_rhs_parents = mapping.get_rhs_parents(svn_revprops, get_branch_fileprop)
+ parent_ids.extend(extra_rhs_parents)
+
+ if extra_rhs_parents == []:
+ parent_ids.extend(self._svk_merged_revisions(branch, revnum, mapping, self.branchprop_list.get_property))
return parent_ids
=== modified file 'tests/test_commit.py'
--- a/tests/test_commit.py 2008-02-03 18:03:33 +0000
+++ b/tests/test_commit.py 2008-02-03 22:42:30 +0000
@@ -21,10 +21,11 @@
from bzrlib.branch import Branch, PullResult
from bzrlib.bzrdir import BzrDir
from bzrlib.errors import DivergedBranches, BzrError
+from bzrlib.tests import TestCase
from bzrlib.trace import mutter
from bzrlib.workingtree import WorkingTree
-from commit import set_svn_revprops
+from commit import set_svn_revprops, _revision_id_to_svk_feature
from copy import copy
from errors import RevpropChangeFailed
from mapping import MAPPING_VERSION
@@ -581,3 +582,10 @@
transport = SvnRaTransport(repos_url)
self.assertRaises(RevpropChangeFailed,
lambda: set_svn_revprops(transport, 1, {"svn:author": "Somebody", "svn:date": svn_time_to_cstring(1000000*473385600)}))
+
+class SvkTestCase(TestCase):
+ def test_revid_svk_map(self):
+ self.assertEqual("auuid:/:6",
+ _revision_id_to_svk_feature("svn-v3-undefined:auuid::6"))
+
+
=== modified file 'tests/test_mapping.py'
--- a/tests/test_mapping.py 2008-02-03 20:52:24 +0000
+++ b/tests/test_mapping.py 2008-02-03 22:42:30 +0000
@@ -192,10 +192,6 @@
def setUp(self):
self.mapping = BzrSvnMappingv3(NoBranchingScheme())
- def test_revid_svk_map(self):
- self.assertEqual("auuid:/:6",
- self.mapping._revision_id_to_svk_feature("svn-v3-undefined:auuid::6"))
-
def test_generate_revid(self):
self.assertEqual("svn-v3-undefined:myuuid:branch:5",
BzrSvnMappingv3._generate_revision_id("myuuid", 5, "branch", "undefined"))
=== modified file 'workingtree.py'
--- a/workingtree.py 2008-02-03 18:03:33 +0000
+++ b/workingtree.py 2008-02-03 22:42:30 +0000
@@ -33,6 +33,7 @@
from bzrlib.workingtree import WorkingTree, WorkingTreeFormat
from branch import SvnBranch
+from commit import _revision_id_to_svk_feature
from convert import SvnConverter
from errors import LocalCommitsUnsupported, NoSvnRepositoryPresent
from mapping import (SVN_PROP_BZR_ANCESTRY, SVN_PROP_BZR_FILEIDS,
@@ -646,7 +647,7 @@
# Set svk:merge
for merge in merges:
try:
- svk_merges.add(self.branch.mapping._revision_id_to_svk_feature(merge))
+ svk_merges.add(_revision_id_to_svk_feature(merge))
except InvalidRevisionId:
pass
More information about the bazaar-commits
mailing list