mirror of
https://github.com/newren/git-filter-repo.git
synced 2024-07-06 18:32:14 +02:00
filter-repo: add --subdirectory-filter and --to-subdirectory-filter
Signed-off-by: Elijah Newren <newren@gmail.com>
This commit is contained in:
parent
e36a62c2c7
commit
c8a96d4684
@ -1514,6 +1514,19 @@ class AppendFilter(argparse.Action):
|
|||||||
items.append((mod_type, match_type, values))
|
items.append((mod_type, match_type, values))
|
||||||
setattr(namespace, self.dest, items)
|
setattr(namespace, self.dest, items)
|
||||||
|
|
||||||
|
class HelperFilter(argparse.Action):
|
||||||
|
def __call__(self, parser, namespace, values, option_string=None):
|
||||||
|
af = AppendFilter(dest='path_changes', option_strings=None)
|
||||||
|
dirname = values if values[-1] == '/' else values+'/'
|
||||||
|
if option_string == '--subdirectory-filter':
|
||||||
|
af(parser, namespace, dirname, '--path-match')
|
||||||
|
af(parser, namespace, dirname+':', '--path-rename')
|
||||||
|
elif option_string == '--to-subdirectory-filter':
|
||||||
|
af(parser, namespace, ':'+dirname, '--path-rename')
|
||||||
|
else:
|
||||||
|
raise SystemExit("Error: HelperFilter given invalid option_string: {}"
|
||||||
|
.format(option_string))
|
||||||
|
|
||||||
def get_args():
|
def get_args():
|
||||||
# Include usage in the summary, so we can put the description first
|
# Include usage in the summary, so we can put the description first
|
||||||
summary = '''Rewrite (or analyze) repository history
|
summary = '''Rewrite (or analyze) repository history
|
||||||
@ -1598,6 +1611,19 @@ def get_args():
|
|||||||
tag foo-1.2.3 to bar-1.2.3; either OLD or NEW
|
tag foo-1.2.3 to bar-1.2.3; either OLD or NEW
|
||||||
can be empty.''')
|
can be empty.''')
|
||||||
|
|
||||||
|
helpers = parser.add_argument_group(title='Shortcuts')
|
||||||
|
helpers.add_argument('--subdirectory-filter', metavar='DIRECTORY',
|
||||||
|
action=HelperFilter,
|
||||||
|
help='''Only look at history that touches the given
|
||||||
|
subdirectory and treat that directory as the
|
||||||
|
project root. Equivalent to using
|
||||||
|
"--path DIRECTORY/ --path-rename DIRECTORY/:"''')
|
||||||
|
helpers.add_argument('--to-subdirectory-filter', metavar='DIRECTORY',
|
||||||
|
action=HelperFilter,
|
||||||
|
help='''Treat the project root as instead being under
|
||||||
|
DIRECTORY. Equivalent to using
|
||||||
|
"--path-rename :DIRECTORY/"''')
|
||||||
|
|
||||||
misc = parser.add_argument_group(title='Miscellaneous options')
|
misc = parser.add_argument_group(title='Miscellaneous options')
|
||||||
misc.add_argument('--help', '-h', action='store_true',
|
misc.add_argument('--help', '-h', action='store_true',
|
||||||
help='''Show this help message and exit.''')
|
help='''Show this help message and exit.''')
|
||||||
|
Loading…
Reference in New Issue
Block a user