Merge lp:~jelmer/bzr-builddeb/svn-upstream-import into lp:bzr-builddeb

Proposed by Jelmer Vernooij
Status: Merged
Merged at revision: 494
Proposed branch: lp:~jelmer/bzr-builddeb/svn-upstream-import
Merge into: lp:bzr-builddeb
Diff against target: 106 lines (+36/-18)
2 files modified
merge_upstream.py (+35/-12)
tests/test_merge_upstream.py (+1/-6)
To merge this branch: bzr merge lp:~jelmer/bzr-builddeb/svn-upstream-import
Reviewer Review Type Date Requested Status
James Westby Approve
Bzr-builddeb-hackers code Pending
Review via email: mp+33590@code.launchpad.net

Description of the change

This updates bzr-builddeb to prefer updating the upstream version string using a format that's already being used (if ~svn is used, update that rather than adding ~bzr, etc).

It also adds support for updating the ~svn / +bzr suffixes when upstream is not a foreign branch but an import of a foreign branch.

To post a comment you must log in.
Revision history for this message
James Westby (james-w) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'merge_upstream.py'
--- merge_upstream.py 2010-08-19 21:11:02 +0000
+++ merge_upstream.py 2010-08-24 21:41:08 +0000
@@ -35,6 +35,7 @@
35 # Prior to 0.1.15 the debian module was called debian_bundle35 # Prior to 0.1.15 the debian module was called debian_bundle
36 from debian_bundle.changelog import Version36 from debian_bundle.changelog import Version
3737
38from bzrlib.errors import InvalidRevisionId
38from bzrlib.revisionspec import RevisionSpec39from bzrlib.revisionspec import RevisionSpec
3940
40from bzrlib.plugins.builddeb.util import get_snapshot_revision41from bzrlib.plugins.builddeb.util import get_snapshot_revision
@@ -43,6 +44,27 @@
43TAG_PREFIX = "upstream-"44TAG_PREFIX = "upstream-"
4445
4546
47def extract_svn_revno(rev):
48 """Extract the Subversion number of a revision from a revision.
49
50 :param rev: Revision object
51 :return: Revision number, None if this was not a Subversion revision or
52 if the revision number could not be determined (bzr-svn not available).
53 """
54 try:
55 from bzrlib.plugins.svn import extract_svn_foreign_revid
56 except ImportError:
57 # No svn support
58 return None
59 else:
60 try:
61 (svn_uuid, branch_path, svn_revno) = extract_svn_foreign_revid(rev)
62 except InvalidRevisionId:
63 return None
64 else:
65 return svn_revno
66
67
46def upstream_version_add_revision(upstream_branch, version_string, revid):68def upstream_version_add_revision(upstream_branch, version_string, revid):
47 """Update the revision in a upstream version string.69 """Update the revision in a upstream version string.
4870
@@ -51,7 +73,7 @@
51 :param revid: Revision id of the revision73 :param revid: Revision id of the revision
52 """74 """
53 revno = upstream_branch.revision_id_to_revno(revid)75 revno = upstream_branch.revision_id_to_revno(revid)
54 76
55 if "+bzr" in version_string:77 if "+bzr" in version_string:
56 return "%s+bzr%d" % (version_string[:version_string.rfind("+bzr")], revno)78 return "%s+bzr%d" % (version_string[:version_string.rfind("+bzr")], revno)
5779
@@ -59,17 +81,18 @@
59 return "%s~bzr%d" % (version_string[:version_string.rfind("~bzr")], revno)81 return "%s~bzr%d" % (version_string[:version_string.rfind("~bzr")], revno)
6082
61 rev = upstream_branch.repository.get_revision(revid)83 rev = upstream_branch.repository.get_revision(revid)
62 svn_revmeta = getattr(rev, "svn_meta", None)84 svn_revno = extract_svn_revno(rev)
63 if svn_revmeta is not None:85
64 svn_revno = svn_revmeta.revnum86 # FIXME: Raise error if +svn/~svn is present and svn_revno is not set?
6587 if "+svn" in version_string and svn_revno:
66 if "+svn" in version_string:88 return "%s+svn%d" % (version_string[:version_string.rfind("+svn")], svn_revno)
67 return "%s+svn%d" % (version_string[:version_string.rfind("+svn")], svn_revno)89 if "~svn" in version_string and svn_revno:
68 if "~svn" in version_string:90 return "%s~svn%d" % (version_string[:version_string.rfind("~svn")], svn_revno)
69 return "%s~svn%d" % (version_string[:version_string.rfind("~svn")], svn_revno)91
92 if svn_revno:
70 return "%s+svn%d" % (version_string, svn_revno)93 return "%s+svn%d" % (version_string, svn_revno)
7194 else:
72 return "%s+bzr%d" % (version_string, revno)95 return "%s+bzr%d" % (version_string, revno)
7396
7497
75def _upstream_branch_version(revhistory, reverse_tag_dict, package, 98def _upstream_branch_version(revhistory, reverse_tag_dict, package,
@@ -122,7 +145,7 @@
122 if previous_revision is not None:145 if previous_revision is not None:
123 previous_revspec = RevisionSpec.from_string(previous_revision)146 previous_revspec = RevisionSpec.from_string(previous_revision)
124 previous_revno, _ = previous_revspec.in_history(upstream_branch)147 previous_revno, _ = previous_revspec.in_history(upstream_branch)
125 # Trim revision history - we don't care about any revisions 148 # Trim revision history - we don't care about any revisions
126 # before the revision of the previous version149 # before the revision of the previous version
127 else:150 else:
128 previous_revno = 0151 previous_revno = 0
129152
=== modified file 'tests/test_merge_upstream.py'
--- tests/test_merge_upstream.py 2010-08-19 21:11:02 +0000
+++ tests/test_merge_upstream.py 2010-08-24 21:41:08 +0000
@@ -49,14 +49,9 @@
49 return self.revnos[revid]49 return self.revnos[revid]
5050
51 def get_revision(self, revid):51 def get_revision(self, revid):
52 class MockSvnMeta(object):
53
54 def __init__(self, svn_revno):
55 self.revnum = svn_revno
56
57 rev = Revision(revid)52 rev = Revision(revid)
58 if revid in self.svn_revnos:53 if revid in self.svn_revnos:
59 rev.svn_meta = MockSvnMeta(self.svn_revnos[revid])54 rev.foreign_revid = ("uuid", "bp", self.svn_revnos[revid])
60 return rev55 return rev
6156
62 def test_update_plus_rev(self):57 def test_update_plus_rev(self):

Subscribers

People subscribed via source and target branches