From eecf64f0c5c45f04c8b333237652098f4ea3d006 Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Thu, 21 Nov 2013 17:25:37 +0200 Subject: [PATCH] pq-rpm: create diff up to the last merge commit Before, merge commits broke patch generation, or, (most probably) caused the generated patches to be unapplicable (similar to how git-format-patch behaves). Now, changes up to the last merge commit are squashed into one diff if merge commits are found in the revision list from which patches are to be generated. Individual patches (one per commit) are generated from the last merge commit up to the exported revision. Signed-off-by: Markus Lehtonen --- gbp/scripts/pq_rpm.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gbp/scripts/pq_rpm.py b/gbp/scripts/pq_rpm.py index aba6353..6187d6c 100755 --- a/gbp/scripts/pq_rpm.py +++ b/gbp/scripts/pq_rpm.py @@ -107,6 +107,20 @@ def generate_patches(repo, start, squash, end, outdir, options): if patch_fn: patches.append(patch_fn) start = squash_sha1 + # Check for merge commits, yet another squash if merges found + merges = repo.get_commits(start, end_commit, options=['--merges']) + if merges: + # Shorten SHA1s + start_sha1 = repo.rev_parse(start, short=7) + merge_sha1 = repo.rev_parse(merges[0], short=7) + patch_fn = format_diff(outdir, None, repo, start_sha1, merge_sha1, + options.patch_export_ignore_path) + if patch_fn: + gbp.log.info("Merge commits found! Diff between %s..%s written " + "into one monolithic diff" % (start_sha1, merge_sha1)) + patches.append(patch_fn) + start = merge_sha1 + print start # Generate patches for commit in reversed(repo.get_commits(start, end_commit)): -- 2.7.4