Merge lp:~jelmer/bzr-builddeb/merge-upstream-revision into lp:bzr-builddeb

Proposed by Jelmer Vernooij
Status: Merged
Approved by: James Westby
Approved revision: 645
Merged at revision: 643
Proposed branch: lp:~jelmer/bzr-builddeb/merge-upstream-revision
Merge into: lp:bzr-builddeb
Diff against target: 160 lines (+65/-16)
5 files modified
cmds.py (+12/-4)
debian/changelog (+1/-1)
import_dsc.py (+7/-7)
tests/blackbox/test_merge_upstream.py (+34/-0)
upstream/branch.py (+11/-4)
To merge this branch: bzr merge lp:~jelmer/bzr-builddeb/merge-upstream-revision
Reviewer Review Type Date Requested Status
James Westby Approve
Review via email: mp+81868@code.launchpad.net

Description of the change

Fix the support for the -r argument to "bzr merge-upstream", when used without any arguments like --version.

In addition, allow merging upstream revisions that don't have a matching version in the primary upstream source.

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 'cmds.py'
--- cmds.py 2011-10-08 21:45:17 +0000
+++ cmds.py 2011-11-10 16:01:23 +0000
@@ -733,7 +733,7 @@
733733
734 if revision is not None:734 if revision is not None:
735 if upstream_branch is None:735 if upstream_branch is None:
736 raise BzrCommandError("--revision can only be used with a"736 raise BzrCommandError("--revision can only be used with a "
737 "valid upstream branch")737 "valid upstream branch")
738 if len(revision) > 1:738 if len(revision) > 1:
739 raise BzrCommandError("merge-upstream takes only a "739 raise BzrCommandError("merge-upstream takes only a "
@@ -747,7 +747,7 @@
747 if version is None and upstream_revisions is not None:747 if version is None and upstream_revisions is not None:
748 # Look up the version from the upstream revision748 # Look up the version from the upstream revision
749 version = upstream_branch_source.get_version(package,749 version = upstream_branch_source.get_version(package,
750 current_version, upstream_revisions)750 current_version, upstream_revisions[None])
751 elif version is None and primary_upstream_source is not None:751 elif version is None and primary_upstream_source is not None:
752 version = primary_upstream_source.get_latest_version(752 version = primary_upstream_source.get_latest_version(
753 package, current_version)753 package, current_version)
@@ -774,8 +774,16 @@
774 (version, upstream_branch_source))774 (version, upstream_branch_source))
775 if need_upstream_tarball:775 if need_upstream_tarball:
776 target_dir = tempfile.mkdtemp() # FIXME: Cleanup?776 target_dir = tempfile.mkdtemp() # FIXME: Cleanup?
777 locations = primary_upstream_source.fetch_tarballs(777 try:
778 package, version, target_dir, components=[None])778 locations = primary_upstream_source.fetch_tarballs(
779 package, version, target_dir, components=[None])
780 except PackageVersionNotPresent:
781 if upstream_revisions is not None:
782 locations = upstream_branch_source.fetch_tarballs(
783 package, version, target_dir, components=[None],
784 revisions=upstream_revisions)
785 else:
786 raise
779 source_format = get_source_format(tree)787 source_format = get_source_format(tree)
780 v3 = (source_format in [788 v3 = (source_format in [
781 FORMAT_3_0_QUILT, FORMAT_3_0_NATIVE])789 FORMAT_3_0_QUILT, FORMAT_3_0_NATIVE])
782790
=== modified file 'debian/changelog'
--- debian/changelog 2011-10-14 14:16:56 +0000
+++ debian/changelog 2011-11-10 16:01:23 +0000
@@ -21,7 +21,7 @@
21 * Support svn-buildpackage tag names to find upstream versions.21 * Support svn-buildpackage tag names to find upstream versions.
22 LP: #87426322 LP: #874263
2323
24 -- Jelmer Vernooij <jelmer@debian.org> Fri, 14 Oct 2011 16:16:46 +020024 -- Jelmer Vernooij <jelmer@debian.org> Thu, 10 Nov 2011 16:56:12 +0100
2525
26bzr-builddeb (2.7.9) unstable; urgency=low26bzr-builddeb (2.7.9) unstable; urgency=low
2727
2828
=== modified file 'import_dsc.py'
--- import_dsc.py 2011-10-25 10:55:57 +0000
+++ import_dsc.py 2011-11-10 16:01:23 +0000
@@ -560,7 +560,6 @@
560 tarballs=upstream_tarballs):560 tarballs=upstream_tarballs):
561 return False561 return False
562562
563
564 up_branch = self.pristine_upstream_branch563 up_branch = self.pristine_upstream_branch
565 up_branch.lock_read()564 up_branch.lock_read()
566 try:565 try:
@@ -568,14 +567,15 @@
568 other_up_branch = branch.pristine_upstream_branch567 other_up_branch = branch.pristine_upstream_branch
569 other_up_branch.lock_read()568 other_up_branch.lock_read()
570 try:569 try:
571 pristine_upstream_revids = branch.pristine_upstream_source.version_as_revisions(package, version)
572 if pristine_upstream_revids.keys() != [None]:
573 raise MultipleUpstreamTarballsNotSupported()
574 pristine_upstream_revid = pristine_upstream_revids[None]
575 graph = other_up_branch.repository.get_graph(570 graph = other_up_branch.repository.get_graph(
576 up_branch.repository)571 up_branch.repository)
577 return graph.is_ancestor(up_branch.last_revision(),572 pristine_upstream_revids = branch.pristine_upstream_source.version_as_revisions(
578 pristine_upstream_revid)573 package, version, tarballs=upstream_tarballs)
574 for (component, pristine_upstream_revid) in pristine_upstream_revids.iteritems():
575 if not graph.is_ancestor(up_branch.last_revision(),
576 pristine_upstream_revid):
577 return False
578 return True
579 finally:579 finally:
580 other_up_branch.unlock()580 other_up_branch.unlock()
581 finally:581 finally:
582582
=== modified file 'tests/blackbox/test_merge_upstream.py'
--- tests/blackbox/test_merge_upstream.py 2011-09-26 23:40:46 +0000
+++ tests/blackbox/test_merge_upstream.py 2011-11-10 16:01:23 +0000
@@ -187,6 +187,40 @@
187 os.path.abspath(rel2.tarball), changed_upstream.tree.basedir],187 os.path.abspath(rel2.tarball), changed_upstream.tree.basedir],
188 working_dir=package.tree.basedir)188 working_dir=package.tree.basedir)
189189
190 def test_upstream_branch_revision(self):
191 # It is sufficient to just specify an upstream revision
192 upstream = self.make_upstream()
193 rel1 = self.release_upstream(upstream)
194 package = self.import_upstream(rel1, upstream)
195 changed_upstream = self.file_moved_replaced_upstream(upstream)
196 rel2 = self.release_upstream(changed_upstream)
197 package_path = package.tree.basedir
198 os.mkdir(os.path.join(package_path, '.bzr-builddeb/'))
199 f = open(os.path.join(package_path, '.bzr-builddeb/local.conf'), 'wb')
200 try:
201 f.write('[BUILDDEB]\nupstream-branch = %s\n' % changed_upstream.tree.basedir)
202 finally:
203 f.close()
204
205 (out, err) = self.run_bzr(
206 ['merge-upstream', '-rrevid:%s' % changed_upstream.tree.last_revision()],
207 working_dir=package.tree.basedir)
208 self.assertEquals(out, "")
209 self.assertContainsRe(err, "Using version string 8.")
210
211 def test_upstream_branch_revision_requires_upstream(self):
212 # --revision requires a valid upstreambranch
213 upstream = self.make_upstream()
214 rel1 = self.release_upstream(upstream)
215 package = self.import_upstream(rel1, upstream)
216 changed_upstream = self.file_moved_replaced_upstream(upstream)
217 rel2 = self.release_upstream(changed_upstream)
218 (out, err) = self.run_bzr(['merge-upstream', '-r8'], working_dir=package.tree.basedir, retcode=3)
219 self.assertEquals(out, "")
220 self.assertEquals(err,
221 "Using distribution unstable\n"
222 "bzr: ERROR: --revision can only be used with a valid upstream branch\n")
223
190 def test_hooks(self):224 def test_hooks(self):
191 upstream = self.make_upstream()225 upstream = self.make_upstream()
192 rel1 = self.release_upstream(upstream)226 rel1 = self.release_upstream(upstream)
193227
=== modified file 'upstream/branch.py'
--- upstream/branch.py 2011-09-27 00:48:16 +0000
+++ upstream/branch.py 2011-11-10 16:01:23 +0000
@@ -264,12 +264,19 @@
264 finally:264 finally:
265 self.upstream_branch.unlock()265 self.upstream_branch.unlock()
266266
267 def fetch_tarballs(self, package, version, target_dir, components=None):267 def fetch_tarballs(self, package, version, target_dir, components=None,
268 revisions=None):
269 if components is not None and components != [None]:
270 # Multiple components are not supported
271 raise PackageVersionNotPresent(package, version, self)
268 self.upstream_branch.lock_read()272 self.upstream_branch.lock_read()
269 try:273 try:
270 revid = self.version_as_revision(package, version)274 if revisions is not None:
271 if revid is None:275 revid = revisions[None]
272 raise PackageVersionNotPresent(package, version, self)276 else:
277 revid = self.version_as_revision(package, version)
278 if revid is None:
279 raise PackageVersionNotPresent(package, version, self)
273 note("Exporting upstream branch revision %s to create the tarball",280 note("Exporting upstream branch revision %s to create the tarball",
274 revid)281 revid)
275 target_filename = self._tarball_path(package, version, None, target_dir)282 target_filename = self._tarball_path(package, version, None, target_dir)

Subscribers

People subscribed via source and target branches