Martin von Zweigbergk <martinvonz@google.com> [Fri, 27 Feb 2015 14:02:30 -0800] rev 24185
copies: replace _nonoverlap() by calls to manifestdict.filesnotin()
Now that we have manifestdict.filesnotin(), we can write _nonoverlap()
in terms of that method instead, enabling future speedups when
filesnotin() gets optimized, and perhaps making the code a little
clearer at the same time.
Martin von Zweigbergk <martinvonz@google.com> [Fri, 27 Feb 2015 13:57:37 -0800] rev 24184
copies: move code into new manifestdict.filesnotin() method
copies._computeforwardmissing() finds files in one context that is not
in the other. Let's move this code into a new method on manifestdict,
so m1.filesnotin(m2) can be optimized for various types of manifests
(we expect more types of manifests soon).
Matt Harbison <matt_harbison@yahoo.com> [Fri, 27 Feb 2015 23:30:42 -0500] rev 24183
subrepo: warn when adding already tracked files in gitsubrepo
This follows normal Mercurial rules, and the message is lifted from
workingctx.add(). The file is printed with abs() to be consistent with how it
is printed in workingctx, even though that is inconsistent with how added files
are printed in verbose mode. Further, the 'already tracked' notifications come
after all of the files that are added are printed, like in Mercurial.
As a side effect, we now have the reject list to return to the caller, so that
'hg add' exits with the proper code. It looks like an abort occurs if git fails
to add the file. Prior to touching 'snake.python' in the test, this was the
result of attempting to add the file after a 'git rm':
fatal: pathspec 'snake.python' did not match any files
abort: git add error 128 in s (in subrepo s)
I'm not sure what happens when git is a deep subrepo, but the 'in s' and
'in subrepo s' from @annotatesubrepoerror are redundant here. Maybe we should
stat the files before invoking git to catch this case and print out the prettier
hg message? The other thing missing from workingctx.add() is the call to
scmutil.checkportable(), but that would need to borrow the parent's ui object.
Matt Harbison <matt_harbison@yahoo.com> [Thu, 26 Feb 2015 15:53:54 -0500] rev 24182
subrepo: don't exclude files in .hgignore when adding to git
The previous test gave a false success because only an hg-ignored pattern was
specified. Therefore match.files() was empty, and it fell back to the files
unknown to git. The simplest fix is to always consider what is unknown to git,
as well as anything specified explicitly. Files that are ignored by git can
only be introduced by an explicit mention in match.files().
Mads Kiilerich <madski@unity3d.com> [Wed, 14 Jan 2015 01:15:26 +0100] rev 24181
dirstate: clarify comment about leaving normal files undef if changed 'now'
Clarify that they only are saved as undef if they were marked as normal and
changed in the same second.
Mads Kiilerich <madski@unity3d.com> [Sun, 18 Jan 2015 02:38:57 +0100] rev 24180
spelling: fixes from proofreading of spell checker issues
Mads Kiilerich <madski@unity3d.com> [Fri, 27 Feb 2015 21:42:58 +0100] rev 24179
merge-tools: configuration for Beyond Compare on OS X
Based on the Linux configuration entry.
Mads Kiilerich <madski@unity3d.com> [Wed, 21 Jan 2015 00:02:17 +0100] rev 24178
convert: when converting from monotone, use the number 1 for close in extras
Monotone used '1' for close while core Mercurial use 1. Now, for consistency,
use the same value everywhere. It will be stored as a string anyway and the
change will not make any real difference.
(The actual value of 'close' doesn't matter as long as extras has such a key.)
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 02 Mar 2015 15:07:18 -0800] rev 24177
hgweb: extract changeset template mapping generation to own function
Similar in spirit to
513d47905114, I want to write an extension to
make available extra template keywords so hgweb templates can include
extra data.
To do this today requires monkeypatching the templater, which I think is
the wrong place to perform this modification.
This patch extracts the creation of the templater arguments to a
standalone function - one that can be monkeypatched by extensions.
I would very much like for extensions to be able to inject extra
templater parameters into *any* template. However, I'm not sure the best
way to facilitate this, as hgweb commands invoke the templater before
returning and we want the extensions to have access to rich data
structures like the context instances. We need cooperation inside hgweb
command functions. The use case screams for something like internal-only
"hooks." This is exactly what my (rejected) "events" patch series
provided. Perhaps that feature should be reconsidered...
Matt Mackall <mpm@selenic.com> [Mon, 02 Mar 2015 17:32:37 -0600] rev 24176
merge with stable
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Wed, 25 Feb 2015 18:12:01 -0500] rev 24175
revrange: don't parse revset aliases as hash prefixes (
issue4553)
If a user has a revsetalias defined, it is their explicit wish for
this alias to be parsed as a revset and nothing else. Although the
case of the alias being short enough and only contain the letters a-f
is probably kind of rare, it may still happen.
Mathias De Maré <mathias.demare@gmail.com> [Tue, 24 Feb 2015 08:49:22 +0100] rev 24174
subrepos: support adding files in git subrepos
This support includes correct matching, so includes,
excludes and patterns are all supported.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 15 Feb 2015 17:29:10 -0500] rev 24173
subrepo: return only the manifest keys from hgsubrepo.files()
This is in line with the other subrepo classes (i.e. only the filenames are
returned). Archive iterates over the manifest keys, and since subrepo archive()
uses this method, it does too now. This will allow largefiles to override its
manifest keys to present the largefiles instead of the standins. Once in place,
we shouldn't need the copy/paste overrides of archive and subrepo archive in
largefiles, that don't quite behave like the core methods they are overriding.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 15 Feb 2015 17:21:48 -0500] rev 24172
archive: change the default prefix to '' from None
All current callers supply some sort of prefix, so the issue was hidden. But if
no parameter was specified, a crash occurred in the write() closure when
concatenating 'prefix' and 'name'.
Martin von Zweigbergk <martinvonz@google.com> [Wed, 25 Feb 2015 11:39:14 -0800] rev 24171
debugsetparent: document one common caveat specifically
After calling debugsetparent, it's quite common that status is
incorrect. The command's help text already says that it should be used
with care, but let's describe this caveat explicitly since it's
probably the most common one.
Eric Sumner <ericsumner@fb.com> [Fri, 20 Feb 2015 13:55:01 -0800] rev 24170
repair: setup hookargs when processing bundle2s
addchangegroup() modifies its behavior based on the transaction source.
This is incorrect for bundle2 repair files, causing rebases to abort when this
option is enabled.
This diff specifies the source type in the way recommended by comments in
bundle2.py and adds a test to ensure that rebases with the experimental option
work successfully.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 02 Mar 2015 19:01:00 +0000] rev 24169
amend: check for directory renames for both merge parents (
issue4516)
Before this change, amending a merge would lose the rename information for file
adding in the second parents and implicitly renamed into a new directory.
In case of the merge, we also look for directory rename data from the second
parent. This seems to fix the bug and does not show other issues from the test
suite.
Matt Mackall <mpm@selenic.com> [Mon, 02 Mar 2015 10:55:19 -0600] rev 24168
merge with stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 02 Mar 2015 23:37:55 +0900] rev 24167
largefiles: avoid infinite recursive call of openlfdirstate in overriderevert
When there isn't lfdirstate file in cases below, "openlfdirstate()"
call "scmutil.match()" indirectly to build lfdirstate up.
- subrepos disabling largefiles locally
- lfdirstate file is missed accidentally
This causes infinite recursive call of "openlfdirstate()" in
"overriderevert()" (introduced by
79c2c29c71ae), because
"openlfdirstate()" is invoked from the function overriding
"scmutil.match()" itself.
To avoid infinite recursive call of "openlfdirstate()" in
"overriderevert()" in such cases, this patch passes "create=False"
argument to "openlfdirstate()".
"create=False" forcibly makes "openlfdirstate()" avoid code path to
build lfdirstate up.
Matt Mackall <mpm@selenic.com> [Mon, 02 Mar 2015 10:29:45 -0600] rev 24166
Added signature for changeset
07a92bbd02e5
Matt Mackall <mpm@selenic.com> [Mon, 02 Mar 2015 10:29:41 -0600] rev 24165
Added tag 3.3.2 for changeset
07a92bbd02e5
Matt Harbison <matt_harbison@yahoo.com> [Mon, 02 Mar 2015 10:31:22 -0500] rev 24164
transaction: really disable hardlink backups (
issue4546)
Matt Mackall <mpm@selenic.com> [Mon, 02 Mar 2015 01:20:14 -0600] rev 24163
merge with stable
Matt Harbison <matt_harbison@yahoo.com> [Sat, 28 Feb 2015 01:12:54 -0500] rev 24162
test-obsolete: use 'log -T {node}' instead of 'id --debug -i' to lookup hash
I ran into a case when adding a test where there were cryptic hg command line
errors. I eventually traced it back to 'hg id' printing debug messages before
the hash:
invalid branchheads cache (served): tip differs <hash>
This method should eliminate any other output except the node.