1175 """ |
1175 """ |
1176 # i18n: "modifies" is a keyword |
1176 # i18n: "modifies" is a keyword |
1177 pat = getstring(x, _("modifies requires a pattern")) |
1177 pat = getstring(x, _("modifies requires a pattern")) |
1178 return checkstatus(repo, subset, pat, 0) |
1178 return checkstatus(repo, subset, pat, 0) |
1179 |
1179 |
|
1180 def named(repo, subset, x): |
|
1181 """``named(namespace)`` |
|
1182 The changesets in a given namespace. |
|
1183 |
|
1184 If `namespace` starts with `re:`, the remainder of the string is treated as |
|
1185 a regular expression. To match a namespace that actually starts with `re:`, |
|
1186 use the prefix `literal:`. |
|
1187 """ |
|
1188 # i18n: "named" is a keyword |
|
1189 args = getargs(x, 1, 1, _('named requires a namespace argument')) |
|
1190 |
|
1191 ns = getstring(args[0], |
|
1192 # i18n: "named" is a keyword |
|
1193 _('the argument to named must be a string')) |
|
1194 kind, pattern, matcher = _stringmatcher(ns) |
|
1195 namespaces = set() |
|
1196 if kind == 'literal': |
|
1197 if pattern not in repo.names: |
|
1198 raise util.Abort(_("namespace '%s' does not exist") % ns) |
|
1199 namespaces.add(repo.names[pattern]) |
|
1200 else: |
|
1201 for name, ns in repo.names.iteritems(): |
|
1202 if matcher(name): |
|
1203 namespaces.add(ns) |
|
1204 if not namespaces: |
|
1205 raise util.Abort(_("no namespace exists that match '%s'") |
|
1206 % pattern) |
|
1207 |
|
1208 names = set() |
|
1209 for ns in namespaces: |
|
1210 for name in ns.listnames(repo): |
|
1211 names.update(ns.nodes(repo, name)) |
|
1212 |
|
1213 names -= set([node.nullrev]) |
|
1214 return subset & names |
|
1215 |
1180 def node_(repo, subset, x): |
1216 def node_(repo, subset, x): |
1181 """``id(string)`` |
1217 """``id(string)`` |
1182 Revision non-ambiguously specified by the given hex string prefix. |
1218 Revision non-ambiguously specified by the given hex string prefix. |
1183 """ |
1219 """ |
1184 # i18n: "id" is a keyword |
1220 # i18n: "id" is a keyword |
1815 "_matchfiles": _matchfiles, |
1851 "_matchfiles": _matchfiles, |
1816 "max": maxrev, |
1852 "max": maxrev, |
1817 "merge": merge, |
1853 "merge": merge, |
1818 "min": minrev, |
1854 "min": minrev, |
1819 "modifies": modifies, |
1855 "modifies": modifies, |
|
1856 "named": named, |
1820 "obsolete": obsolete, |
1857 "obsolete": obsolete, |
1821 "only": only, |
1858 "only": only, |
1822 "origin": origin, |
1859 "origin": origin, |
1823 "outgoing": outgoing, |
1860 "outgoing": outgoing, |
1824 "p1": p1, |
1861 "p1": p1, |