Merge lp:~jelmer/bzr-builddeb/fix-merge-upstream-in-empty into lp:bzr-builddeb

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Jelmer Vernooij
Approved revision: no longer in the source branch.
Merged at revision: 555
Proposed branch: lp:~jelmer/bzr-builddeb/fix-merge-upstream-in-empty
Merge into: lp:bzr-builddeb
Diff against target: 139 lines (+37/-15)
5 files modified
cmds.py (+10/-6)
debian/changelog (+4/-1)
import_dsc.py (+5/-4)
merge_upstream.py (+10/-4)
tests/blackbox/test_merge_upstream.py (+8/-0)
To merge this branch: bzr merge lp:~jelmer/bzr-builddeb/fix-merge-upstream-in-empty
Reviewer Review Type Date Requested Status
James Westby Approve
Jelmer Vernooij Pending
Review via email: mp+59508@code.launchpad.net

Description of the change

This makes it possible to run "bzr merge-upstream" in a branch without any existing debian/ directory.

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

Merge support for automatically determining version from tarball names.

555. By Jelmer Vernooij

Merge support for running 'bzr merge-upstream' in a branch without packaging metadata.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'cmds.py'
2--- cmds.py 2011-04-28 15:46:43 +0000
3+++ cmds.py 2011-04-29 13:01:01 +0000
4@@ -47,7 +47,6 @@
5 NoWorkingTree,
6 )
7 from bzrlib.option import Option
8-from bzrlib.revisionspec import RevisionSpec
9 from bzrlib.tag import _merge_tags_if_possible
10 from bzrlib.trace import note, warning
11 from bzrlib.workingtree import WorkingTree
12@@ -589,7 +588,6 @@
13 location, v3)
14
15 def _get_changelog_info(self, tree, last_version, package, distribution):
16- changelog = None
17 current_version = last_version
18 try:
19 (changelog, larstiq) = find_changelog(tree, False, max_blocks=2)
20@@ -602,7 +600,8 @@
21 if distribution is not None:
22 note("Using distribution %s" % distribution)
23 except MissingChangelogError:
24- pass
25+ larstiq = False
26+ changelog = None
27 if distribution is None:
28 note("No distribution specified, and no changelog, "
29 "assuming 'debian'")
30@@ -639,8 +638,11 @@
31 contains_upstream_source = tree_contains_upstream_source(tree)
32 build_type = config.build_type
33 if build_type is None:
34- build_type = guess_build_type(tree, changelog.version,
35- contains_upstream_source)
36+ changelog_version = None
37+ else:
38+ changelog_version = changelog.version
39+ build_type = guess_build_type(tree, changelog_version,
40+ contains_upstream_source)
41 need_upstream_tarball = (build_type != BUILD_TYPE_MERGE)
42 if build_type == BUILD_TYPE_NATIVE:
43 raise BzrCommandError("Merge upstream in native mode is not "
44@@ -740,9 +742,11 @@
45 conflicts = self._do_merge(tree, tarball_filename, package,
46 version, current_version, upstream_branch, upstream_revision,
47 merge_type, force)
48- if Version(current_version) >= Version(version):
49+ if current_version is not None and Version(current_version) >= Version(version):
50 raise BzrCommandError(
51 "Upstream version %s has already been merged." % version)
52+ if not tree.has_filename("debian"):
53+ tree.mkdir("debian")
54 self._add_changelog_entry(tree, package, version,
55 distribution_name, changelog)
56 run_hook(tree, 'merge-upstream', config)
57
58=== modified file 'debian/changelog'
59--- debian/changelog 2011-04-28 15:46:43 +0000
60+++ debian/changelog 2011-04-29 13:01:01 +0000
61@@ -2,8 +2,11 @@
62
63 * In 'bzr merge-usptream', don't ignore upstream branch when upstream
64 version can not be found. LP: #772424
65+ * Use --create when merging a new upstream into a branch that doesn't have a
66+ changelog file. LP: #385667
67+ * Fix merging of upstream in new packages. LP: #772225
68
69- -- Jelmer Vernooij <jelmer@debian.org> Thu, 28 Apr 2011 16:50:38 +0200
70+ -- Jelmer Vernooij <jelmer@debian.org> Fri, 29 Apr 2011 14:47:48 +0200
71
72 bzr-builddeb (2.7.3) unstable; urgency=low
73
74
75=== modified file 'import_dsc.py'
76--- import_dsc.py 2011-02-20 17:12:14 +0000
77+++ import_dsc.py 2011-04-29 13:01:01 +0000
78@@ -1449,13 +1449,14 @@
79 # Bug lp:515367 where the first upstream tarball is
80 # missing a proper history link and a criss-cross merge
81 # then recurses and finds no deeper ancestor.
82- if len(parents) != 2:
83- # Very first import... shouldn't be possible.
84- raise
85 # Use the previous upstream import as the from revision
86+ if len(parents) == 0:
87+ from_revision = NULL_REVISION
88+ else:
89+ from_revision = parents[0]
90 conflicts = self.tree.merge_from_branch(
91 self.upstream_branch, merge_type=merge_type,
92- from_revision=parents[0])
93+ from_revision=from_revision)
94 else:
95 # Pull so that merge-upstream allows you to start a branch
96 # from upstream tarball.
97
98=== modified file 'merge_upstream.py'
99--- merge_upstream.py 2011-04-28 15:46:43 +0000
100+++ merge_upstream.py 2011-04-29 13:01:01 +0000
101@@ -89,11 +89,17 @@
102 "upstream_version should be a str, not %s" % str(
103 type(upstream_version))
104 entry_description = upstream_merge_changelog_line(upstream_version)
105- proc = subprocess.Popen(["dch", "-v",
106- str(package_version(upstream_version, distribution_name,
107- changelog.epoch)),
108+ if changelog is None:
109+ epoch = None
110+ else:
111+ epoch = changelog.epoch
112+ argv = ["dch", "-v",
113+ str(package_version(upstream_version, distribution_name, epoch)),
114 "-D", "UNRELEASED", "--release-heuristic", "changelog",
115- entry_description], cwd=tree.basedir)
116+ "--package", package, entry_description]
117+ if not tree.has_filename("debian/changelog"):
118+ argv.append("--create")
119+ proc = subprocess.Popen(argv, cwd=tree.basedir)
120 proc.wait()
121 # FIXME: Raise insightful exception here rather than just checking
122 # return code.
123
124=== modified file 'tests/blackbox/test_merge_upstream.py'
125--- tests/blackbox/test_merge_upstream.py 2011-04-28 16:01:09 +0000
126+++ tests/blackbox/test_merge_upstream.py 2011-04-29 13:01:01 +0000
127@@ -198,4 +198,12 @@
128 os.path.abspath(rel2.tarball)], working_dir=package.tree.basedir)
129 self.failUnlessExists(os.path.join(package.tree.basedir, 'muhook'))
130
131+ def test_new_package(self):
132+ upstream = self.make_upstream()
133+ tree = upstream.tree.bzrdir.sprout("package").open_workingtree()
134+ rel1 = self.release_upstream(upstream)
135+ self.run_bzr(['merge-upstream', '--version', str(rel1.version),
136+ "--package", "bar", os.path.abspath(rel1.tarball)],
137+ working_dir=tree.basedir)
138+
139 # vim: ts=4 sts=4 sw=4

Subscribers

People subscribed via source and target branches