From 0a1c6a1c16e2c89f98158cb2f79dda1583a8fac4 Mon Sep 17 00:00:00 2001 From: David Holmer Date: Wed, 14 Nov 2012 19:19:00 -0500 Subject: [PATCH] Special handling for manifest group "default" Change Details: * Make "default" a special manifest group that matches any project that does not have the special project group "notdefault" * Use "default" instead of "all,-notdefault" when user does not specify manifest group * Expand -g option help to include example usage of manifest groups Change Benefits: * Allow a more intuitive and expressive manifest groups specification: * "default" instead of "all,-notdefault" * "default,foo" instead of "all,-notdefault,foo" * "default,-foo" instead of "all,-notdefault,-foo" * "foo,-default" which has no equivalent * Default manifest groups behavior can be restored by the command 'repo init -g default'. This is significantly more intuitive than the current equivalent command 'repo init -g all,-notdefault'. Change-Id: I6d0673791d64a650110a917c248bcebb23b279d3 --- command.py | 2 +- project.py | 7 ++++++- repo | 3 ++- subcmds/init.py | 7 ++++--- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/command.py b/command.py index 96d7848f..43988520 100644 --- a/command.py +++ b/command.py @@ -136,7 +136,7 @@ class Command(object): groups = mp.config.GetString('manifest.groups') if not groups: - groups = 'all,-notdefault,platform-' + platform.system().lower() + groups = 'default,platform-' + platform.system().lower() groups = [x for x in re.split(r'[,\s]+', groups) if x] if not args: diff --git a/project.py b/project.py index 22e4a5d6..901a2831 100644 --- a/project.py +++ b/project.py @@ -672,9 +672,14 @@ class Project(object): project_groups: "all,group1,group2" manifest_groups: "-group1,group2" the project will be matched. + + The special manifest group "default" will match any project that + does not have the special project group "notdefault" """ - expanded_manifest_groups = manifest_groups or ['all', '-notdefault'] + expanded_manifest_groups = manifest_groups or ['default'] expanded_project_groups = ['all'] + (self.groups or []) + if not 'notdefault' in expanded_project_groups: + expanded_project_groups += ['default'] matched = False for group in expanded_manifest_groups: diff --git a/repo b/repo index 6b374f72..c3484745 100755 --- a/repo +++ b/repo @@ -164,7 +164,8 @@ group.add_option('--depth', type='int', default=None, help='create a shallow clone with given depth; see git clone') group.add_option('-g', '--groups', dest='groups', default='default', - help='restrict manifest projects to ones with a specified group', + help='restrict manifest projects to ones with specified ' + 'group(s) [default|all|G1,G2,G3|G4,-G5,-G6]', metavar='GROUP') group.add_option('-p', '--platform', dest='platform', default="auto", diff --git a/subcmds/init.py b/subcmds/init.py index 11312601..29730cc4 100644 --- a/subcmds/init.py +++ b/subcmds/init.py @@ -91,8 +91,9 @@ to update the working directory files. dest='depth', help='create a shallow clone with given depth; see git clone') g.add_option('-g', '--groups', - dest='groups', default='all,-notdefault', - help='restrict manifest projects to ones with a specified group', + dest='groups', default='default', + help='restrict manifest projects to ones with specified ' + 'group(s) [default|all|G1,G2,G3|G4,-G5,-G6]', metavar='GROUP') g.add_option('-p', '--platform', dest='platform', default='auto', @@ -169,7 +170,7 @@ to update the working directory files. groups = [x for x in groups if x] groupstr = ','.join(groups) - if opt.platform == 'auto' and groupstr == 'all,-notdefault,platform-' + platform.system().lower(): + if opt.platform == 'auto' and groupstr == 'default,platform-' + platform.system().lower(): groupstr = None m.config.SetString('manifest.groups', groupstr)