FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 15 Aug 2014 20:28:51 +0900] rev 22194
largefiles: put whole "hgmerge" process into the same "wlock" scope
Before this patch, there are two distinct "wlock" scopes below in
"hgmerge":
1. "merge.update" via original "hg.merge" function
2. "updatelfiles" specific "wlock" scope (to synchronize largefile
dirstate)
But these should be executed in the same "wlock" scope for
consistency, because users of "hg.merge" don't get "wlock" explicitly
before invocation of it.
- merge in commands
This patch puts almost all of the original "hgmerge" implementation into
"_hgmerge" to reduce changes.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 15 Aug 2014 20:28:51 +0900] rev 22193
largefiles: put whole "hgupdaterepo" process into the same "wlock" scope
Before this patch, there are two distinct "wlock" scopes below in
"hgupdaterepo":
1. "merge.update" via original "hg.updaterepo" function
2. "updatelfiles" specific "wlock" scope (to synchronize largefile
dirstate)
In addition to them, "dirstate.walk" is executed between these "wlock"
scopes.
But these should be executed in the same "wlock" scope for
consistency, because many (indirect) users of "hg.updaterepo" don't
get "wlock" explicitly before invocation of it.
"hg.clean" is invoked without "wlock" from:
- mqrepo.restore in mq
- bisect in commands
- update in commands
"hg.update" is invoked without "wlock" from:
- clone in mq
- pullrebase in rebase
- postincoming in commands (used in "hg pull -u", "hg unbundle")
- update in commands
This patch puts almost all original "hgupdaterepo" implementation into
"_hgupdaterepo" to reduce changes.
Yuya Nishihara <yuya@tcha.org> [Fri, 15 Aug 2014 14:33:19 +0900] rev 22192
annotate: inline definition of decorate() functions
Yuya Nishihara <yuya@tcha.org> [Fri, 15 Aug 2014 14:29:30 +0900] rev 22191
annotate: rewrite long short-circuit statement by if-elif-else
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 17:27:18 +0100] rev 22190
revert: use modified information from both statuses
Using status information against the target ensures we are catching all
files with modifications that need reverting.
We still need to distinguish fresh modifications for backup purpose.
test-largefile is affected because it reverted a file that needs no content
change.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 16:57:16 +0100] rev 22189
revert: drop special case handling for file unknown in parent
We had a special case for file not caught by any categories. It was
aimed at files missing in wc and wc's parent but existing in the target
revision. This is now properly handled using status information.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 16:53:22 +0100] rev 22188
revert: use "remove" information from both statuses
Using status information against the target to make sure we are catching all
files that need to be re-added.
We still need to distinguish fresh removal because they use a different
message.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 01 Aug 2014 18:27:47 -0700] rev 22187
revert: process removed files missing in target as clean
If a file does not exist in target and is marked as removed in the dirstate, we
can mark it as clean. There are no changes needed to revert it.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 31 Jul 2014 15:52:56 -0700] rev 22186
revert: also track clean files
Tracking clean files is the simplest way to be able to reports files that need
no changes. So we explicitly retrieve them.
This fixes a couple of test outputs where the lack of changes was not reported.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 01 Aug 2014 18:57:53 -0700] rev 22185
revert: triage "deleted" files into more appropriate categories
Status can return file as "deleted". This is only a special case
related to working directory state: file is recorded as tracked but no
file exists on disk. This will never be a state obtainable from
manifest comparisons.
"Deleted" files have another working directory status shadowed by the lack of
file. They will -alway- be touched by revert. The "lack of file" can be seen as
a modification. The file will never match the same "content" as in the revert
target. From there we have two options:
1. The file exists in the target and can be seen as "modified".
2. The file does not exist in the target and can be seen as "added".
So now we just dispatch elements from delete into appropriate categories.
Matt Mackall <mpm@selenic.com> [Fri, 15 Aug 2014 10:54:15 -0500] rev 22184
unshelve: silence internal revert
This prepares for upcoming revert changes.
Matt Mackall <mpm@selenic.com> [Fri, 15 Aug 2014 10:47:03 -0500] rev 22183
tests: fixup issue markers to make check-commit happy
Mads Kiilerich <madski@unity3d.com> [Fri, 15 Aug 2014 03:24:40 +0200] rev 22182
incoming: don't request heads that already are common
Pull would send a getbundle command where common heads were sent both as common
and head, even though there is no reason to request a common head.
The request was thus twice as big as necessary and more likely to hit HTTP
header size limits.
Instead, don't request heads that already are common.
This is fixed in bundlerepo.getremotechanges . It could perhaps also have been
fixed in discovery.findcommonincoming but that would have a bigger impact.
Mads Kiilerich <madski@unity3d.com> [Fri, 15 Aug 2014 03:24:40 +0200] rev 22181
tests: improve test coverage for discovery and actual parameters for pulling
Mads Kiilerich <madski@unity3d.com> [Fri, 15 Aug 2014 02:46:44 +0200] rev 22180
changectx: ancestor should only prefer merge.preferancestor if it is a revision
The value '*' currently designates that bid merge should be used. The best
way to test bid merge is to set preferancestor=* in the configuration file ...
but then it would abort with unknown revision '*' when other code paths ended
up in changectx.ancestor .
Instead, just skip and ignore the value '*' when looking for a preferred
ancestor.
Mads Kiilerich <madski@unity3d.com> [Fri, 15 Aug 2014 02:39:01 +0200] rev 22179
merge: show the scary multiple ancestor hint for merges only, not for updates
Updates with uncommited changes will always only have one ancestor - the parent
revision. Updates between existing revision should (and will) always give the
same result no matter which ancestor is used. The warning is thus only relevant
when doing a "real" merge.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 14 Aug 2014 16:26:41 -0700] rev 22178
discovery: prevent crash on unknown remote heads with old repo (issue4337)
When a remote is not capable of the `branchmap` wireproto command, we denote
incoming heads with None. This leads to a crash in the code in charge of
displaying the list of unknown remote heads.
We now properly detect this case and display a shorter message in this case.
The reason for this `set([None])` value is now documented.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 14 Aug 2014 14:59:42 -0700] rev 22177
obsstore.create: add a simple safeguard against cyclic markers
We detect when there is a cycle in the marker itself (precursors being listed
as successors).
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 14 Aug 2014 14:57:03 -0700] rev 22176
debugobsolete: catch ValueError that may be raised by obsstore.create
There are already a couple of errors that obsstore.create can raise and we are
going to introduce a cycle check too.
Matt Mackall <mpm@selenic.com> [Thu, 14 Aug 2014 16:39:27 -0500] rev 22175
check-code: extend try/except/finally check for multiple except clauses
Matt Mackall <mpm@selenic.com> [Thu, 14 Aug 2014 16:39:02 -0500] rev 22174
repoview: fix try/except/finally for py2.4
Matt Mackall <mpm@selenic.com> [Thu, 14 Aug 2014 16:25:47 -0500] rev 22173
merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 14 Aug 2014 16:18:45 -0500] rev 22172
test-run-tests: fix up slash/backslash on diff chunks for Windows
Siddharth Agarwal <sid0@fb.com> [Wed, 13 Aug 2014 15:55:45 -0700] rev 22171
test-largefiles: add test for hg log --follow --patch with path
This was the one case for test-largefiles that was not broken.
Siddharth Agarwal <sid0@fb.com> [Wed, 13 Aug 2014 15:51:33 -0700] rev 22170
largefiles: don't override matchandpats for always matchers (issue4334)
This makes hg log --follow --patch work, since in cmdutil._makelogrevset we
use the non-follow matcher for hg log --follow --patch with no file arguments.
Siddharth Agarwal <sid0@fb.com> [Wed, 13 Aug 2014 15:18:41 -0700] rev 22169
largefiles: in overridelog, use non-lf matcher for patch generation (issue4334)
This has actually been broken since at least Mercurial 2.8 -- hg log --patch
with largefiles only used to work when no largefiles existed. Rev 5809d62e7106
exposed this bug for all cases.
Siddharth Agarwal <sid0@fb.com> [Wed, 13 Aug 2014 15:13:50 -0700] rev 22168
largefiles: drop setting lfstatus in overridelog (issue4334)
lfstatus should only be True for operations where we want standins to be
printed out. We explicitly do not want that for historical operations like log.
Other historical operations like hg diff -r A -r B don't print out standins
either.
This is required to fix issue4334, but doesn't fix anything by itself. That's
why there aren't any tests accompanying this patch.
Siddharth Agarwal <sid0@fb.com> [Wed, 13 Aug 2014 15:17:03 -0700] rev 22167
cmdutil: add a hook for making custom non-follow log file matchers
This will be used by largefiles (and basically only by largefiles) in an
upcoming patch.
Siddharth Agarwal <sid0@fb.com> [Wed, 13 Aug 2014 15:15:13 -0700] rev 22166
cmdutil: rename _makelogfilematcher to _makefollowlogfilematcher
We're going to add a _makenofollowlogfilematcher in an upcoming patch.
Matt Mackall <mpm@selenic.com> [Thu, 14 Aug 2014 15:21:48 -0500] rev 22165
merge with stable
Yuya Nishihara <yuya@tcha.org> [Wed, 13 Aug 2014 22:22:24 +0900] rev 22164
alias: exit from bad definition by Abort
Yuya Nishihara <yuya@tcha.org> [Wed, 13 Aug 2014 22:18:28 +0900] rev 22163
alias: show one-line hint for command provided by disabled extension
It will be a hint of Abort exception. "hg help <alias>" provides the detailed
version as before.
Yuya Nishihara <yuya@tcha.org> [Wed, 13 Aug 2014 19:38:47 +0900] rev 22162
help: provide help of bad alias without executing aliascmd()
The output is slightly changed because of minirst formatting. Previously,
ui.pushbuffer() had no effect because "badalias" message was written to stderr.
"if not unknowncmd" should no longer be needed because there's no call loop.
Yuya Nishihara <yuya@tcha.org> [Wed, 13 Aug 2014 19:28:42 +0900] rev 22161
alias: provide "unknowncmd" flag to tell help to look for disabled command
This patch prepares for breaking the call loop: help.help_() -> cmdalias() ->
commands.help_() -> help.help_().
Yuya Nishihara <yuya@tcha.org> [Sat, 17 May 2014 21:13:31 +0900] rev 22160
alias: keep error message in "badalias" so that help can see it
Upcoming patches will
- change help_() to get badalias message without executing cmdalias()
- raise Abort on bad alias
Yuya Nishihara <yuya@tcha.org> [Sat, 17 May 2014 20:47:31 +0900] rev 22159
alias: add test for alias command provided by disabled extension
This should complete cases where "badalias" is set.
Siddharth Agarwal <sid0@fb.com> [Wed, 13 Aug 2014 23:21:52 -0700] rev 22158
alias: expand "$@" as list of parameters quoted individually (BC) (issue4200)
Before this patch, there was no way to pass in all the positional parameters as
separate words down to another command.
(1) $@ (without quotes) would expand to all the parameters separated by a space.
This would work fine for arguments without spaces, but arguments with spaces
in them would be split up by POSIX shells into separate words.
(2) '$@' (in single quotes) would expand to all the parameters within a pair of
single quotes. POSIX shells would then treat the entire list of arguments
as one word.
(3) "$@" (in double quotes) would expand similarly to (2).
With this patch, we expand "$@" (in double quotes) as all positional
parameters, quoted individually with util.shellquote, and separated by spaces.
Under standard field-splitting conditions, POSIX shells will tokenize each
argument into exactly one word.
This is a backwards-incompatible change, but the old behavior was arguably a
bug: Bourne-derived shells have expanded "$@" as a tokenized list of positional
parameters for a very long time. I could find this behavior specified in IEEE
Std 1003.1-2001, and this probably goes back to much further before that.
Siddharth Agarwal <sid0@fb.com> [Wed, 13 Aug 2014 22:37:09 -0700] rev 22157
test-alias: add some tests to ensure we aren't double-substituting
An earlier iteration of an upcoming patch caused inadvertent
double substitution. Ensure we have test coverage for this.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 31 Jul 2014 16:03:26 -0700] rev 22156
revert: issue "no changes needed" message for files missing on both side
When a file was marked as removed in the working copy and did not existed in the
target of the revert, we did not issued any message pointing that no change was
needed to the file (implicitly saying that revert had changed the file).
We now properly issue a message in this situation. Tests change in and handful
of case where the message was documented as missing.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 15:47:12 +0100] rev 22155
revert: call status against revert target too
We now call status against the target (and possibly against the working
directory parent is different). We do not use the information from the two
sources yet, but this is coming soon.
We need the status information aganst the dirstate in all case because we need
to be able to backup local modification.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 15:35:43 +0100] rev 22154
revert: prefix variable names for dirstate status with "ds"
As we are going to introduce status again other revision we needs to distinguish
between data from dirstate status and the other one. We prefix the existing data
with "ds" to highlight this.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 15:28:22 +0100] rev 22153
revert: move manifest membership condition outside of the loop
Currently, revset is using information from dirstate status and alter its
behavior whenever the file exist in the target manifest or not. This tests are
done a big for loop. We move this member ship testing outside of the loop and
simplifies associates data structure.
This is a step toward a cleaner implementation of revert based on status.
Mike Edgar <adgar@google.com> [Wed, 06 Aug 2014 16:51:41 -0400] rev 22152
histedit: add "roll" command to fold commit data and drop message (issue4256)
This new histedit command (short for "rollup") is a variant of "fold" akin to
"hg amend" for working copy: it accumulates changes without interrupting
the user and asking for an updated commit message.
David Soria Parra <davidsp@fb.com> [Tue, 12 Aug 2014 09:39:14 -0700] rev 22151
repoview: cache hidden changesets
Use the introduced caching infrastructure to cache hidden
changesets. We crosscheck if the content of the cache unless
experimental.verifyhiddencache is set to False. This will be removed
in the future. Without crosschecking the caches speed ups hg status and
other commands:
without caching:
$ time hg status
hg status 0.72s user 0.20s system 100% cpu 0.917 total
with caching
$ time hg status
hg status 0.49s user 0.15s system 100% cpu 0.645 total
David Soria Parra <davidsp@fb.com> [Tue, 12 Aug 2014 16:48:54 -0700] rev 22150
repoview: add caching bits
Add a caching infrastructure to cache hidden changesets. The cache tries to read
the cache lazily and falls back to recomputing if no wlock can be obtain.
To validate the cache we store a sha of the obstore content and repo heads in
the beginning of the cache which we check every request.
David Soria Parra <davidsp@fb.com> [Wed, 06 Aug 2014 13:26:04 -0700] rev 22149
repoview: split _gethiddenblockers
Split up _gethiddenblockers into two categories: (1) "static' blockers
that solely rely on the contents of obstore and are visible children of
hidden changsets. (2) "dynamic" blockers, appearing by having wd parents,
bookmarks or tags pointing to hidden changesets.
We assume that (1) doesn't change often and can be easily cached with a good
invalidation strategy. (2) change often, but barely produce blockers, so we
can recompute them if necessary.
David Soria Parra <davidsp@fb.com> [Tue, 12 Aug 2014 16:42:24 -0700] rev 22148
repoview: use set for blockers
Blockers should be unique but tags and bookmarks could point to the same rev,
therefore use a set to ensure that we don't have duplicates.
Martin von Zweigbergk <martinvonz@gmail.com> [Wed, 13 Aug 2014 11:50:13 -0700] rev 22147
histedit: preserve initial author on fold (issue4296)
When the authorship of the changeset folded in does not match that of
the base changeset, we currently use the configured ui.username
instead. This is especially surprising when the user is not the author
of either of the changesets. In such cases, the resulting authorship
(the user's) is clearly incorrect. Even when the user is folding in a
patch they authored themselves, it's not clear whether they should
take over the authorship. Let's instead keep it simple and always
preserve the base changeset's authorship. This is also how
"git rebase -i" handles folding/squashing.
Matt Mackall <mpm@selenic.com> [Wed, 13 Aug 2014 18:50:35 -0500] rev 22146
run-tests: fix some io ordering
backported from default
Matt Mackall <mpm@selenic.com> [Wed, 13 Aug 2014 15:06:58 -0500] rev 22145
merge with stable
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 17:40:41 +0100] rev 22144
test-revert: add case where file is tracked but deleted in working directory
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:25:19 +0200] rev 22143
test-revert: add case with untracked files with unique content
This test highlights similar misbehavior as its parent changesets.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:23:45 +0200] rev 22142
test-revert: add case with untracked files with reverted content
This test highlights similar misbehaviors as its parent changesets.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:10:45 +0200] rev 22141
test-revert: add case where file exists but is untracked in working directory
This test highlights a small misbehavior in output when reverting to another
revision not including the untracked file.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:09:46 +0200] rev 22140
test-revert: add case where the file is marked as removed in the wc
Unlike untracked, the file is also missing from the working directory.
This test highlights a small misbehavior in output when reverting to another
revision.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:08:16 +0200] rev 22139
test-revert: add case where wc content is different from "base" and "parent"
This test highlights a case where backups are not created and the user may
lose data.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:07:33 +0200] rev 22138
test-revert: add case where wc content is already reverted to base content
This test highlights multiple misbehaviors of revert. We augment the test
comments accordingly.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:02:09 +0200] rev 22137
test-revert: add case where file exists neither in "base" nor in "parent"
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:01:16 +0200] rev 22136
test-revert: add case where the file is removed between "base" and "parent"
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:00:49 +0200] rev 22135
test-revert: add case where file is unchanged between "base" and "parent"
This test highlights a minor misbehavior in the message displayed
during an explicit revert with a target revision.
Matt Mackall <mpm@selenic.com> [Wed, 13 Aug 2014 14:05:08 -0500] rev 22134
test-run-tests: fix stdout/stderr io ordering
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 17:37:13 +0100] rev 22133
test-revert: add case where file is added between "base" and "parent"
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 17:22:57 -0500] rev 22132
merge with stable
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 17:31:53 +0100] rev 22131
test-revert: add methodical revert to "base" with explicit file path
We now also test reverting file to another revision's content. However
this differs from previously introduced test by using the explicit path
of each "case file" when calling revert. This should result in the
same result regarding file content and backup creation, but the output
of the `hg revert` call should differ.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 17:22:47 +0100] rev 22130
test-revert: add methodical revert with explicit file path
We now also test reverting file to the working directory parent
content. However this differs from the previously introduced test by using
the explicit path of each "case file" when calling revert. This should
result in the same result regarding file content and backup creation,
but the output of the `hg revert` call should differ.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 17:16:05 +0100] rev 22129
test-revert: add methodical revert to "base"
We now also test reverting s file to the content of another revision. This is
still done using the `--all` flag.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 17:03:55 +0100] rev 22128
test-revert: add methodical revert to parent for working directory
Now that we can automatically generate states, we need to actually run
revert on them and check the result. While running such tests we are
checking multiple elements. The output of the `hg revert` command, the
resulting content of file, and the creation of backup file.
The first practical test is using the simple case `hg revert --all`, reverting
all files to working directory parent content.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 17:24:18 +0100] rev 22127
test-revert: display the list of all generated cases
This will help to track all existing cases.
(still very simple now)
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 16:08:09 +0200] rev 22126
test-revert: also create a text version of the snapshot
The text version is just a list of existing files with their content. We use a
small custom script for that.
This is going to be very useful for comparing revert results with
revert target content.
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 12:53:23 -0500] rev 22125
hg-test-mode: make exit code highlight work again
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 16:37:06 +0100] rev 22124
test-revert: prepare methodical testing of revert cases
We introduce a script to generate revert cases and use it to prepare a test
repo. See the inline documentation for details.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 15:59:21 +0100] rev 22123
test-revert: drop useless comments
There are multiple comments explaining the expected output of commands. This is
an old relic of the pre-unified test era. We remove them for uselessness.
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 11:17:29 -0500] rev 22122
run-tests: don't double lines on build failure output
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 11:10:57 -0500] rev 22121
test-run-tests: filter pwd alias for Windows
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 11:02:30 -0500] rev 22120
run-tests: self-test on Windows needs binary streams
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 04:50:58 -0500] rev 22119
merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 04:11:32 -0500] rev 22118
help: normalize helplist hints
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 04:00:42 -0500] rev 22117
help: fold repeatable option message into option table header
This will hopefully conserve some limited user attention.
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 03:53:33 -0500] rev 22116
help: roll option list header into option formatter
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 03:42:09 -0500] rev 22115
help: refactor helplist optlist mess
No output changes
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 03:25:51 -0500] rev 22114
help: normalize topic and extension verbose hints
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 03:18:50 -0500] rev 22113
help: normalize hint about enabling extensions
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 03:12:24 -0500] rev 22112
help: normalize extension shadow hint
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 03:09:26 -0500] rev 22111
help: improve command summary hint
This adds our normal hint parentheses, corrects the command syntax
(consider config), and corrects the fullness of help you'll get.
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 03:01:37 -0500] rev 22110
help: tweak --verbose command help hint
We used to have two slightly different message which people wouldn't read...
and then complain that they couldn't find the global options or examples.
So we unify them into one message that's upfront that STUFF IS
INTENTIONALLY HIDDEN and that looks more like our normal hint style.
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 00:42:05 -0500] rev 22109
hg-test-mode: don't highlight variables in output
This was disabling highlighting the rest of the line for $REASONS.
Instead, we only highlight when we think we're on a 'command' line.
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 00:40:24 -0500] rev 22108
test-run-tests: test --view
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 00:33:48 -0500] rev 22107
run-tests: don't show 'i' for tests that don't match a keyword
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 02:40:42 -0500] rev 22106
repoview: filter tags to non-existent nodes from blockers (issue4328)
Michael O'Connor <mkoconnor@gmail.com> [Mon, 11 Aug 2014 23:45:08 -0400] rev 22105
revset: bookmark revset interprets 'literal:' prefix correctly (issue4329)
Matt Mackall <mpm@selenic.com> [Mon, 11 Aug 2014 17:45:50 -0500] rev 22104
run-tests: attempt to fix iolock handling
Ideally, when using -j and -i together, when a prompt comes up, we'd
like all other output to wait (but testing to continue!). This gets
other output to wait by adding back a bunch of the locking that
formerly existed. We switch to a recursive lock to deal with the
restructuring due to unittest compatibility.
Running tests continue to run, but now the scheduler doesn't schedule
any new tasks while waiting at a prompt because no task slots become
available due to result output happening in the thread and
blocking on the iolock.
Matt Mackall <mpm@selenic.com> [Mon, 11 Aug 2014 13:10:00 -0500] rev 22103
unbundle: fix pyflakes warning about wc
Matt Mackall <mpm@selenic.com> [Mon, 11 Aug 2014 11:24:05 -0500] rev 22102
merge with stable
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 02 Aug 2014 17:04:53 -0700] rev 22101
check-code: allow an escape pattern to be specified for testpattern
Before this patch it was impossible to introduce a #no-xxx comment to disable a
test pattern warning.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 02 Aug 2014 17:01:55 -0700] rev 22100
check-code: capture "wc" as a word
Otherwise entries such as "wcchange" give false negative
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 15:58:05 +0100] rev 22099
test-revert: improve comment
We highlight the behavior tested by each sections. (This is a gratuitous
improvement before significant upgrade of the test and massive refactoring of
the revert code)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 11 Aug 2014 22:29:43 +0900] rev 22098
largefiles: synchronize lfdirstate with dirstate after automated committing
Before this patch, after successful "hg rebase" of the revision
removing largefiles, "hg status" may still show ""R" for such
largefiles unexpectedly.
"lfilesrepo.commit" executes the special code path for automated
committing while rebase/transplant, and lfdirstate entries for removed
files aren't updated in this code path, even after successful
committing.
Then, "R" entries still existing in lfdirstate cause unexpected "hg
status" output.
This patch synchronizes lfdirstate with dirstate after automated
committing.
This patch passes False as "normallookup" to "synclfdirstate", because
modified files in "files()" of the recent (= just committed) context
should be "normal"-ed.
This is a temporary way to fix with less changes. For fundamental
resolution of this kind of problems in the future, lfdirstate should
be updated with dirstate simultaneously. Hooking "markcommitted" of
ctx in "localrepository.commitctx" may achieve this.
This problem occurs, only when (1) the parent of the working directory
is rebased and (2) it removes largefiles, because:
- if the parent of the working directory isn't rebased, returning to
the initial revision (= update) after rebase hides this problem
- files added on "other" branch (= rebase target) are treated not as
"added" but as "modified" (= "normal" status and "unset"
timestamp) at merging
This patch tests also the status of added largefile, but it is only
for avoiding regression.
In addition to conditions above, "hg status" must not take existing
files to reproduce this problem, because existing files make
"match._files" not empty in "lfilesrepo.status" code path below:
def sfindirstate(f):
sf = lfutil.standin(f)
dirstate = self.dirstate
return sf in dirstate or sf in dirstate.dirs()
match._files = [f for f in match._files
if sfindirstate(f)]
Not empty "match._files" prevents "status" on lfdirstate from
returning the result containing problematic "R" files.
This is reason why "large1" (removed) and "largeX" (added) are checked
separately in this patch.
Problematic code path in "lfilesrepo.commit" is used also by "hg
transplant", but this problem doesn't occur at "hg transplant",
because invocation of "updatelfiles" after transplant-ing in
"overridetransplant" causes cleaning lfdirstate up.
This patch tests also "hg transplant" as same as "hg rebase", but it
is only for avoiding regression.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 11 Aug 2014 22:29:43 +0900] rev 22097
largefiles: drop orphan entries from lfdristat at "hg rollback"
Before this patch, newly added (but not yet committed) largefiles
aren't treated as unknown ("?") after "hg rollback".
After "hg rollback", lfdirstate still contains "A" status entries for
such largefiles, even though corresponding entries for standins are
already dropped from dirstate.
Such "orphan" entries in lfdirstate prevent unknown (large)files in
the working directory from being listed up in "unknown" list. The code
path in "if working" route of "lfilesrepo.status" below drops
largefiles tracked in lfdirstate from "unknown" list:
lfiles = set(lfdirstate._map)
# Unknown files
result[4] = set(result[4]).difference(lfiles)
This patch drops orphan entries from lfdristate at "hg rollback".
This is a temporary way to fix with less changes. For fundamental
resolution of this kind of problems in the future, lfdirstate should
be rollback-ed as a part of transaction, as same as dirstate.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 11 Aug 2014 22:29:43 +0900] rev 22096
largefiles: restore R status of removed largefiles correctly at "hg rollback"
Before this patch, removed or forgotten largefiles aren't treated as
removed ("R") after "hg rollback". Removed ones are treated as missing
("!") and forgotten ones are treated as clean ("C") unexpectedly.
"overriderollback" uses "normallookup" to restore status in lfdirstate
for largefiles other than ones not added in rollback-ed revision, but
this isn't correct for removed (or forgotten) largefiles.
This patch uses "lfutil.synclfdirstate" to restore "R" status of
removed (or forgotten) largefiles correctly at "hg rollback".
This is a temporary way to fix with less changes. For fundamental
resolution of this kind of problems in the future, lfdirstate should
be rollback-ed as a part of transaction, as same as dirstate.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 11 Aug 2014 22:29:43 +0900] rev 22095
largefiles: factor out synchronization of lfdirstate for future use
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 11 Aug 2014 22:29:43 +0900] rev 22094
largefiles: put whole rollback-ing process into the same "wlock" scope
Before this patch, there are three distinct "wlock" scopes in
"overriderollback":
1. "localrepository.rollback" via original "rollback" command,
2. "merge.update" for reverting standin files only, and
3. "overriderollback" specific "wlock" scope (to synchronize
largefile dirstate)
But these should be executed in the same "wlock" scope for
consistency.
Matt Mackall <mpm@selenic.com> [Mon, 11 Aug 2014 09:35:24 -0500] rev 22093
tests: use a decorator for hghave checks
Matt Mackall <mpm@selenic.com> [Sun, 10 Aug 2014 23:13:12 -0500] rev 22092
hg-test-mode: colorize HGFOO and TESTFOO environment variables
Matt Mackall <mpm@selenic.com> [Sun, 10 Aug 2014 23:09:23 -0500] rev 22091
unbundle: don't advance bookmarks (issue4322) (BC)
This behavior didn't make much sense and interacts badly with things
that use unbundle internally like shelve. Presumably, the original
rationale was that since bundles didn't contain bookmarks, this gave a
sense of keeping bookmarks up-to-date like would happen with a
corresponding pull. However, since it only updated the current active
bookmark, and bare update already did that anyway, this is pretty
slim.
Notably, the corresponding test actually works better without this
feature.
Matt Mackall <mpm@selenic.com> [Sun, 10 Aug 2014 15:26:33 -0500] rev 22090
merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 10 Aug 2014 15:26:12 -0500] rev 22089
tests: more bundle2 non-binary file test fixes
Matt Mackall <mpm@selenic.com> [Sun, 10 Aug 2014 14:30:30 -0500] rev 22088
merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 10 Aug 2014 13:53:36 -0500] rev 22087
hgweb: avoid config object race with hgwebdir (issue4326)
Turns out hgwebdir passes full repo objects to each hgweb request
instance, but with a shared baseui. We explicitly break the sharing.
Matt Mackall <mpm@selenic.com> [Sat, 09 Aug 2014 16:15:52 -0500] rev 22086
test-commandserver.py: filter path separator
Was failing on Windows:
-bundle.mainreporoot=$TESTTMP/repo
+bundle.mainreporoot=$TESTTMP\repo
Matt Mackall <mpm@selenic.com> [Sat, 09 Aug 2014 16:06:01 -0500] rev 22085
merge with stable
Matt Mackall <mpm@selenic.com> [Sat, 09 Aug 2014 16:05:03 -0500] rev 22084
merge with i18n
Matt Mackall <mpm@selenic.com> [Sat, 09 Aug 2014 16:04:36 -0500] rev 22083
i18n-ru: fix RST breakage spotted by test-gendoc
test-gendoc complained:
% extracting documentation from ru
checking for parse errors
+ gendoc-ru.txt:5686: (WARNING/2) Field list ends without a blank
line; unexpected unindent.
+ gendoc-ru.txt:8327: (WARNING/2) Definition list ends without a
blank line; unexpected unindent.
Matt Mackall <mpm@selenic.com> [Sat, 09 Aug 2014 15:46:54 -0500] rev 22082
i18n-ru: undo fix buildbot breakage
Buildbot complained:
$ python check-translation.py *.po
+ ru.po:9576:fatal(promptchoice): number of choices differs between
msgid and msgstr
+ [1]
Prompt text was obviously wrong.. because it didn't include a prompt.
Matt Mackall <mpm@selenic.com> [Fri, 08 Aug 2014 17:45:36 -0500] rev 22081
contrib: add emacs mode for *.t files
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 Aug 2014 14:11:36 -0700] rev 22080
phase: attach phase to the transaction instead of the lock
The phase cache file is no longer written on lock release, it is now handled by
the transaction (as changesets and obsolescence markers are).
(Hooray)
As we stop relying on the lock to write phase, repos with no existing phase
information will need to wait for a phase move or a strip to happen in order to
get the first write in the `phaseroots` file. This explain the change in
test-inherit-mode.t.
This should not have any side effects but in very obscure cases where
people interact with pre-2.1 and post-2.1 versions of Mercurial on the
same repo while having MQ patches applied but the MQ extension
disabled from time to time. A case unlikely enough to not be worth
preserving the old behavior with awful hacks.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 Aug 2014 14:41:00 -0700] rev 22079
phase: extract the phaseroots serialization in a dedicated method
In most case, the file creation logic will be handled by the
transaction itself. The write method has to stay around for the case
where the repository is modified outside a transaction (strip).
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 Aug 2014 14:40:02 -0700] rev 22078
transaction: add a file generation mechanism
A new `transaction.addfilegenerator` function is added. It allows external code
to register files to be generated. See inline documentation for details.
It is important to gather all file creation logic on the transaction
as at some point we'll want to mimic the "pre-transaction-commit"
logic that we use for revlog. I'm refering to the logic that lets
hooks see the result of the transaction before it actually gets
committed.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 Aug 2014 10:54:17 -0700] rev 22077
transaction: backup file in a dedicated "namespace"
File backup may conflict with other "journal.*" file. We add a fixed part in the
backup name file to prevent it.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 Aug 2014 11:56:32 -0700] rev 22076
transaction: use `self.journal` to create backup file
Transaction journal name is "journal" in most case, but it can be something else.
We use the appropriate attribute to create the file.
Sean Farley <sean.michael.farley@gmail.com> [Tue, 17 Jun 2014 20:55:06 -0700] rev 22075
memctx: add note about p2