Siddharth Agarwal <sid0@fb.com> [Tue, 10 Mar 2015 13:06:38 -0700] rev 24260
cmdutil.tryimportone: allow importing relative patches with --bypass
Siddharth Agarwal <sid0@fb.com> [Mon, 09 Mar 2015 18:22:24 -0700] rev 24259
cmdutil.tryimportone: allow importing relative patches into the working dir
This makes hg import --prefix dir/ (without bypass) work.
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Mar 2015 22:56:19 -0800] rev 24258
commands.import: accept a prefix option
The --prefix option is meant to be relative to the root rather than the current
working directory. This is for consistency with the rest of 'hg import' --
paths in patches are otherwise considered to be relative to the root.
In upcoming patches we'll hook this option up to the patch functions.
--exact with --prefix is currently disallowed because I can't really come up
with sensible semantics for it, especially when only part of the patch is
preserved.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 10 Mar 2015 11:01:10 -0700] rev 24257
test: make version based test-extensions failure more explanatory
A buggy __version__ content (usually from setup.py's hg being unable to read the
repo) can make this test fails in an obscure manner. We make the root of the
failure more explicit.
Mathias De Maré <mathias.demare@gmail.com> [Mon, 09 Mar 2015 22:14:09 +0100] rev 24256
subrepo: add status support for ignored and clean files in git subrepos
Mike Edgar <adgar@google.com> [Wed, 14 Jan 2015 15:16:08 -0500] rev 24255
revlog: addgroup checks if incoming deltas add censored revs, sets flag bit
A censored revision stored in a revlog should have the censored revlog index
flag bit set. This implies we must know if a revision is censored before we
add it to the revlog. When adding revisions from exchanged deltas, we would
prefer to determine this flag without decoding every single full text.
This change introduces a heuristic based on assumptions around the Mercurial
delta format and filelog metadata. Since deltas which produce a censored
revision must be full-replacement deltas, we can read the delta's first bytes
to check the filelog metadata. Since "censored" is the alphabetically first
filelog metadata key, censored filelog revisions have a well-known prefix we
can look for.
For more on the design and background of the censorship feature, see:
http://mercurial.selenic.com/wiki/CensorPlan
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Mar 2015 22:43:47 -0800] rev 24254
patch.internalpatch: accept a prefix parameter
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Mar 2015 22:27:41 -0800] rev 24253
patch.patchbackend: accept a prefix parameter
Mike Edgar <adgar@google.com> [Tue, 10 Mar 2015 16:25:10 -0400] rev 24252
repair: define explicit local variable, don't reuse a comprehension variable
The node ID used in strip bundle names is currently taken as the last
iterated value in a list comprehension found much earlier in the function.
This change makes the node selection more explicit at the cost of redundancy.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 07 Feb 2015 12:49:30 -0800] rev 24251
commands.paths: use ui.paths to show paths
We now have an API for representing a collection of paths. Use it.
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 07 Feb 2015 12:42:10 -0800] rev 24250
ui: represent paths as classes
Many have long wanted for paths to have expanded functionality and
flexibility.
In order to make that transition possible, we need to start
representing paths as something more than simple strings.
This patch introduces two classes:
1) "path" for representing a single path instance
2) "paths" for representing a collection of "paths"
Since we don't like patches that introduce new code without any
consumers, we convert ui.expandpath() to use the new APIs internally.
Upcoming patches will start exposing "path" instances to consumers
that currently interface with string paths.
The new "paths" attribute of ui is populated from config data the first
time it is accessed. Since it isn't updated when the configs are
modified, this could lead to some inaccurate caching behavior. It
shouldn't be an issue, as paths information is typically not accessed
until command dispatch, which occurs after the repository config
and extensions have been loaded. Time will tell if we need to refresh
paths information when the underlying config changes.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Tue, 10 Mar 2015 13:40:14 -0400] rev 24249
color: omit terminfo/win32 warning if non-interactive (
issue4543)
It's pretty annoying to be getting this warning when already the
colour extension has no hope of working. If there isn't a human on the
other end to to see the colours, there probably isn't a human either
who cares about this warning. More likely, some script somewhere is
gonna get confused with the warning output.
Of course, if we still want to see the warning for some reason, we can
always set --config ui.interactive=True.
Yuya Nishihara <yuya@tcha.org> [Thu, 26 Feb 2015 20:54:05 +0900] rev 24248
incoming: hide help about use of --bundle option by default
Pulling from incoming bundle can cause trouble such as missing phase movement,
bookmarks and largefiles transfer. Average user won't need this option.
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Mar 2015 22:24:49 -0800] rev 24247
patch.applydiff: accept a prefix parameter
This is preparation for upcoming patches that will add support for applying a
patch within a subdirectory.
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Mar 2015 22:22:14 -0800] rev 24246
patch._applydiff: accept a prefix parameter
This is preparation for upcoming patches that will add support for applying a
patch within a subdirectory.
We normalize the prefix here because this is the main driver -- all code to
apply patches is expected to go through here.
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Mar 2015 22:19:26 -0800] rev 24245
patch.makepatchmeta: accept a prefix parameter
This is preparation for upcoming patches that will add support for applying a
patch within a subdirectory.
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Mar 2015 22:17:24 -0800] rev 24244
patch.pathtransform: add a prefix parameter
This is preparation for upcoming patches that will add support for applying a
patch within a subdirectory.
The prefix is applied after path components are stripped.
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Mar 2015 21:48:40 -0800] rev 24243
patch.pathtransform: add doctests
In upcoming patches we're going to make this function more complex, so add some
unit tests for it.
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Mar 2015 21:12:30 -0800] rev 24242
patch: rename pathstrip to pathtransform
In upcoming patches we'll not just strip path components but also add new ones.
Yuya Nishihara <yuya@tcha.org> [Wed, 18 Feb 2015 23:17:52 +0900] rev 24241
templatekw: forward _hybrid.get to raw values so that get(extras, key) works
ef78450c8df6 implies that the primary goal is to allow "{get(extras, key)}",
but it didn't work.
I'm not sure if _hybrid should forward all unknown attributes to values, so
only "get" is forwarded for now.
Yuya Nishihara <yuya@tcha.org> [Wed, 18 Feb 2015 23:01:33 +0900] rev 24240
templater: implement _hybrid.__contains__ so that ifcontains can accept dict
d8fb835376d1 is fine for "{revset()}", but "i.values()[0]" does not work if
each item has more than one values such as "{bookmarks}".
This fixes the problem by using list.__contains__ or dict.__contains__
appropriately.
Yuya Nishihara <yuya@tcha.org> [Sun, 08 Mar 2015 14:46:42 +0900] rev 24239
templatekw: keep raw list or dict in _hybrid object
This will allow us to handle bookmarks, extras and copies properly in
"ifcontains()" and "get()".
Yuya Nishihara <yuya@tcha.org> [Sun, 08 Mar 2015 14:38:50 +0900] rev 24238
templatekw: give name to lambda that constructs variables map of templater
The constructed list is useless for "ifcontains()" and "get()". Instead,
makemap() and raw dict will be passed to _hybrid object.
Yuya Nishihara <yuya@tcha.org> [Sun, 08 Mar 2015 14:17:35 +0900] rev 24237
templatekw: convert list of key/value pairs to sortdict
These sortdict objects will be passed to _hybrid later, which will allow
us to handle them by "ifcontains()" and "get()" as expected.
Yuya Nishihara <yuya@tcha.org> [Wed, 18 Feb 2015 22:53:53 +0900] rev 24236
sortdict: have update() accept either dict or iterable of key/value pairs
Future patches will make the templater store a sorted dict in the _hybrid object.
sortdict should be constructed from a sorted list.
Laurent Charignon <lcharignon@fb.com> [Fri, 06 Mar 2015 15:57:43 -0800] rev 24235
record: allow editing new files (
issue4304)
While using the record extension to select changes, the user couldn't see the
content of newly added files and had to select/reject them based on filename.
The test is changed accordingly in two places.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 05 Mar 2015 14:42:25 -0800] rev 24234
localrepo: back out changeset
b08af8f0ac01
Running the tags function filtered will lead to different results with different
filter levels. This seems too dangerous to be done blindly as
b08af8f0ac01 did.
Tristan Seligmann <mithrandi@debian.org> [Mon, 09 Mar 2015 12:32:29 -0400] rev 24233
test-shelve: be more lenient about whitespace (
issue4124)
When running on a slower systems (eg. MIPS buildd), the age of the
shelf can be 10 seconds or more, resulting in the output alignment
changing and thus a test failure. This patch makes the spacing be
matched more leniently.
Anton Shestakov <engored@ya.ru> [Mon, 09 Mar 2015 14:32:17 +0800] rev 24232
histedit: use better meta-variable names than VALUE in help text
Before this change hg help histedit would use the default variable label:
--commands VALUE
...
-r --rev VALUE [+]
With this change the text will be in the usual help text style and a bit more
explanatory:
--commands FILE
...
-r --rev REV [+]
Anton Shestakov <engored@ya.ru> [Mon, 09 Mar 2015 14:10:42 +0800] rev 24231
histedit: tweak --commands help text
The rest of help messages for command arguments are simple phrases without any
ending punctuation, so having this text be a complete sentence didn't really
fit.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 25 Jan 2015 02:45:49 -0500] rev 24230
largefiles: report the source of copied/moved largefiles in status -C
Previously, the source was silently skipped because the largefile was in the
list of changed files, but the standin was in the copies dictionary. The source
is only displayed if the changed file is a key in the copies dictionary.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 08 Mar 2015 00:04:03 -0500] rev 24229
test-commit-amend: add globs for Windows
Augie Fackler <augie@google.com> [Fri, 30 Jan 2015 21:30:40 -0800] rev 24228
lazymanifest: use a binary search to do an insertion
This makes insertions log(n) plus some memmove() overhead, rather than
doing an append followed by an n*log(n) sort. There's probably a lot
of performance to be gained by adding a batch-add method, which could
be smarter about the memmove()s performed.
Includes a couple of extra tests that should help prevent bugs.
Thanks to Martin for some significant pre-mail cleanup of this change.
Augie Fackler <augie@google.com> [Mon, 17 Nov 2014 00:00:25 -0500] rev 24227
context: don't sort manifest entries
The manifest iterator is now pre-sorted, so we can skip this check.
Augie Fackler <augie@google.com> [Fri, 06 Mar 2015 21:29:47 -0500] rev 24226
manifest: use custom C implementation of lazymanifest
This version is actually lazy, unlike the pure-python version. The
latter could stand to be optimized if anyone actually wants to use it
seriously. I put no work into it.
Before any of my related changes on mozilla-central:
perfmanifest tip
! wall 0.268805 comb 0.260000 user 0.260000 sys 0.000000 (best of 37)
perftags
! result: 162
! wall 0.007099 comb 0.000000 user 0.000000 sys 0.000000 (best of 401)
perfstatus
! wall 0.415680 comb 0.420000 user 0.260000 sys 0.160000 (best of 24)
hgperf export tip
! wall 0.142118 comb 0.140000 user 0.140000 sys 0.000000 (best of 67)
after all of my changes on mozilla-central:
./hg:
perfmanifest tip
! wall 0.232640 comb 0.230000 user 0.220000 sys 0.010000 (best of 43)
perftags
! result: 162
! wall 0.007057 comb 0.010000 user 0.000000 sys 0.010000 (best of 395)
perfstatus
! wall 0.415503 comb 0.420000 user 0.280000 sys 0.140000 (best of 24)
hgperf export tip
! wall 0.025096 comb 0.030000 user 0.030000 sys 0.000000 (best of 102)
so it's no real change in performance on perf{manifest,tags,status},
but is a huge win on 'hgperf export tip'.
There's a little performance work that could still be done here:
fastdelta() could be done significantly more intelligently by using
the internal state of the lazymanifest type in C, but that seems like
good future work.
Augie Fackler <augie@google.com> [Sat, 07 Mar 2015 12:04:39 -0500] rev 24225
manifest: split manifestdict into high-level and low-level logic
The low-level logic type (_lazymanifest) matches the behavior of the C
implementation introduced in
a5f1bccd. A future patch will use that
when available.
Augie Fackler <augie@google.com> [Sat, 07 Mar 2015 11:43:12 -0500] rev 24224
manifest: do parsing inside manifestdict contstructor
This shape to the code will make using a C implementation of the
manifest storage easier.
Augie Fackler <augie@google.com> [Sat, 07 Mar 2015 11:42:05 -0500] rev 24223
manifest: move parsing functions up in file
These functions are about to change signature and be hidden inside the
manifestdict constructor. Doing the code motion now as an isolated
change to make things easier to review.
Augie Fackler <augie@google.com> [Tue, 10 Feb 2015 15:59:12 -0500] rev 24222
dispatch: offer suggestions of similar-named commands
When suggestions are available, we show those suggestions instead of
showing some help output.
Augie Fackler <augie@google.com> [Mon, 26 Jan 2015 15:43:13 -0500] rev 24221
dispatch: offer near-edit-distance suggestions for {file,rev}set functions
Before this patch, when I have a brain fart and type `hg log -r
'add(foo)'`, hg exits and just says add isn't a function, leading me
to the help page for revset to figure out how to spell the
function. With this patch, it suggests 'adds' as a function I might
have meant.
Augie Fackler <augie@google.com> [Mon, 26 Jan 2015 15:52:46 -0500] rev 24220
test-revset: add tests for missing function output
An upcoming change will slightly alter behavior here. Adding the test
now so the output change stands out in the later changeset.
Augie Fackler <augie@google.com> [Mon, 26 Jan 2015 14:32:30 -0500] rev 24219
revset: use UnknownIdentifier where appropriate
Augie Fackler <augie@google.com> [Mon, 26 Jan 2015 14:31:48 -0500] rev 24218
fileset: use UnknownIdentifier where appropriate
Augie Fackler <augie@google.com> [Mon, 26 Jan 2015 14:31:01 -0500] rev 24217
error: add a new UnknownIdentifier error type
This will be used by the revset and fileset code to communicate more
specific errors to higher levels so that we might be able to offer
suggestions about what function might have been similar.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Mon, 24 Nov 2014 16:42:49 -0500] rev 24216
log: display closing-branch nodes as "_" (BC)
In plain `hg log` there is no indication that a commit closes a
branch. You can use hg log --debug, but this is too verbose. A simple
idea copied from thg and other graphical viewers is to display the
node for a closing-branch commit as a horizontal line.
I think this technically is a BC if we consider the graphlog to be
part of the stdout API, but I really can't imagine who the hell is
parsing the graphlog to determine information about commits.
Matt Mackall <mpm@selenic.com> [Fri, 06 Mar 2015 17:00:42 -0600] rev 24215
manifest: move pure parsing code out of pure
This lets us transition more smoothly.
Augie Fackler <augie@google.com> [Tue, 13 Jan 2015 14:31:38 -0800] rev 24214
manifest.c: new extension code to lazily parse manifests
This lets us iterate manifests in order, but do a _lot_ less work in
the common case when we only care about a few manifest entries.
Many thanks to Mike Edgar for reviewing this in advance of it going
out to the list, which caught many things I missed.
This version of the patch includes C89 fixes from Sean Farley and
many correctness/efficiency cleanups from Martin von
Zweigbergk. Thanks to both!
Durham Goode <durham@fb.com> [Thu, 05 Mar 2015 22:16:28 -0800] rev 24213
workingctx: use normal dirs() instead of dirstate.dirs()
The workingctx class was using dirstate.dirs() as it's implementation. The
sparse extension maintains a pruned down version of the dirstate, so this
resulted in the workingctx reporting an incorrect listing of directories
during merge calculations (it was detecting directory renames when it
shouldn't have).
The fix is to use the default implementation, which uses workingctx._manifest,
which unions the manifest with the dirstate to produce the correct overall
picture. This also produces more accurate output since it will no longer
return directories that have been entirely deleted in the dirstate.
Tests will be added to the sparse extension to detect regressions for this.