summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--command.py2
-rw-r--r--docs/manifest-format.txt7
-rw-r--r--manifest_xml.py4
-rw-r--r--project.py15
-rw-r--r--subcmds/init.py6
5 files changed, 18 insertions, 16 deletions
diff --git a/command.py b/command.py
index 4dbe2e77..5789582c 100644
--- a/command.py
+++ b/command.py
@@ -70,7 +70,7 @@ class Command(object):
70 70
71 groups = mp.config.GetString('manifest.groups') 71 groups = mp.config.GetString('manifest.groups')
72 if not groups: 72 if not groups:
73 groups = 'default,platform-' + platform.system().lower() 73 groups = 'all,-notdefault,platform-' + platform.system().lower()
74 groups = [x for x in re.split('[,\s]+', groups) if x] 74 groups = [x for x in re.split('[,\s]+', groups) if x]
75 75
76 if not args: 76 if not args:
diff --git a/docs/manifest-format.txt b/docs/manifest-format.txt
index 338e0219..f499868c 100644
--- a/docs/manifest-format.txt
+++ b/docs/manifest-format.txt
@@ -184,11 +184,12 @@ the default element is used.
184 184
185Attribute `groups`: List of groups to which this project belongs, 185Attribute `groups`: List of groups to which this project belongs,
186whitespace or comma separated. All projects belong to the group 186whitespace or comma separated. All projects belong to the group
187"default", and each project automatically belongs to a group of 187"all", and each project automatically belongs to a group of
188it's name:`name` and path:`path`. E.g. for 188its name:`name` and path:`path`. E.g. for
189<project name="monkeys" path="barrel-of"/>, that project 189<project name="monkeys" path="barrel-of"/>, that project
190definition is implicitly in the following manifest groups: 190definition is implicitly in the following manifest groups:
191default, name:monkeys, and path:barrel-of. 191default, name:monkeys, and path:barrel-of. If you place a project in the
192group "notdefault", it will not be automatically downloaded by repo.
192 193
193Element annotation 194Element annotation
194------------------ 195------------------
diff --git a/manifest_xml.py b/manifest_xml.py
index 205e4af7..65b76379 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -130,7 +130,7 @@ class XmlManifest(object):
130 130
131 groups = mp.config.GetString('manifest.groups') 131 groups = mp.config.GetString('manifest.groups')
132 if not groups: 132 if not groups:
133 groups = 'default' 133 groups = 'all'
134 groups = [x for x in re.split(r'[,\s]+', groups) if x] 134 groups = [x for x in re.split(r'[,\s]+', groups) if x]
135 135
136 doc = xml.dom.minidom.Document() 136 doc = xml.dom.minidom.Document()
@@ -211,7 +211,7 @@ class XmlManifest(object):
211 ce.setAttribute('dest', c.dest) 211 ce.setAttribute('dest', c.dest)
212 e.appendChild(ce) 212 e.appendChild(ce)
213 213
214 default_groups = ['default', 'name:%s' % p.name, 'path:%s' % p.relpath] 214 default_groups = ['all', 'name:%s' % p.name, 'path:%s' % p.relpath]
215 egroups = [g for g in p.groups if g not in default_groups] 215 egroups = [g for g in p.groups if g not in default_groups]
216 if egroups: 216 if egroups:
217 e.setAttribute('groups', ','.join(egroups)) 217 e.setAttribute('groups', ','.join(egroups))
diff --git a/project.py b/project.py
index 06baccb5..60633b73 100644
--- a/project.py
+++ b/project.py
@@ -632,20 +632,21 @@ class Project(object):
632 """Returns true if the manifest groups specified at init should cause 632 """Returns true if the manifest groups specified at init should cause
633 this project to be synced. 633 this project to be synced.
634 Prefixing a manifest group with "-" inverts the meaning of a group. 634 Prefixing a manifest group with "-" inverts the meaning of a group.
635 All projects are implicitly labelled with "default". 635 All projects are implicitly labelled with "all".
636 636
637 labels are resolved in order. In the example case of 637 labels are resolved in order. In the example case of
638 project_groups: "default,group1,group2" 638 project_groups: "all,group1,group2"
639 manifest_groups: "-group1,group2" 639 manifest_groups: "-group1,group2"
640 the project will be matched. 640 the project will be matched.
641 """ 641 """
642 if self.groups is None: 642 expanded_manifest_groups = manifest_groups or ['all', '-notdefault']
643 return True 643 expanded_project_groups = ['all'] + (self.groups or [])
644
644 matched = False 645 matched = False
645 for group in manifest_groups: 646 for group in expanded_manifest_groups:
646 if group.startswith('-') and group[1:] in self.groups: 647 if group.startswith('-') and group[1:] in expanded_project_groups:
647 matched = False 648 matched = False
648 elif group in self.groups: 649 elif group in expanded_project_groups:
649 matched = True 650 matched = True
650 651
651 return matched 652 return matched
diff --git a/subcmds/init.py b/subcmds/init.py
index b16f57c4..9a4f7118 100644
--- a/subcmds/init.py
+++ b/subcmds/init.py
@@ -90,12 +90,12 @@ to update the working directory files.
90 dest='depth', 90 dest='depth',
91 help='create a shallow clone with given depth; see git clone') 91 help='create a shallow clone with given depth; see git clone')
92 g.add_option('-g', '--groups', 92 g.add_option('-g', '--groups',
93 dest='groups', default='default', 93 dest='groups', default='all,-notdefault',
94 help='restrict manifest projects to ones with a specified group', 94 help='restrict manifest projects to ones with a specified group',
95 metavar='GROUP') 95 metavar='GROUP')
96 g.add_option('-p', '--platform', 96 g.add_option('-p', '--platform',
97 dest='platform', default='auto', 97 dest='platform', default='auto',
98 help='restrict manifest projects to ones with a specified' 98 help='restrict manifest projects to ones with a specified '
99 'platform group [auto|all|none|linux|darwin|...]', 99 'platform group [auto|all|none|linux|darwin|...]',
100 metavar='PLATFORM') 100 metavar='PLATFORM')
101 101
@@ -164,7 +164,7 @@ to update the working directory files.
164 164
165 groups = [x for x in groups if x] 165 groups = [x for x in groups if x]
166 groupstr = ','.join(groups) 166 groupstr = ','.join(groups)
167 if opt.platform == 'auto' and groupstr == 'default,platform-' + platform.system().lower(): 167 if opt.platform == 'auto' and groupstr == 'all,-notdefault,platform-' + platform.system().lower():
168 groupstr = None 168 groupstr = None
169 m.config.SetString('manifest.groups', groupstr) 169 m.config.SetString('manifest.groups', groupstr)
170 170