sapling/mercurial
David Soria Parra 0e29dd10bc revset: lookup descendents for negative arguments to ancestor operator
Negative offsets to the `~` operator now search for descendents. The search is
aborted when a node has more than one child as we do not have a definition for
'nth child'. Optionally we can introduce such a notion and take the nth child
ordered by rev number.

The current revset language does provides a short operator for ancestor lookup
but not for descendents. This gives user a simple revset to move to the previous
changeset, e.g. `hg up '.~1'` but not to the 'next' changeset. With this change
userse can now use `.~-1` as a shortcut to move to the next changeset.
This fits better into allowing users to specify revisions via revsets and
avoiding the need for special `hg next` and `hg prev` operations.

The alternative to negative offsets is adding a new operator. We do not have
many operators in ascii left that do not require bash escaping (',', '_', and
'/' come to mind). If we decide that we should add a more convenient short
operator such as ('/', e.g. './1') we can later add it and allow ascendents
lookup via negative numbers.
2017-05-27 10:25:09 -07:00
..
cext cext: mark constant variables 2017-05-21 13:41:01 +09:00
cffi cffi: remove superfluous "if True" blocks 2017-05-02 21:45:10 +09:00
default.d mergetools.rc: find OSX FileMerge in the new location inside Xcode 4.3 2015-10-16 11:37:34 +02:00
help revset: lookup descendents for negative arguments to ancestor operator 2017-05-27 10:25:09 -07:00
hgweb help: pass commands module by argument 2017-05-21 16:57:32 +09:00
httpclient httpclient: update to 54868ef054d2 of httpplus 2016-06-27 11:53:50 -04:00
pure cffi: split modules from pure 2017-05-02 21:15:31 +09:00
templates hgweb: change text of followlines links to "older / newer" 2017-04-24 10:48:07 +02:00
__init__.py loader: pywatchman appears to already be py3 compatible 2017-05-28 15:45:47 -04:00
ancestor.py cleanup: use set literals 2017-02-10 16:56:29 -08:00
archival.py py3: remove use of *L syntax 2016-09-01 02:29:46 +05:30
bdiff.c bdiff: split bdiff into cpy-aware and cpy-agnostic part 2016-07-13 10:46:26 +02:00
bdiff.h bdiff: split bdiff into cpy-aware and cpy-agnostic part 2016-07-13 10:46:26 +02:00
bitmanipulation.h bitmanipulation: add missing include of string.h 2017-06-02 10:32:39 -07:00
bookmarks.py localrepo: extract bookmarkheads method to bookmarks.py 2017-05-18 16:43:56 -04:00
branchmap.py branchmap: remove use of buffer() to support Python 2.6 2017-05-13 11:58:08 -07:00
bundle2.py obsolete: invalidate "volatile" set cache after merging marker 2017-05-17 15:39:37 +02:00
bundlerepo.py bundlerepo: fix raw handling in revision() 2017-04-06 17:45:47 -07:00
byterange.py pycompat: switch to util.urlreq/util.urlerr for py3 compat 2016-04-06 23:22:12 +00:00
changegroup.py changegroup: store old heads as a set 2017-03-23 19:54:59 -07:00
changelog.py revlog: make 'storedeltachains' a "public" attribute 2016-10-14 02:25:08 +02:00
chgserver.py pager: set some environment variables if they're not set 2017-04-13 08:27:19 -07:00
cmdutil.py export: map wctx.node() to 'ff...' node id (issue5438) 2017-06-03 19:17:19 +09:00
color.py color: enable ANSI support on Windows 10 2017-05-22 22:20:38 -04:00
commands.py annotate: restructure formatter output to be nested list (BC) 2017-06-03 00:25:24 +09:00
commandserver.py commandserver: move printbanner logic to bindsocket 2017-04-30 11:21:05 -07:00
compat.h compat: define ssize_t as int on 32bit Windows, silences C4142 warning 2016-07-15 23:54:56 +09:00
config.py config: make config.items() return a copy 2017-05-18 13:38:37 -07:00
context.py merge with stable 2017-06-03 16:33:28 -04:00
copies.py py3: use dict.update() instead of constructing lists and adding them 2017-06-01 01:14:02 +05:30
crecord.py crecord: avoid setting non-existing SIGTSTP signal on windows (issue5512) 2017-04-06 11:28:25 +02:00
dagparser.py error: get Abort from 'error' instead of 'util' 2015-10-08 12:55:45 -07:00
dagutil.py dagutil: use absolute_import 2015-08-08 19:04:09 -07:00
debugcommands.py debugbundle: add --part-type flag to emit only named part types 2017-06-05 16:19:41 -07:00
destutil.py update: show the commit to which we updated in case of multiple heads (BC) 2017-06-06 22:17:39 +05:30
dirstate.py dirstate: add docstring for invalidate 2017-06-04 16:08:50 -07:00
dirstateguard.py dirstateguard: move to new module so I can break some layering violations 2016-11-21 21:29:32 -05:00
discovery.py checkheads: simplify the code around obsolescence post-processing 2017-05-29 05:23:30 +02:00
dispatch.py dispatch: do not close stdout and stderr, just flush() instead 2017-04-23 00:31:29 +09:00
dummycert.pem
encoding.py encoding: make sure "wide" variable never be referenced from other modules 2017-05-29 21:57:51 +09:00
error.py py3: implement __bytes__() on most of our exception classes 2017-06-01 22:43:24 +09:00
exchange.py merge with stable 2017-06-03 16:33:28 -04:00
exewrapper.c exewrapper: add .dll to LoadLibrary() argument 2016-04-27 09:23:39 -07:00
extensions.py profiling: allow loading profiling extension before everything else 2017-05-22 01:17:49 -07:00
fancyopts.py cleanup: use set literals 2017-02-10 16:56:29 -08:00
filelog.py filelog: fix parsemeta docstring 2017-05-02 22:39:14 -07:00
filemerge.py filemerge: optionally strip quotes from merge marker template (BC) 2017-02-25 19:36:02 +09:00
fileset.py py3: use pycompat.bytestr so that we don't get ascii values 2017-05-29 16:21:15 +05:30
formatter.py formatter: add nullformatter 2017-05-27 17:44:26 +09:00
graphmod.py py3: use list of bytes rather than bytestring while extending bytes into lists 2017-05-04 04:38:20 +05:30
hbisect.py bisect: move check_state into the bisect module 2016-08-24 04:25:20 +02:00
help.py help: convert flag default to bytes portably 2017-05-28 15:49:29 -04:00
hg.py local-clone: also copy tags related caches 2017-05-25 12:09:09 +02:00
hook.py py3: convert exception to bytes to pass into ui.warn() 2017-06-02 10:35:21 +05:30
httpconnection.py httpconnection: allow a global auth.cookiefile config entry 2017-03-09 22:35:10 -08:00
httppeer.py httppeer: unify hint message for PeerTransportError 2017-05-01 05:52:36 +09:00
i18n.py i18n: make the locale directory name the same string type as the datapath 2016-10-08 05:26:18 -04:00
keepalive.py keepalive: set buffering=True to do more efficient reads of headers 2017-06-02 14:08:26 -07:00
localrepo.py revlog: skeleton support for version 2 revlogs 2017-05-19 20:29:11 -07:00
lock.py lock: avoid unintentional lock acquisition at failure of readlock 2017-05-01 19:59:13 +09:00
lsprof.py lsprof: use print function 2016-01-02 11:40:53 -08:00
lsprofcalltree.py lsprofcalltree: use print function 2016-01-02 11:45:29 -08:00
mail.py mail: handle renamed email.Header 2016-10-07 17:30:11 +02:00
manifest.py cleanup: rename all iteritems methods to items and add iteritems alias 2017-05-29 00:00:02 -04:00
match.py match: simplify nevermatcher 2017-06-01 08:31:21 -07:00
mdiff.py mdiff: add a hunkinrange helper function 2017-04-01 12:24:59 +02:00
merge.py merge: use scmutil.intrev() to sort ctx objects 2017-06-03 19:01:19 +09:00
mergeutil.py checkunresolved: move to new package to help avoid import cycles 2016-11-21 21:31:45 -05:00
minirst.py minirst: look for column delimiters using slices instead of indicies 2017-05-28 15:47:43 -04:00
mpatch.c internals: move the bitmanipulation routines into its own file 2016-06-06 13:08:13 +02:00
mpatch.h mpatch: raise MemoryError instead of mpatchError if lalloc() failed 2016-08-07 10:06:56 +09:00
namespaces.py cleanup: rename all iteritems methods to items and add iteritems alias 2017-05-29 00:00:02 -04:00
node.py revlog: add support for partial matching of wdir node id 2016-08-19 18:26:04 +09:00
obsolete.py obsstore: move _version to a propertycache 2017-06-04 08:49:15 -07:00
parser.py parser: preserve order of keyword arguments 2017-04-09 11:58:27 +09:00
patch.py record: update help message to use operation instead of "record" (issue5432) 2017-04-24 17:13:24 +02:00
pathutil.py util: rename checkcase() to fscasesensitive() (API) 2016-08-30 09:22:53 -07:00
peer.py py3: convert to next() function 2016-05-16 21:30:53 +00:00
phases.py phases: emit phases to pushkey protocol in deterministic order 2017-04-13 22:12:04 -07:00
policy.py policy: remove unused policynoc and policynocffi constants 2017-05-02 21:45:48 +09:00
posix.py checklink: degrade gracefully on posix when fs is readonly (issue5511) 2017-05-21 18:36:28 -04:00
profiling.py profiling: allow loading profiling extension before everything else 2017-05-22 01:17:49 -07:00
progress.py progress: retry ferr.flush() and .write() on EINTR (issue5532) 2017-04-13 22:31:17 +09:00
pushkey.py pushkey: use absolute_import 2015-08-08 19:57:27 -07:00
pvec.py base85: proxy through util module 2017-04-26 21:56:47 +09:00
pycompat.py py3: convert __doc__ back to bytes in help.py 2017-06-01 22:24:15 +09:00
rcutil.py pager: use less as a fallback on Unix 2017-04-28 20:51:14 +09:00
registrar.py templater: add support for keyword arguments 2017-04-03 21:22:39 +09:00
repair.py strip: do not include obsolescence markers for the temporary bundle 2017-06-01 12:08:49 +02:00
repoview.py hidden: remove unnecessary guard condition 2017-05-30 13:16:32 -07:00
revlog.py revlog: skeleton support for version 2 revlogs 2017-05-19 20:29:11 -07:00
revset.py revset: lookup descendents for negative arguments to ancestor operator 2017-05-27 10:25:09 -07:00
revsetlang.py revsetlang: add a getboolean helper function 2017-04-15 11:26:09 +02:00
scmposix.py pager: use less as a fallback on Unix 2017-04-28 20:51:14 +09:00
scmutil.py revlog: map rev(wdirid) to WdirUnsupported exception 2016-08-20 22:37:58 +09:00
scmwindows.py pager: use less as a fallback on Unix 2017-04-28 20:51:14 +09:00
server.py py3: simply use b'%d\n' to format pid in server.py 2017-06-01 23:05:29 +09:00
setdiscovery.py cleanup: use set literals 2017-02-10 16:56:29 -08:00
similar.py similar: remove caching from the module level 2017-01-13 11:42:36 -08:00
simplemerge.py simplemerge: move conflict warning message to filemerge 2015-10-09 13:54:52 -07:00
smartset.py py3: use raw strings while accessing class.__dict__ 2017-04-28 01:13:07 +05:30
sshpeer.py sshpeer: try harder to snag stderr when stdout closes unexpectedly 2017-04-13 16:09:40 -04:00
sshserver.py wireproto: compress data from a generator 2016-10-16 11:10:21 -07:00
sslutil.py sslutil: reference fingerprints config option properly (issue5559) 2017-05-08 09:30:26 -07:00
statichttprepo.py manifest: make manifestlog a storecache 2016-10-18 17:33:39 -07:00
statprof.py statprof: require input file 2017-01-18 22:45:07 -08:00
store.py store: py26 compat, don't use a dict comprehension 2016-10-09 12:58:22 +02:00
streamclone.py clone: warn when streaming was requested but couldn't be performed 2017-05-08 20:01:06 -07:00
subrepo.py cat: add formatter support 2017-05-25 21:53:44 +09:00
tagmerge.py tagmerge: use 'wvfs' instead of 'wfile' 2017-03-15 00:28:58 -07:00
tags.py track-tags: write all tag changes to a file 2017-03-28 10:15:02 +02:00
templatefilters.py templatefilters: fix crash by string formatting of '{x|splitlines}' 2017-04-15 10:51:17 +09:00
templatekw.py scmutil: introduce binnode(ctx) as paired function with intrev(ctx) 2017-06-03 19:12:01 +09:00
templater.py templatekw: have showlist() take mapping dict with no **kwargs expansion (API) 2017-04-05 21:47:34 +09:00
transaction.py transaction: delete callbacks after use 2017-05-26 13:27:21 -07:00
treediscovery.py error: get Abort from 'error' instead of 'util' 2015-10-08 12:55:45 -07:00
txnutil.py
ui.py pager: drop the support for 'pager.enable=<bool>' 2017-05-02 17:18:13 +02:00
unionrepo.py revlog: add 'raw' argument to revision and _addrevision 2017-01-05 17:16:07 +00:00
upgrade.py upgrade: register all format variants in a list 2017-04-12 16:48:13 +02:00
url.py url: support auth.cookiesfile for adding cookies to HTTP requests 2017-03-09 22:40:52 -08:00
util.py merge with stable 2017-06-03 16:33:28 -04:00
verify.py verify: add a config option to skip certain flag processors 2017-05-14 09:38:06 -07:00
vfs.py osutil: proxy through util (and platform) modules (API) 2017-04-26 22:26:28 +09:00
win32.py win32: drop a py26 daemonizing hack 2017-05-21 18:58:51 -04:00
windows.py windows: do not close stdout on flush() failure 2017-06-05 23:36:35 +09:00
wireproto.py wireproto: properly report server Abort during 'getbundle' 2017-02-10 18:20:58 +01:00
worker.py py3: pass str in os.sysconf() 2017-05-31 23:42:58 +05:30