diff --git a/plugins/branch_name_in_commit/README.md b/plugins/branch_name_in_commit/README.md index b11982b7..17e76e47 100644 --- a/plugins/branch_name_in_commit/README.md +++ b/plugins/branch_name_in_commit/README.md @@ -6,5 +6,15 @@ during the migration to Git. You can use this plugin to either prepend or append the branch name from the mercurial commit into the commit message in Git. +Valid arguments are: + +- `start`: write the branch name at the start of the commit +- `end`: write the branch name at the end of the commit +- `sameline`: if `start` specified, put a colon and a space + after the branch name, such that the commit message reads + `branch_name: first line of commit message`. Otherwise, the + branch name is on the first line of the commit message by itself. +- `skipmaster`: Don't write the branch name if the branch is `master`. + To use the plugin, add -`--plugin branch_name_in_commit=(start|end)`. +`--plugin branch_name_in_commit=`. diff --git a/plugins/branch_name_in_commit/__init__.py b/plugins/branch_name_in_commit/__init__.py index 20abe5b4..910a4466 100644 --- a/plugins/branch_name_in_commit/__init__.py +++ b/plugins/branch_name_in_commit/__init__.py @@ -3,12 +3,21 @@ def build_filter(args): class Filter: def __init__(self, args): - if not args in ['start','end']: - raise Exception('Cannot have branch name anywhere but start and end') - self.pos = args + args = {arg: True for arg in args.split(',')} + self.start = args.pop('start', False) + self.end = args.pop('end', False) + self.sameline = args.pop('sameline', False) + self.skip_master = args.pop('skipmaster', False) - def commit_message_filter(self,commit_data): - if self.pos == 'start': - commit_data['desc'] = commit_data['branch'] + '\n' + commit_data['desc'] - if self.pos == 'end': - commit_data['desc'] = commit_data['desc'] + '\n' + commit_data['branch'] + if self.sameline and not self.start: + raise ValueError("sameline option only allowed if 'start' given") + if args: + raise ValueError("Unknown args: " + ','.join(args)) + + def commit_message_filter(self, commit_data): + if not (self.skip_master and commit_data['branch'] == 'master'): + if self.start: + sep = ': ' if self.sameline else '\n' + commit_data['desc'] = commit_data['branch'] + sep + commit_data['desc'] + if self.end: + commit_data['desc'] = commit_data['desc'] + '\n' + commit_data['branch']