summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2012-03-22 17:15:05 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-03-23 12:07:25 +0000
commit6e70c95dc69be6708c3bc231cc2a99eac1360815 (patch)
tree063f22587d4942d32a317462a2ffe654c9845093
parentb03e710c88ad0c66cf731647f26e8441d0074cae (diff)
downloadopenembedded-core-6e70c95dc69be6708c3bc231cc2a99eac1360815.tar.gz
openembedded-core-6e70c95dc69be6708c3bc231cc2a99eac1360815.tar.bz2
openembedded-core-6e70c95dc69be6708c3bc231cc2a99eac1360815.tar.xz
openembedded-core-6e70c95dc69be6708c3bc231cc2a99eac1360815.zip
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). Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xscripts/combo-layer38
1 files changed, 38 insertions, 0 deletions
diff --git a/scripts/combo-layer b/scripts/combo-layer
index 36123238b..73d61cce4 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()