Rev 1030: Merge 0.4. in file:///data/jelmer/bzr-svn/pyrex/
Jelmer Vernooij
jelmer at samba.org
Sat Mar 22 14:27:18 GMT 2008
At file:///data/jelmer/bzr-svn/pyrex/
------------------------------------------------------------
revno: 1030
revision-id: jelmer at samba.org-20080322142716-p7vpxnkkm0740643
parent: jelmer at samba.org-20080321224537-io5qh96elw3lxhzs
parent: jelmer at samba.org-20080322140604-gr99ufb54gy6i9g4
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: pyrex
timestamp: Sat 2008-03-22 15:27:16 +0100
message:
Merge 0.4.
modified:
NEWS news-20061231030336-h9fhq245ie0de8bs-1
commit.py commit.py-20060607190346-qvq128wgfubhhgm2-1
fetch.py fetch.py-20060625004942-x2lfaib8ra707a8p-1
mapping.py mapping.py-20080128201303-6cp01phc0dmc0kiv-1
pre-revprop-change.example prerevpropchange.exa-20071214160928-9g7oevg3tlky780a-1
repository.py repository.py-20060306123302-1f8c5069b3fe0265
svk.py svk.py-20080201171509-m2eg9m6jrmlbwxg5-1
tests/__init__.py __init__.py-20060508151940-e9f4d914801a2535
tests/test_fetch.py test_fetch.py-20070624210302-luvgwjmlfysk5qeq-1
tests/test_mapping.py test_mapping.py-20080201131338-0zd86eznn4bojtee-1
tests/test_push.py test_push.py-20070201165715-g2ievcdfqi33wqsy-1
tests/test_repos.py test_repos.py-20060508151940-ddc49a59257ca712
------------------------------------------------------------
revno: 950.1.29
revision-id: jelmer at samba.org-20080322140604-gr99ufb54gy6i9g4
parent: jelmer at samba.org-20080322133824-lxslia5p2n8e0lme
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Sat 2008-03-22 15:06:04 +0100
message:
Support storing commit message in bzr:log.
modified:
mapping.py mapping.py-20080128201303-6cp01phc0dmc0kiv-1
------------------------------------------------------------
revno: 950.1.28
revision-id: jelmer at samba.org-20080322133824-lxslia5p2n8e0lme
parent: jelmer at samba.org-20080322132804-khp1h5o6o8jzx50s
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Sat 2008-03-22 14:38:24 +0100
message:
Support fetching revision properties from a svn repository.
modified:
commit.py commit.py-20060607190346-qvq128wgfubhhgm2-1
fetch.py fetch.py-20060625004942-x2lfaib8ra707a8p-1
tests/__init__.py __init__.py-20060508151940-e9f4d914801a2535
tests/test_fetch.py test_fetch.py-20070624210302-luvgwjmlfysk5qeq-1
------------------------------------------------------------
revno: 950.1.27
revision-id: jelmer at samba.org-20080322132804-khp1h5o6o8jzx50s
parent: jelmer at samba.org-20080322132203-bo1whwfys2dnqa5o
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Sat 2008-03-22 14:28:04 +0100
message:
Allow changing gpg signatures
modified:
pre-revprop-change.example prerevpropchange.exa-20071214160928-9g7oevg3tlky780a-1
------------------------------------------------------------
revno: 950.1.26
revision-id: jelmer at samba.org-20080322132203-bo1whwfys2dnqa5o
parent: jelmer at samba.org-20080322130529-jv7tf6lj3njw2sm7
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Sat 2008-03-22 14:22:03 +0100
message:
Support setting revision signatures in Subversion repositories.
modified:
NEWS news-20061231030336-h9fhq245ie0de8bs-1
repository.py repository.py-20060306123302-1f8c5069b3fe0265
tests/test_repos.py test_repos.py-20060508151940-ddc49a59257ca712
------------------------------------------------------------
revno: 950.1.25
revision-id: jelmer at samba.org-20080322130529-jv7tf6lj3njw2sm7
parent: jelmer at samba.org-20080322021233-ooblxnxj7944y27f
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Sat 2008-03-22 14:05:29 +0100
message:
Remove obsolete FIXME, allow passing in revision properties to Repository.get_revision().
modified:
mapping.py mapping.py-20080128201303-6cp01phc0dmc0kiv-1
repository.py repository.py-20060306123302-1f8c5069b3fe0265
------------------------------------------------------------
revno: 950.1.24
revision-id: jelmer at samba.org-20080322021233-ooblxnxj7944y27f
parent: jelmer at samba.org-20080322005103-zarm22bzsyjbwyd8
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Sat 2008-03-22 03:12:33 +0100
message:
Fix import of serializer.
modified:
repository.py repository.py-20060306123302-1f8c5069b3fe0265
------------------------------------------------------------
revno: 950.1.23
revision-id: jelmer at samba.org-20080322005103-zarm22bzsyjbwyd8
parent: jelmer at samba.org-20080321233545-o06rh49csiw8k1pg
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Sat 2008-03-22 01:51:03 +0100
message:
Fix errors.
modified:
svk.py svk.py-20080201171509-m2eg9m6jrmlbwxg5-1
------------------------------------------------------------
revno: 950.1.22
revision-id: jelmer at samba.org-20080321233545-o06rh49csiw8k1pg
parent: jelmer at samba.org-20080321233322-c4eihjtm4tz8jtj2
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Sat 2008-03-22 00:35:45 +0100
message:
Fix typo.
modified:
commit.py commit.py-20060607190346-qvq128wgfubhhgm2-1
------------------------------------------------------------
revno: 950.1.21
revision-id: jelmer at samba.org-20080321233322-c4eihjtm4tz8jtj2
parent: jelmer at samba.org-20080321233029-wethm3d2vg2pf920
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Sat 2008-03-22 00:33:22 +0100
message:
Print invalid property name.
modified:
commit.py commit.py-20060607190346-qvq128wgfubhhgm2-1
------------------------------------------------------------
revno: 950.1.20
revision-id: jelmer at samba.org-20080321233029-wethm3d2vg2pf920
parent: jelmer at samba.org-20080321224326-k9fj54i1gc2ugmhw
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Sat 2008-03-22 00:30:29 +0100
message:
Fix tests.
modified:
tests/test_mapping.py test_mapping.py-20080201131338-0zd86eznn4bojtee-1
tests/test_push.py test_push.py-20070201165715-g2ievcdfqi33wqsy-1
=== modified file 'NEWS'
--- a/NEWS 2008-03-21 22:45:37 +0000
+++ b/NEWS 2008-03-22 14:27:16 +0000
@@ -16,6 +16,8 @@
* --prefix is now determined from the specified url in svn-import. (#160335)
+ * Support storing revision signatures.
+
BUGS
* Fix compatibility with bzr 1.3.
=== modified file 'commit.py'
--- a/commit.py 2008-03-21 22:45:37 +0000
+++ b/commit.py 2008-03-22 14:27:16 +0000
@@ -471,7 +471,7 @@
existing_bp_parts = _check_dirs_exist(self.repository.transport,
bp_parts, -1)
for prop in self._svn_revprops:
- assert is_valid_property_name(prop)
+ assert is_valid_property_name(prop), "Invalid property name %r" % prop
try:
self.editor = self.repository.transport.get_commit_editor(
self._svn_revprops, done, None, False)
@@ -506,7 +506,7 @@
# Set all the revprops
for prop, value in self._svnprops.items():
- assert is_valid_property_name(prop)
+ assert is_valid_property_name(prop), "Invalid property name %r" % prop
if value is not None:
value = value.encode('utf-8')
branch_editors[-1].change_prop(prop, value)
@@ -701,6 +701,8 @@
except ChangesRootLHSHistory:
raise BzrError("Unable to push revision %r because it would change the ordering of existing revisions on the Subversion repository root. Use rebase and try again or push to a non-root path" % revision_id)
+ # FIXME: copy revisions signature
+
if 'validate' in debug.debug_flags:
crev = target.repository.get_revision(revision_id)
ctree = target.repository.revision_tree(revision_id)
@@ -764,6 +766,8 @@
replay_delta(builder, base_tree, old_tree)
builder.commit(rev.message)
+
+ # FIXME: Copy revision signature for rev
finally:
self.source.unlock()
=== modified file 'fetch.py'
--- a/fetch.py 2008-03-21 22:45:37 +0000
+++ b/fetch.py 2008-03-22 14:27:16 +0000
@@ -31,7 +31,8 @@
from mapping import (SVN_PROP_BZR_ANCESTRY, SVN_PROP_BZR_MERGE,
SVN_PROP_BZR_PREFIX, SVN_PROP_BZR_REVISION_INFO,
SVN_PROP_BZR_BRANCHING_SCHEME, SVN_PROP_BZR_REVISION_ID,
- SVN_PROP_BZR_FILEIDS, parse_merge_property,
+ SVN_PROP_BZR_FILEIDS, SVN_REVPROP_BZR_SIGNATURE,
+ parse_merge_property,
parse_revision_metadata)
from repository import (SvnRepository, SvnRepositoryFormat)
from svk import SVN_PROP_SVK_MERGE
@@ -125,7 +126,9 @@
svn_revprops = self.source._log._get_transport().revprop_list(self.revnum)
self.mapping.import_revision(svn_revprops, self._branch_fileprops, rev)
- return rev
+ signature = svn_revprops.get(SVN_REVPROP_BZR_SIGNATURE)
+
+ return (rev, signature)
def open_root(self, base_revnum):
if self.old_inventory.root is None:
@@ -460,13 +463,15 @@
file_weave.add_lines(self.revid, parents, lines)
def _finish_commit(self):
- rev = self._get_revision(self.revid)
+ (rev, signature) = self._get_revision(self.revid)
self.inventory.revision_id = self.revid
# Escaping the commit message is really the task of the serialiser
rev.message = _escape_commit_message(rev.message)
rev.inventory_sha1 = osutils.sha_string(
self.target.serialise_inventory(self.inventory))
self.target.add_revision(self.revid, rev, self.inventory)
+ if signature is not None:
+ self.target.add_signature_text(self.revid, signature)
self.target.commit_write_group()
self._write_group_active = False
=== modified file 'mapping.py'
--- a/mapping.py 2008-03-21 22:45:37 +0000
+++ b/mapping.py 2008-03-22 14:27:16 +0000
@@ -49,6 +49,7 @@
SVN_REVPROP_BZR_SCHEME = 'bzr:scheme'
SVN_REVPROP_BZR_SIGNATURE = 'bzr:gpg-signature'
SVN_REVPROP_BZR_TIMESTAMP = 'bzr:timestamp'
+SVN_REVPROP_BZR_LOG = 'bzr:log'
def escape_svn_path(x):
@@ -242,6 +243,9 @@
if props.has_key(SVN_REVPROP_BZR_COMMITTER):
rev.committer = props[SVN_REVPROP_BZR_COMMITTER].decode("utf-8")
+ if props.has_key(SVN_REVPROP_BZR_LOG):
+ rev.message = props[SVN_REVPROP_BZR_LOG]
+
for name, value in props.items():
if name.startswith(SVN_REVPROP_BZR_REVPROP_PREFIX):
rev.properties[name[len(SVN_REVPROP_BZR_REVPROP_PREFIX):]] = value
@@ -795,12 +799,9 @@
"""
if not revid.startswith("svn-"):
raise InvalidRevisionId(revid, None)
- try:
- mapping_version = revid[len("svn-"):len("svn-vx")]
- mapping = mapping_registry.get(mapping_version)
- return mapping.parse_revision_id(revid)
- except KeyError:
- pass
+ mapping_version = revid[len("svn-"):len("svn-vx")]
+ mapping = mapping_registry.get(mapping_version)
+ return mapping.parse_revision_id(revid)
def get_default_mapping():
=== modified file 'pre-revprop-change.example'
--- a/pre-revprop-change.example 2008-02-03 19:41:38 +0000
+++ b/pre-revprop-change.example 2008-03-22 13:28:04 +0000
@@ -17,7 +17,9 @@
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi
-# Allow adding bzr-svm revision properties:
+if [ "$ACTION" = "M" -a "$PROPNAME" = "bzr:gpg-signature" ]; then exit 0; fi
+
+# Allow adding bzr-svn revision properties:
if [ "$ACTION" = "A" -a "`echo "$PROPNAME" | cut -d : -f 1`" = "bzr" ]; then exit 0; fi
echo "Changing revision properties other than svn:log or bzr:* is prohibited" >&2
=== modified file 'repository.py'
--- a/repository.py 2008-03-21 22:45:37 +0000
+++ b/repository.py 2008-03-22 14:27:16 +0000
@@ -40,7 +40,7 @@
from config import SvnRepositoryConfig
import errors
import logwalker
-from mapping import (SVN_PROP_BZR_REVISION_ID,
+from mapping import (SVN_PROP_BZR_REVISION_ID, SVN_REVPROP_BZR_SIGNATURE,
SVN_PROP_BZR_BRANCHING_SCHEME, BzrSvnMappingv3FileProps,
parse_revision_metadata, parse_revid_property,
parse_merge_property, BzrSvnMapping,
@@ -444,8 +444,7 @@
if revid is not None:
yield revid
- def revision_parents(self, revision_id, svn_fileprops=None,
- svn_revprops=None):
+ def revision_parents(self, revision_id, svn_fileprops=None, svn_revprops=None):
"""See Repository.revision_parents()."""
parent_ids = ()
(branch, revnum, mapping) = self.lookup_revision_id(revision_id)
@@ -467,15 +466,17 @@
return parent_ids
- def get_revision(self, revision_id):
+ def get_revision(self, revision_id, svn_revprops=None, svn_fileprops=None):
"""See Repository.get_revision."""
if not revision_id or not isinstance(revision_id, str):
raise InvalidRevisionId(revision_id=revision_id, branch=self)
(path, revnum, mapping) = self.lookup_revision_id(revision_id)
- svn_revprops = lazy_dict(lambda: self.transport.revprop_list(revnum))
- svn_fileprops = lazy_dict(lambda: self.branchprop_list.get_changed_properties(path, revnum))
+ if svn_revprops is None:
+ svn_revprops = lazy_dict(lambda: self.transport.revprop_list(revnum))
+ if svn_fileprops is None:
+ svn_fileprops = lazy_dict(lambda: self.branchprop_list.get_changed_properties(path, revnum))
parent_ids = self.revision_parents(revision_id, svn_fileprops=svn_fileprops, svn_revprops=svn_revprops)
# Commit SVN revision properties to a Revision object
@@ -547,7 +548,6 @@
# Try a simple parse
try:
- # FIXME: Also try to parse with the other formats..
(uuid, branch_path, revnum, mapping) = parse_revision_id(revid)
assert isinstance(branch_path, str)
assert isinstance(mapping, BzrSvnMapping)
@@ -796,10 +796,9 @@
:return: False, as no signatures are stored for revisions in Subversion
at the moment.
"""
- # TODO: Retrieve from SVN_PROP_BZR_SIGNATURE
- return False # SVN doesn't store GPG signatures. Perhaps
- # store in SVN revision property?
-
+ (path, revnum, mapping) = self.lookup_revision_id(revision_id)
+ revprops = self.transport.revprop_list(revnum)
+ return revprops.has_key(SVN_REVPROP_BZR_SIGNATURE)
def get_signature_text(self, revision_id):
"""Return the signature text for a particular revision.
@@ -808,9 +807,16 @@
signature.
:raises NoSuchRevision: Always
"""
- # TODO: Retrieve from SVN_PROP_BZR_SIGNATURE
- # SVN doesn't store GPG signatures
- raise NoSuchRevision(self, revision_id)
+ (path, revnum, mapping) = self.lookup_revision_id(revision_id)
+ revprops = self.transport.revprop_list(revnum)
+ try:
+ return revprops[SVN_REVPROP_BZR_SIGNATURE]
+ except KeyError:
+ raise NoSuchRevision(self, revision_id)
+
+ def add_signature_text(self, revision_id, signature):
+ (path, revnum, mapping) = self.lookup_revision_id(revision_id)
+ self.transport.change_rev_prop(revnum, SVN_REVPROP_BZR_SIGNATURE, signature)
def get_revision_graph(self, revision_id=None):
"""See Repository.get_revision_graph()."""
=== modified file 'svk.py'
--- a/svk.py 2008-02-08 17:56:00 +0000
+++ b/svk.py 2008-03-22 00:51:03 +0000
@@ -15,6 +15,8 @@
"""Utility functions for dealing with SVK properties."""
+import errors
+
SVN_PROP_SVK_MERGE = 'svk:merge'
parse_svk_features = lambda text: set(text.splitlines())
=== modified file 'tests/__init__.py'
--- a/tests/__init__.py 2008-03-21 22:45:37 +0000
+++ b/tests/__init__.py 2008-03-22 14:27:16 +0000
@@ -120,6 +120,9 @@
def client_get_revprop(self, url, revnum, name):
return self.client_ctx.revprop_get(name, url, revnum)[0]
+
+ def client_set_revprop(self, url, revnum, name, value):
+ return self.client_ctx.revprop_set(name, url, renum, value)
def client_commit(self, dir, message=None, recursive=True):
"""Commit current changes in specified working copy.
=== modified file 'tests/test_fetch.py'
--- a/tests/test_fetch.py 2008-03-12 15:01:25 +0000
+++ b/tests/test_fetch.py 2008-03-22 13:38:24 +0000
@@ -189,6 +189,19 @@
newrepos = dir.create_repository()
oldrepos.copy_content_into(newrepos)
+ def test_fetch_signature(self):
+ repos_url = self.make_client('d', 'dc')
+ self.build_tree({'dc/trunk/bar': "data"})
+ self.client_add("dc/trunk")
+ self.client_commit("dc", "My Message")
+ self.client_set_revprop(repos_url, 1, "bzr:gpg-signature", "SIGNATURE")
+ oldrepos = Repository.open(repos_url)
+ oldrepos.set_branching_scheme(TrunkBranchingScheme(0))
+ dir = BzrDir.create("f", format.get_rich_root_format())
+ newrepos = dir.create_repository()
+ oldrepos.copy_content_into(newrepos)
+ self.assertEquals("SIGNATURE", newrepos.get_signature_text(oldrepos.generate_revision_id(1, "trunk", oldrepos.get_mapping())))
+
def test_fetch_special_char_edit(self):
repos_url = self.make_client('d', 'dc')
self.build_tree({u'dc/trunk/IöC': None})
=== modified file 'tests/test_mapping.py'
--- a/tests/test_mapping.py 2008-02-17 00:41:05 +0000
+++ b/tests/test_mapping.py 2008-03-21 23:30:29 +0000
@@ -114,13 +114,13 @@
class ParseMergePropertyTestCase(TestCase):
def test_parse_merge_space(self):
- self.assertEqual([], parse_merge_property("bla bla"))
+ self.assertEqual((), parse_merge_property("bla bla"))
def test_parse_merge_empty(self):
- self.assertEqual([], parse_merge_property(""))
+ self.assertEqual((), parse_merge_property(""))
def test_parse_merge_simple(self):
- self.assertEqual(["bla", "bloe"], parse_merge_property("bla\tbloe"))
+ self.assertEqual(("bla", "bloe"), parse_merge_property("bla\tbloe"))
class MappingTestAdapter:
=== modified file 'tests/test_push.py'
--- a/tests/test_push.py 2008-03-21 22:45:37 +0000
+++ b/tests/test_push.py 2008-03-22 14:27:16 +0000
@@ -752,7 +752,7 @@
trunk = Branch.open(repos_url + "/trunk")
trunk.pull(bzrwt.branch)
- self.assertEquals(bzr_parents,
+ self.assertEquals(tuple(bzr_parents),
trunk.repository.get_revision(revid2).parent_ids)
self.assertEquals([revid1, revid2], trunk.revision_history())
=== modified file 'tests/test_repos.py'
--- a/tests/test_repos.py 2008-03-21 22:45:37 +0000
+++ b/tests/test_repos.py 2008-03-22 14:27:16 +0000
@@ -131,11 +131,22 @@
self.assertRaises(NotImplementedError, repos.add_revision, "revid",
None)
- def test_has_signature_for_revision_id(self):
+ def test_has_signature_for_revision_id_no(self):
repos_url = self.make_client("a", "dc")
repos = Repository.open(repos_url)
self.assertFalse(repos.has_signature_for_revision_id("foo"))
+ def test_set_signature(self):
+ repos_url = self.make_client("a", "dc")
+ repos = Repository.open(repos_url)
+ self.build_tree({"dc/foo": "bar"})
+ self.client_add("dc/foo")
+ self.client_commit("dc", "msg")
+ revid = repos.get_mapping().generate_revision_id(repos.uuid, 1, "")
+ repos.add_signature_text(revid, "TEXT")
+ self.assertTrue(repos.has_signature_for_revision_id(revid))
+ self.assertEquals(repos.get_signature_text(revid), "TEXT")
+
def test_repr(self):
repos_url = self.make_client("a", "dc")
self.build_tree({'dc/foo': "data"})
More information about the bazaar-commits
mailing list