mercurial/help/revsets.txt
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Wed, 14 Oct 2015 02:49:17 +0900
changeset 26633 020b12d591f3
parent 23742 3a4d8a6ce432
child 28986 97811ff79647
permissions -rw-r--r--
dirstate: make functions for backup aware of transaction activity Some comments in this patch assume that subsequent patch changes 'dirstate.write()' like as below: def write(self, repo): if not self._dirty: return tr = repo.currenttransaction() if tr: tr.addfilegenerator('dirstate', (self._filename,), self._writedirstate, location='plain') return # omit actual writing out st = self._opener('dirstate', "w", atomictemp=True) self._writedirstate(st) This patch makes '_savebackup()' write in-memory changes out, and it causes clearing 'self._dirty'. If dirstate isn't changed after '_savebackup()', subsequent 'dirstate.write()' never invokes 'tr.addfilegenerator()' because 'not self._dirty' is true. Then, 'tr.writepending()' unintentionally returns False, if there is no other (e.g. changelog) changes pending, even though dirstate changes are already written out at '_savebackup()'. To avoid such situation, this patch makes '_savebackup()' explicitly invoke 'tr.addfilegenerator()', if transaction is running. '_savebackup()' should get awareness of transaction before 'write()', because the former depends on the behavior of the latter before this patch.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11382
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     1
Mercurial supports a functional language for selecting a set of
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     2
revisions.
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     3
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     4
The language supports a number of predicates which are joined by infix
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     5
operators. Parenthesis can be used for grouping.
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     6
15962
f7c8d6ee6056 revset: simplify help not about quoting
Matt Mackall <mpm@selenic.com>
parents: 14693
diff changeset
     7
Identifiers such as branch names may need quoting with single or
f7c8d6ee6056 revset: simplify help not about quoting
Matt Mackall <mpm@selenic.com>
parents: 14693
diff changeset
     8
double quotes if they contain characters like ``-`` or if they match
f7c8d6ee6056 revset: simplify help not about quoting
Matt Mackall <mpm@selenic.com>
parents: 14693
diff changeset
     9
one of the predefined predicates.
12408
78a97859b90d revset: support raw string literals
Brodie Rao <brodie@bitheap.org>
parents: 11944
diff changeset
    10
78a97859b90d revset: support raw string literals
Brodie Rao <brodie@bitheap.org>
parents: 11944
diff changeset
    11
Special characters can be used in quoted identifiers by escaping them,
78a97859b90d revset: support raw string literals
Brodie Rao <brodie@bitheap.org>
parents: 11944
diff changeset
    12
e.g., ``\n`` is interpreted as a newline. To prevent them from being
78a97859b90d revset: support raw string literals
Brodie Rao <brodie@bitheap.org>
parents: 11944
diff changeset
    13
interpreted, strings can be prefixed with ``r``, e.g. ``r'...'``.
11382
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    14
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    15
There is a single prefix operator:
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    16
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    17
``not x``
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    18
  Changesets not in x. Short form is ``! x``.
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    19
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    20
These are the supported infix operators:
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    21
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    22
``x::y``
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    23
  A DAG range, meaning all changesets that are descendants of x and
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    24
  ancestors of y, including x and y themselves. If the first endpoint
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    25
  is left out, this is equivalent to ``ancestors(y)``, if the second
11450
6bca9801c92a revset: fix spelling typo
Julian Cowley <julian@lava.net>
parents: 11420
diff changeset
    26
  is left out it is equivalent to ``descendants(x)``.
11382
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    27
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    28
  An alternative syntax is ``x..y``.
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    29
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    30
``x:y``
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    31
  All changesets with revision numbers between x and y, both
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    32
  inclusive. Either endpoint can be left out, they default to 0 and
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    33
  tip.
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    34
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    35
``x and y``
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    36
  The intersection of changesets in x and y. Short form is ``x & y``.
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    37
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    38
``x or y``
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    39
  The union of changesets in x and y. There are two alternative short
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    40
  forms: ``x | y`` and ``x + y``.
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    41
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    42
``x - y``
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    43
  Changesets in x but not in y.
14692
0be6dc3d8083 help/revsets: clean up whitespace between paragraphs
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 14098
diff changeset
    44
14070
305c97670d7a revset: add ^ and ~ operators from parentrevspec extension
Kevin Gessner <kevin@kevingessner.com>
parents: 13937
diff changeset
    45
``x^n``
305c97670d7a revset: add ^ and ~ operators from parentrevspec extension
Kevin Gessner <kevin@kevingessner.com>
parents: 13937
diff changeset
    46
  The nth parent of x, n == 0, 1, or 2.
305c97670d7a revset: add ^ and ~ operators from parentrevspec extension
Kevin Gessner <kevin@kevingessner.com>
parents: 13937
diff changeset
    47
  For n == 0, x; for n == 1, the first parent of each changeset in x;
305c97670d7a revset: add ^ and ~ operators from parentrevspec extension
Kevin Gessner <kevin@kevingessner.com>
parents: 13937
diff changeset
    48
  for n == 2, the second parent of changeset in x.
305c97670d7a revset: add ^ and ~ operators from parentrevspec extension
Kevin Gessner <kevin@kevingessner.com>
parents: 13937
diff changeset
    49
305c97670d7a revset: add ^ and ~ operators from parentrevspec extension
Kevin Gessner <kevin@kevingessner.com>
parents: 13937
diff changeset
    50
``x~n``
305c97670d7a revset: add ^ and ~ operators from parentrevspec extension
Kevin Gessner <kevin@kevingessner.com>
parents: 13937
diff changeset
    51
  The nth first ancestor of x; ``x~0`` is x; ``x~3`` is ``x^^^``.
305c97670d7a revset: add ^ and ~ operators from parentrevspec extension
Kevin Gessner <kevin@kevingessner.com>
parents: 13937
diff changeset
    52
305c97670d7a revset: add ^ and ~ operators from parentrevspec extension
Kevin Gessner <kevin@kevingessner.com>
parents: 13937
diff changeset
    53
There is a single postfix operator:
305c97670d7a revset: add ^ and ~ operators from parentrevspec extension
Kevin Gessner <kevin@kevingessner.com>
parents: 13937
diff changeset
    54
305c97670d7a revset: add ^ and ~ operators from parentrevspec extension
Kevin Gessner <kevin@kevingessner.com>
parents: 13937
diff changeset
    55
``x^``
305c97670d7a revset: add ^ and ~ operators from parentrevspec extension
Kevin Gessner <kevin@kevingessner.com>
parents: 13937
diff changeset
    56
  Equivalent to ``x^1``, the first parent of each changeset in x.
305c97670d7a revset: add ^ and ~ operators from parentrevspec extension
Kevin Gessner <kevin@kevingessner.com>
parents: 13937
diff changeset
    57
11382
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    58
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    59
The following predicates are supported:
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    60
12821
165079e564f0 revsets: generate predicate help dynamically
Patrick Mezard <pmezard@gmail.com>
parents: 12808
diff changeset
    61
.. predicatesmarker
11382
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    62
14098
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    63
New predicates (known as "aliases") can be defined, using any combination of
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    64
existing predicates or other aliases. An alias definition looks like::
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    65
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    66
  <alias> = <definition>
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    67
14693
f9c056f48018 help/revsets: revset aliases can be defined on any config file
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 14692
diff changeset
    68
in the ``revsetalias`` section of a Mercurial configuration file. Arguments
f9c056f48018 help/revsets: revset aliases can be defined on any config file
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 14692
diff changeset
    69
of the form `$1`, `$2`, etc. are substituted from the alias into the
f9c056f48018 help/revsets: revset aliases can be defined on any config file
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 14692
diff changeset
    70
definition.
14098
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    71
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    72
For example,
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    73
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    74
::
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    75
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    76
  [revsetalias]
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    77
  h = heads()
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    78
  d($1) = sort($1, date)
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    79
  rs($1, $2) = reverse(sort($1, $2))
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    80
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    81
defines three aliases, ``h``, ``d``, and ``rs``. ``rs(0:tip, author)`` is
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    82
exactly equivalent to ``reverse(sort(0:tip, author))``.
9f5a0acb0056 revset aliases
Alexander Solovyov <alexander@solovyov.net>
parents: 14070
diff changeset
    83
23742
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18469
diff changeset
    84
An infix operator ``##`` can concatenate strings and identifiers into
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18469
diff changeset
    85
one string. For example::
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18469
diff changeset
    86
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18469
diff changeset
    87
  [revsetalias]
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18469
diff changeset
    88
  issue($1) = grep(r'\bissue[ :]?' ## $1 ## r'\b|\bbug\(' ## $1 ## r'\)')
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18469
diff changeset
    89
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18469
diff changeset
    90
``issue(1234)`` is equivalent to ``grep(r'\bissue[ :]?1234\b|\bbug\(1234\)')``
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18469
diff changeset
    91
in this case. This matches against all of "issue 1234", "issue:1234",
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18469
diff changeset
    92
"issue1234" and "bug(1234)".
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18469
diff changeset
    93
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18469
diff changeset
    94
All other prefix, infix and postfix operators have lower priority than
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18469
diff changeset
    95
``##``. For example, ``$1 ## $2~2`` is equivalent to ``($1 ## $2)~2``.
3a4d8a6ce432 revset: introduce new operator "##" to concatenate strings/symbols at runtime
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 18469
diff changeset
    96
11382
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    97
Command line equivalents for :hg:`log`::
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    98
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    99
  -f    ->  ::.
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   100
  -d x  ->  date(x)
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   101
  -k x  ->  keyword(x)
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   102
  -m    ->  merge()
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   103
  -u x  ->  user(x)
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   104
  -b x  ->  branch(x)
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   105
  -P x  ->  !::x
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   106
  -l x  ->  limit(expr, x)
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   107
12659
5aa5cbaf6efc revsets: add descriptions for sample queries in the help
Brodie Rao <brodie@bitheap.org>
parents: 12657
diff changeset
   108
Some sample queries:
5aa5cbaf6efc revsets: add descriptions for sample queries in the help
Brodie Rao <brodie@bitheap.org>
parents: 12657
diff changeset
   109
5aa5cbaf6efc revsets: add descriptions for sample queries in the help
Brodie Rao <brodie@bitheap.org>
parents: 12657
diff changeset
   110
- Changesets on the default branch::
5aa5cbaf6efc revsets: add descriptions for sample queries in the help
Brodie Rao <brodie@bitheap.org>
parents: 12657
diff changeset
   111
12808
74f6531581e8 help: use Windows cmd compatible quoting in revset help
Mads Kiilerich <mads@kiilerich.com>
parents: 12716
diff changeset
   112
    hg log -r "branch(default)"
12659
5aa5cbaf6efc revsets: add descriptions for sample queries in the help
Brodie Rao <brodie@bitheap.org>
parents: 12657
diff changeset
   113
5aa5cbaf6efc revsets: add descriptions for sample queries in the help
Brodie Rao <brodie@bitheap.org>
parents: 12657
diff changeset
   114
- Changesets on the default branch since tag 1.5 (excluding merges)::
5aa5cbaf6efc revsets: add descriptions for sample queries in the help
Brodie Rao <brodie@bitheap.org>
parents: 12657
diff changeset
   115
12808
74f6531581e8 help: use Windows cmd compatible quoting in revset help
Mads Kiilerich <mads@kiilerich.com>
parents: 12716
diff changeset
   116
    hg log -r "branch(default) and 1.5:: and not merge()"
11382
2f09b13e914d help: new revsets topic
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   117
12660
6ed5ae6264c2 revsets: add a sample query to the help for getting active branches
Brodie Rao <brodie@bitheap.org>
parents: 12659
diff changeset
   118
- Open branch heads::
6ed5ae6264c2 revsets: add a sample query to the help for getting active branches
Brodie Rao <brodie@bitheap.org>
parents: 12659
diff changeset
   119
12808
74f6531581e8 help: use Windows cmd compatible quoting in revset help
Mads Kiilerich <mads@kiilerich.com>
parents: 12716
diff changeset
   120
    hg log -r "head() and not closed()"
12660
6ed5ae6264c2 revsets: add a sample query to the help for getting active branches
Brodie Rao <brodie@bitheap.org>
parents: 12659
diff changeset
   121
12659
5aa5cbaf6efc revsets: add descriptions for sample queries in the help
Brodie Rao <brodie@bitheap.org>
parents: 12657
diff changeset
   122
- Changesets between tags 1.3 and 1.5 mentioning "bug" that affect
12667
f5735bb80d77 revsets: fix stray * in help topic
Martin Geisler <mg@lazybytes.net>
parents: 12660
diff changeset
   123
  ``hgext/*``::
12659
5aa5cbaf6efc revsets: add descriptions for sample queries in the help
Brodie Rao <brodie@bitheap.org>
parents: 12657
diff changeset
   124
12808
74f6531581e8 help: use Windows cmd compatible quoting in revset help
Mads Kiilerich <mads@kiilerich.com>
parents: 12716
diff changeset
   125
    hg log -r "1.3::1.5 and keyword(bug) and file('hgext/*')"
12659
5aa5cbaf6efc revsets: add descriptions for sample queries in the help
Brodie Rao <brodie@bitheap.org>
parents: 12657
diff changeset
   126
13937
5f126c01ebfa help/revset: fix grammar
Idan Kamara <idankk86@gmail.com>
parents: 12821
diff changeset
   127
- Changesets committed in May 2008, sorted by user::
12659
5aa5cbaf6efc revsets: add descriptions for sample queries in the help
Brodie Rao <brodie@bitheap.org>
parents: 12657
diff changeset
   128
12808
74f6531581e8 help: use Windows cmd compatible quoting in revset help
Mads Kiilerich <mads@kiilerich.com>
parents: 12716
diff changeset
   129
    hg log -r "sort(date('May 2008'), user)"
12659
5aa5cbaf6efc revsets: add descriptions for sample queries in the help
Brodie Rao <brodie@bitheap.org>
parents: 12657
diff changeset
   130
5aa5cbaf6efc revsets: add descriptions for sample queries in the help
Brodie Rao <brodie@bitheap.org>
parents: 12657
diff changeset
   131
- Changesets mentioning "bug" or "issue" that are not in a tagged
5aa5cbaf6efc revsets: add descriptions for sample queries in the help
Brodie Rao <brodie@bitheap.org>
parents: 12657
diff changeset
   132
  release::
5aa5cbaf6efc revsets: add descriptions for sample queries in the help
Brodie Rao <brodie@bitheap.org>
parents: 12657
diff changeset
   133
18469
ddbe689af784 doc: use "tag" revset predicate instead of "tagged" for example in help
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 15962
diff changeset
   134
    hg log -r "(keyword(bug) or keyword(issue)) and not ancestors(tag())"