From: Markus Lehtonen Date: Thu, 21 Nov 2013 15:25:37 +0000 (+0200) Subject: pq-rpm: create diff up to the last merge commit X-Git-Tag: tizen/0.6.22-20150206~71 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4902cb5892a50c64663bd47dd04e15d93c5f5e0a;p=tools%2Fgit-buildpackage.git 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 --- diff --git a/gbp/scripts/pq_rpm.py b/gbp/scripts/pq_rpm.py index aba63537..6187d6c5 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)):