def format_patch(outdir, repo, commit_info, series, numbered=True,
- topic_regex=None, path_exclude_regex=None, topic=''):
+ path_exclude_regex=None, topic=''):
"""Create patch of a single commit"""
- commit = commit_info['id']
-
- # Parse and filter commit message body
- mangled_body = ""
- for line in commit_info['body'].splitlines():
- if topic_regex:
- match = re.match(topic_regex, line, flags=re.I)
- if match:
- topic = match.group('topic')
- gbp.log.debug("Topic %s found for %s" % (topic, commit))
- continue
- mangled_body += line + '\n'
- commit_info['body'] = mangled_body
# Determine filename and path
outdir = os.path.join(outdir, topic)
# Finally, create the patch
patch = None
if paths:
- diff = repo.diff('%s^!' % commit, paths=paths, stat=80, summary=True,
- text=True)
+ diff = repo.diff('%s^!' % commit_info['id'], paths=paths, stat=80,
+ summary=True, text=True)
patch = write_patch_file(filepath, commit_info, diff)
if patch:
series.append(patch)
SERIES_FILE = os.path.join(PATCH_DIR,"series")
+def parse_old_style_topic(commit_info):
+ """Parse 'gbp-pq-topic:' line(s) from commit info"""
+
+ commit = commit_info['id']
+ topic_regex = 'gbp-pq-topic:\s*(?P<topic>\S.*)'
+ mangled_body = ''
+ topic = ''
+ # Parse and filter commit message body
+ for line in commit_info['body'].splitlines():
+ match = re.match(topic_regex, line, flags=re.I)
+ if match:
+ topic = match.group('topic')
+ gbp.log.debug("Topic %s found for %s" % (topic, commit))
+ gbp.log.warn("Deprecated 'gbp-pq-topic: <topic>' in %s, please "
+ "use 'Gbp[-Pq]: Topic <topic>' instead" % commit)
+ continue
+ mangled_body += line + '\n'
+ commit_info['body'] = mangled_body
+ return topic
+
+
def generate_patches(repo, start, end, outdir, options):
"""
Generate patch files from git
# Generate patches
rev_list = reversed(repo.get_commits(start, end))
- topic_regex = 'gbp-pq-topic:\s*(?P<topic>\S.*)'
for commit in rev_list:
info = repo.get_commit_info(commit)
+ topic = parse_old_style_topic(info)
cmds = parse_gbp_commands(info, 'gbp', ('ignore'), ('topic'))
cmds.update(parse_gbp_commands(info, 'gbp-pq', ('ignore'), ('topic')))
if not 'ignore' in cmds:
- topic = cmds['topic'] if 'topic' in cmds else ''
+ if 'topic' in cmds:
+ topic = cmds['topic']
format_patch(outdir, repo, info, patches, options.patch_numbers,
- topic_regex=topic_regex, topic=topic)
+ topic=topic)
else:
gbp.log.info('Ignoring commit %s' % info['id'])