From ab69a16b21d0ce81458f6d3e6821e1800ee19a7c Mon Sep 17 00:00:00 2001 From: Paul Eggleton Date: Thu, 22 Mar 2012 17:15:05 +0000 Subject: scripts/combo-layer: handle diffs in commit messages A few recent commits in the OE-Core repository contain diffs in their commit messages, which totally confuses git-am when applying them to the combo repository during update. Add some code to detect and indent any diff text in the commit message so that this does not happen (and show a warning). (From OE-Core rev: 6e70c95dc69be6708c3bc231cc2a99eac1360815) Signed-off-by: Paul Eggleton Signed-off-by: Richard Purdie --- scripts/combo-layer | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'scripts') diff --git a/scripts/combo-layer b/scripts/combo-layer index 36123238b9..73d61cce4c 100755 --- a/scripts/combo-layer +++ b/scripts/combo-layer @@ -144,6 +144,43 @@ def check_repo_clean(repodir): logger.error("git repo %s is dirty, please fix it first", repodir) sys.exit(1) +def check_patch(patchfile): + f = open(patchfile) + ln = f.readline() + of = None + in_patch = False + beyond_msg = False + pre_buf = '' + while ln: + if not beyond_msg: + if ln == '---\n': + if not of: + break + in_patch = False + beyond_msg = True + elif ln.startswith('--- '): + # We have a diff in the commit message + in_patch = True + if not of: + print('WARNING: %s contains a diff in its commit message, indenting to avoid failure during apply' % patchfile) + of = open(patchfile + '.tmp', 'w') + of.write(pre_buf) + pre_buf = '' + elif in_patch and not ln[0] in '+-@ \n\r': + in_patch = False + if of: + if in_patch: + of.write(' ' + ln) + else: + of.write(ln) + else: + pre_buf += ln + ln = f.readline() + f.close() + if of: + of.close() + os.rename(patchfile + '.tmp', patchfile) + def action_update(conf, args): """ update the component repos @@ -227,6 +264,7 @@ def action_update(conf, args): count=len(revlist)-1 for patch in patchlist: f.write("%s %s\n" % (patch, revlist[count])) + check_patch(os.path.join(patch_dir, patch)) count=count-1 f.close() -- cgit v1.2.3-54-g00ecf