Matt Harbison <matt_harbison@yahoo.com> [Sat, 11 Jul 2015 23:26:33 -0400] rev 25811
largefiles: allow the archiving of largefiles to be disabled
There are currently no users of this, but it is a necessary step before
converting extdiff to use archive. It may be useful to add an argument to
extdiff in the future and allow largefiles to be diffed, but archiving
largefiles can have significant overhead and may not be very diffable, so
archiving them by default seems wrong.
It is a mystery to me why the lfstatus attribute needs to be set on the
unfiltered repo. However if it is set on the filtered repo instead (and the
filtered repo is passed to the original command), the lfstatus attribute is
False in the overrides for archival.archive() and hgsubrepo.archive() when
invoking the archive command. This smells like the buggy status behavior (see
67d63ec85eb7, which was reverted in df463ca0adef). Neither the status nor
summary commands have this weird behavior in their respective overrides.
Yuya Nishihara <yuya@tcha.org> [Thu, 16 Jul 2015 23:36:08 +0900] rev 25810
parsers: fix buffer overflow by invalid parent revision read from revlog
If revlog file is corrupted, it can have parent pointing to invalid revision.
So we should validate it before updating nothead[], phases[], seen[], etc.
Otherwise it would cause segfault at best.
We could use "rev" instead of "maxrev" as upper bound, but I think the explicit
"maxrev" can clarify that we just want to avoid possible buffer overflow
vulnerability.
Laurent Charignon <lcharignon@fb.com> [Thu, 16 Jul 2015 11:12:15 -0700] rev 25809
histedit: mark temporary commits as obsolete when allowed to
Before this patch, we were stripping temporary commits at the end of a histedit
whether it was successful or not. If we can create obs markers, we should
create them instead of stripping because it is faster and safer.
Laurent Charignon <lcharignon@fb.com> [Thu, 16 Jul 2015 11:17:37 -0700] rev 25808
histedit: minor refactoring of createmarkers check
We use a variable to store whether or not we can create obsolescence markers.
It makes the patch series more readable as we are going to reuse this
values in other places in the function.
Laurent Charignon <l.charignon@gmail.com> [Wed, 15 Jul 2015 20:39:23 -0700] rev 25807
crecord: fix issue when backgrounding editor would leave artefact
Before this patch:
- if a user was entering a commit message after having ran the curses
interface
- and then uses ctrl-z, followed by fg to put the editor in the
background/foreground
- then the curses interface would leave artefact on the screen of
the editor, making entering the commit message a difficult task
This happened because ncurses registers a signal handler for SIGTSTP and
does not restore the original signal handler after running.
More info at:
http://stackoverflow.com/questions/31440392/
curses-wrapper-messing-up-terminal-after-background-foreground-sequence/
31441709#31441709
This patch restores the original value of the signal handler after
running the curses interface and therefore fixes this issue.
It don't know how to add a test for this issue, I tested the scenario
above manually and it works correctly with the patch.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 17 Jul 2015 00:22:16 +0900] rev 25806
censor: make various path forms available like other Mercurial commands
Before this patch, censored file should be exactly "a path relative to
repository root" regardless of current working directory, because "hg
censor" passes "path" to "repo.file()" directly without any
preparations.
To make various path forms available like other Mercurial commands,
this patch gets a target file path in the way of "hg parents FILE".
Getting "wctx" is relocated to reuse "wctx" for efficiency.
Eugene Baranov <eug.baranov@gmail.com> [Tue, 14 Jul 2015 14:40:56 +0100] rev 25805
convert: use 'default' for specifying branch name in branchmap (issue4753)
A fix for issue2653 with 1d155582a8ea introduced a discrepancy how default
branch should be denoted when converting with branchmap from different SCM.
E.g. for Git and Mercurial you need to use 'default' whilst for Perforce and
SVN you had to use 'None'. This changeset unifies 'default' for such purposes
whilst falling back to 'None' when no 'default' mapping specified.
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Jul 2015 11:54:14 +0900] rev 25804
parser: extract function that tests if next token may start new term
Future patches will separate primary expression and prefix operator actions.
This function will be used to resolve ambiguity of them.
This is a step to remove the old-style revexpr parser. We need both ":" and
":y" operators for backward compatibility.
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Jul 2015 18:09:15 +0900] rev 25803
parser: factor out function that parses right-hand side of prefix/infix ops
These two had common pattern. The significant difference was just a result
expression:
prefix: (op-name, rhs)
infix: (op-name, lhs, rhs)
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Jul 2015 17:50:35 +0900] rev 25802
parser: remove unused parameter 'pos' from _match()
This backs out 9d1cf337a78d. The issue spotted by that changeset was addressed
earlier by d4cafcb63f77.
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Jul 2015 11:17:22 +0900] rev 25801
parser: fill invalid infix and suffix actions by None
This can simplify the expansion of (prefix, infix, suffix) actions.
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Jul 2015 11:06:58 +0900] rev 25800
parser: add comment about structure of elements to each table
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 15 Jul 2015 04:45:58 +0900] rev 25799
shelve: omit incorrect 'commit' suggestion at 'hg shelve -i'
Before this patch, 'hg shelve -i' under non-interactive mode suggests
'use commit instead', and it obviously incorrect, because what user
wants to do isn't 'commit' but 'shelve'.
To omit incorrect 'commit' suggestion at 'hg shelve -i', this patch
specifies 'None' for 'cmdsuggest' argument of 'cmdutil.dorecord()'.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 15 Jul 2015 04:45:58 +0900] rev 25798
record: omit meaningless 'qrefresh' suggestion at 'hg qrefresh -i'
Before this patch, 'hg qrefresh -i' under non-interactive mode
suggests 'use qrefresh instead', and it obviously meaningless.
To omit meaningless 'qrefresh' suggestion at 'hg qrefresh -i', this
patch specifies 'None' for 'cmdsuggest' argument of 'cmdutil.dorecord()'.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 15 Jul 2015 04:45:58 +0900] rev 25797
record: omit meaningless 'qnew' suggestion at 'hg qnew -i'
Before this patch, 'hg qnew -i' under non-interactive mode suggests
'use qnew instead', and it obviously meaningless.
To omit meaningless 'qnew' suggestion at 'hg qnew -i', this patch adds
internal function '_qrecord()' and specifies 'cmdsuggest' for each of
'qrecord' and 'qnew' separately.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 15 Jul 2015 04:45:58 +0900] rev 25796
record: omit meaningless 'commit' suggestion at 'hg commit -i'
Before this patch, 'hg commit -i' under non-interactive mode suggests
'use commit instead', and it obviously meaningless.
This patch makes 'record.record'()' examine 'ui.interactive()' and
show suggestion by itself before calling 'commands.commit()'.
This allows 'commands.commit()' to specify 'None' for 'cmdsuggest'
argument of 'cmdutil.dorecord()' to omit meaningless 'commit'
suggestion at 'hg commit -i'.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 15 Jul 2015 03:43:16 +0900] rev 25795
cmdutil: allow callers of cmdutil.dorecord to omit suggestion
Interactive committing under non-interactive mode shows command
suggestion, but sometimes it is meaningless.
command suggestion usability
------------ ---------- -----------
record commit
commit -i commit meaningless
qrecord qnew
qnew -i qnew meaningless
qrefersh -i qrefresh meaningless
shelve -i commit incorrect
------------ ---------- -----------
This patch allows callers of 'cmdutil.dorecord()' to omit meaningless
suggestion by passing None or so for 'cmdsuggest' argument of it.
This is a preparation for subsequent patches, which fix each
suggestion issues above.
Anton Shestakov <av6@dwimlabs.net> [Sun, 12 Jul 2015 01:51:01 +0800] rev 25794
spartan: don't drop current revision in log/graph links
Just to be consistent with log and shortlog links, graph links should have a
revision context too. And the same goes for the graph page, where it's log and
shortlog links that should have context.
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:37:14 -0500] rev 25793
hgk: tweak doc format for path option
This lets the config checker see it.
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:36:46 -0500] rev 25792
acl: mark deprecated config option
This option has been undocumented since day 0.
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:35:57 -0500] rev 25791
gpg: mention undocumented options
Matt Mackall <mpm@selenic.com> [Thu, 25 Jun 2015 17:34:53 -0500] rev 25790
check-config: add config option checker
This script scans files for lines that look like either ui.config
usage or config variable documentation. It then ensures:
- ui.config calls for each option agree on types and defaults
- every option appears to be mentioned in documentation
It doesn't complain about devel/experimental options and allows
marking options that are not intended to be public.
Since we haven't been able to come up with a good scheme for
documenting config options at point of use, this will help close the
loop of making sure all options that should be documented are.
Matt Mackall <mpm@selenic.com> [Tue, 14 Jul 2015 18:50:20 -0500] rev 25789
bookmarks: clear active bookmark on non-linear update
Eugene Baranov <eug.baranov@gmail.com> [Tue, 14 Jul 2015 16:23:57 +0100] rev 25788
convert: unescape Perforce-escaped special characters in filenames
Durham Goode <durham@fb.com> [Mon, 13 Jul 2015 21:37:46 -0700] rev 25787
convert: allow customizing git remote prefix
Previously all git remotes were created as "remote/foo". This patch adds a
configuration option for deciding what the prefix should be. This is useful if
you want the bookmarks to be "origin/foo" like they are in git, or if you're
integrating with the remotenames extension and don't want the local remote/foo
bookmarks to overlap with the remote foo bookmarks.
Yuya Nishihara <yuya@tcha.org> [Sun, 12 Jul 2015 17:59:25 +0900] rev 25786
help: rewrite template examples to not use shell escaping
Though they work fine even on cmd.exe, these examples could lead to misguided
understanding about the template syntax.
Yuya Nishihara <yuya@tcha.org> [Sat, 20 Jun 2015 18:24:11 +0900] rev 25785
templater: unify "string" and "rawstring"
"rawstring" was introduced by 5ab28a2e9962, but it's no longer necessary
because c1975809a6b5 and fd5bc660c9f0 changed the way of processing string
literals.
This patch moves string decoding to the parsing phase as it was before:
('rawstring', s) -> ('string', s)
('string', s) -> ('string', s.decode('string-escape'))
Yuya Nishihara <yuya@tcha.org> [Sun, 21 Jun 2015 13:28:21 +0900] rev 25784
templater: remove processing of "string" literals from tokenizer
They are processed as "template" strings now.
Yuya Nishihara <yuya@tcha.org> [Mon, 15 Jun 2015 23:11:35 +0900] rev 25783
templater: introduce one-pass parsing of nested template strings
Instead of re-parsing quoted strings as templates, the tokenizer can delegate
the parsing of nested template strings to the parser. It has two benefits:
1. syntax errors can be reported with absolute positions
2. nested template can use quotes just like shell: "{"{rev}"}"
It doesn't sound nice that the tokenizer recurses into the parser. We could
instead make the tokenize itself recursive, but it would be much more
complicated because we would have to adjust binding strengths carefully and
put dummy infix operators to concatenate template fragments.
Now "string" token without r"" never appears. It will be removed by the next
patch.
Yuya Nishihara <yuya@tcha.org> [Mon, 15 Jun 2015 23:03:30 +0900] rev 25782
templater: check existence of closing brace of template string