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 <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton 2012-03-22 17:15:05 +00:00 committed by Richard Purdie
parent fd3f7d5d6a
commit ab69a16b21
1 changed files with 38 additions and 0 deletions

View File

@ -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()