Yuya Nishihara <yuya@tcha.org> [Tue, 02 Feb 2016 20:56:48 +0900] rev 27970
osutil: disable compilation of recvfds() on unsupported platforms
It appears that Solaris doesn't provide CMSG_LEN(), msg_control, etc. As
recvfds() is only necessary for chg, this patch just drops it if CMSG_LEN
isn't defined, which is the same workaround as Python 3.x.
https://hg.python.org/cpython/rev/
c64216addd7f#l7.33
Wagner Bruna <wbruna@softwareexpress.com.br> [Wed, 03 Feb 2016 10:57:27 -0200] rev 27969
i18n-pt_BR: synchronized with
0ec12435b78b
Matt Mackall <mpm@selenic.com> [Mon, 01 Feb 2016 18:29:07 -0600] rev 27968
merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 01 Feb 2016 17:58:13 -0600] rev 27967
Added signature for changeset
2408645de650
Matt Mackall <mpm@selenic.com> [Mon, 01 Feb 2016 17:58:12 -0600] rev 27966
Added tag 3.7 for changeset
2408645de650
Matt Mackall <mpm@selenic.com> [Mon, 01 Feb 2016 16:14:51 -0600] rev 27965
merge with i18n
Martin von Zweigbergk <martinvonz@google.com> [Sun, 31 Jan 2016 00:31:55 -0800] rev 27964
verify: recover lost freeing of memory
In
df8973e1fb45 (verify: move file cross checking to its own function,
2016-01-05), "mflinkrevs = None" was moved into function, so the
reference was cleared there, but the calling function now held on to
the variable. The point of clearing it was presumably to free up
memory, so let's move the clearing to the calling function where it
makes a difference. Also change "mflinkrevs = None" to "del
mflinkrevs", since the comment about scope now surely is obsolete.
Martijn Pieters <mj@zopatista.com> [Mon, 01 Feb 2016 15:41:43 +0000] rev 27963
rebase: better way to detect non-detaching revisions (
issue5044)
Rather than look for the lowest revision, see if the rebase state is tracking
the parents of this revision. Otherwise we can't handle multiple revisions in
one rebase that includes a merge revision.
Fixes
issue5044.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Feb 2016 23:17:40 +0900] rev 27962
i18n-ja: synchronized with
88609cfa3745
Wagner Bruna <wbruna@yahoo.com> [Mon, 01 Feb 2016 12:12:06 -0200] rev 27961
i18n-pt_BR: synchronized with
f0d3c5794380
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Feb 2016 22:14:06 +0900] rev 27960
doc: itemize text blocks to increase readability in HTML format
Before this patch, text blocks changed in this patch are shown as just
continuous text blocks like below in HTML format.
Global configuration like the username setting is typically put into:
%USERPROFILE%\mercurial.ini
$HOME/.hgrc
This patch itemizes these text blocks to increase readability in HTML
format.
Global configuration like the username setting is typically put into:
- %USERPROFILE%\mercurial.ini (on Windows)
- $HOME/.hgrc (on Unix, Plan9)
Like as other platform sensitive container-ed text blocks, this patch
also adds explicit "on PLATFORM" information to each items for
readability in HTML format, even though output of "hg help config" on
command line seems a little redundant. For example, on Unix:
Global configuration like the username setting is typically put into:
- "$HOME/.hgrc" (on Unix, Plan9)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Feb 2016 22:14:06 +0900] rev 27959
doc: use correct indentation for enumeration
This creates hg.1.html as expected.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Feb 2016 22:13:57 +0900] rev 27958
doc: use correct cross reference in help documentation
This patch fixes problems below:
- ":hg:" role should be followed by not '"' but '`'
- there is a help topic not "default-push" but "config.default-push"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Feb 2016 22:06:35 +0900] rev 27957
doc: prevent literal text block from being treated as non-literal one
This creates hg.1.html as expected.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Feb 2016 22:06:35 +0900] rev 27956
doc: prevent non-literal text block from being treated as literal one
This creates hg.1.html as expected.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Feb 2016 20:29:20 +0900] rev 27955
histedit: show correct hash ID at verification error
node.short() on 'ha' in verifyactions() causes broken hash ID, because
it is initialized with node.hex()-ed node value.
Yuya Nishihara <yuya@tcha.org> [Sat, 30 Jan 2016 18:00:11 +0900] rev 27954
backout: disable --merge with --no-commit (
issue4874)
Because "backout --merge" have to make a commit before merging, it doesn't
work with --no-commit. We could change "backout --merge" to make a merge
commit automatically, and --no-commit to bypass a merge commit, but that
change would be undesirable because:
a) it's hard to fix bad merges in general
b) two commits would be created with the same --message
So, this patch simply disables "--merge --no-commit".
Martin von Zweigbergk <martinvonz@google.com> [Wed, 27 Jan 2016 09:07:28 -0800] rev 27953
changegroup: fix pulling to treemanifest repo from flat repo (
issue5066)
In
c0f11347b107 (changegroup: don't support versions 01 and 02 with
treemanifests, 2016-01-19), I stopped supporting use of cg1 and cg2
with treemanifest repos. What I had not considered was that it's
perfectly safe to pull *to* a treemanifest repo using any changegroup
version. As reported in
issue5066, I therefore broke pull from old
repos into a treemanifest repo. It was not covered by the test case,
because that pulled from a local repo while enabling treemanifests,
which enabled treemanifests on the source repo as well. After
switching to pulling via HTTP, it breaks.
Fix by splitting up changegroup.supportedversions() into
supportedincomingversions() and supportedoutgoingversions().
Martin von Zweigbergk <martinvonz@google.com> [Thu, 28 Jan 2016 13:49:05 -0800] rev 27952
tests: minor cleanup to treemanifest test
Siddharth Agarwal <sid0@fb.com> [Fri, 29 Jan 2016 14:19:29 -0800] rev 27951
merge: don't try to merge subrepos twice (
issue4988)
In my patch series ending with rev
25e4b2f000c5 I switched most change/delete
conflicts to be handled at the resolve layer. .hgsubstate was the one file that
we weren't able to handle, so we kept the old code path around for it.
The old code path added .hgsubstate to one of the other lists as the user
specifies, including possibly the 'g' list.
Now since we did this check after converting the actions from being keyed by
file to being keyed by action type, there was nothing that actually removed
.hgsubstate from the 'cd' or 'dc' lists. This meant that the file would
eventually make its way into the 'mergeactions' list, now freshly augmented
with 'cd' and 'dc' actions.
We call subrepo.submerge for both 'g' actions and merge actions.
This means that if the resolution to an .hgsubstate change/delete conflict was
to add it to the 'g' list, subrepo.submerge would be called twice. It turns out
that this doesn't cause any adverse effects on Linux due to caching, but
apparently breaks on other operating systems including Windows.
The fix here moves this to before we convert the actions over. This ensures
that it .hgsubstate doesn't make its way into multiple lists.
The real fix here is going to be:
(1) move .hgsubstate conflict resolution into the resolve layer, and
(2) use a real data structure for the actions rather than shuffling data around
between lists and dictionaries: we need a hash (or prefix-based) index by
file and a list index by action type.
There's a very tiny behavior change here: collision detection on
case-insensitive systems will happen after this is resolved, not before. I think
this is the right change -- .hgsubstate could theoretically collide with other
files -- but in any case it makes no practical difference.
Thanks to Yuya Nishihara for investigating this.
Nathan Goldbaum <ngoldbau@ucsc.edu> [Wed, 27 Jan 2016 16:16:38 -0600] rev 27950
bookmarks: improve documentation for --rev option
Siddharth Agarwal <sid0@fb.com> [Wed, 27 Jan 2016 12:33:07 -0800] rev 27949
merge: undocument checkunknown and checkignored configs for 3.7
We've discovered an issue with this flag during certain kinds of rebases. When:
(1) we're rebasing while currently on the destination commit, and
(2) an untracked or ignored file F is currently in the working copy, and
(3) the same file F is in a source commit, and
(4) F has different contents in the source commit,
then we'll try to merge the file rather than overwrite it.
An earlier patch I sent honored the options for these situations as well.
Unfortunately, rebases go through the same flow as the old, deprecated 'hg
merge --force'. We'd rather not make any changes to 'hg merge --force'
behavior, and there's no way from this point in the code to figure out whether
we're in 'hg rebase' or 'hg merge --force'.
Pierre-Yves David and I came up with the idea to split the 'force' flag up into
'force' for rebases, and 'forcemerge' for merge. Since this is a very
disruptive change and we're in freeze mode, simply undocument the options for
this release so that our hands aren't tied by BC concerns. We'll redocument
them in the next release.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 28 Jan 2016 20:10:06 +0900] rev 27948
commands: advance current active bookmark at pull --update correctly
Before this patch, "hg pull --update" doesn't advance current active
bookmark correctly, if pulling itself doesn't advance it, even though
"hg pull" + "hg update" does so.
Existing test for "pull --update works the same as pull && update" in
test-bookmarks.t doesn't examine this case, because pulling itself
advance current active bookmark before actual updating the working
directory in that test case.
To advance current active bookmark at "hg pull --update" correctly,
this patch examines 'movemarkfrom' instead of 'not checkout'.
Even if 'not checkout' at the invocation of postincoming(), 'checkout'
is overwritten by "the revision to update to" value returned by
destutil.destupdate() in such case. Therefore, 'not checkout'
condition means "update destination is revision #0", and isn't
suitable for examining whether active bookmark should be advanced.
Even though examination around "movemarkfrom == repo['.'].node()" may
seem a little redundant just for this issue, this makes it easier to
compare (and unify in the future, maybe) with the same logic to update
bookmark at "hg update" below.
if not ret and movemarkfrom:
if movemarkfrom == repo['.'].node():
pass # no-op update
elif bookmarks.update(repo, [movemarkfrom], repo['.'].node()):
ui.status(_("updating bookmark %s\n") % repo._activebookmark)
else:
# this can happen with a non-linear update
ui.status(_("(leaving bookmark %s)\n") %
repo._activebookmark)
bookmarks.deactivate(repo)
Matt Harbison <matt_harbison@yahoo.com> [Sun, 24 Jan 2016 00:10:19 -0500] rev 27947
largefiles: prevent committing a missing largefile
Previously, if the largefile was deleted at the time of a commit, the standin
was silently not updated and its current state (possibly garbage) was recorded.
The test makes it look like this is somewhat of an edge case, but the same thing
happens when an `hg revert` followed by `rm` changes the standin.
Aside from the second invocation of this in lfutil.updatestandinsbymatch()
(which is what triggers this test case), the three other uses are guarded by
dirstate checks for added or modified, or an existence check in the filesystem.
So aborting in lfutil.updatestandins() should be safe, and will avoid silent
skips in the future if this is used elsewhere.
Augie Fackler <augie@google.com> [Wed, 27 Jan 2016 10:24:25 -0500] rev 27946
changegroup: fix treemanifest exchange code (
issue5061)
There were two mistakes: one was accidental reuse of the fclnode
variable from the loop gathering file nodes, and the other (masked by
that bug) was not correctly handling deleted directories. Both cases
are now fixed and the test passes.
Matt Mackall <mpm@selenic.com> [Fri, 22 Jan 2016 12:08:20 -0600] rev 27945
log: speed up single file log with hidden revs (
issue4747)
On repos with lots of heads, the filelog() code could spend several
minutes decompressing manifests. This change instead tries to
efficiently scan the changelog for candidates and decompress as few
manifests as possible. This is a regression introduced in 3.3 by the
linkrev adjustment code. Prior to that, filelog was nearly instant.
For the repo in the bug report, this improves time of a simple log
command from ~3 minutes to ~.5 seconds, a 360x speedup.
For the main Mercurial repo, a log of commands.py slows down from
1.14s to 1.45s, a 27% slowdown. This is still faster than the file()
revset, which takes 2.1 seconds.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 23 Jan 2016 23:32:49 -0500] rev 27944
largefiles: report the missing file count after a commit that does nothing
This is the same warning that is printed for normal files.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 23 Jan 2016 23:24:30 -0500] rev 27943
commit: factor the post commit status check into a cmdutil method
The largefiles extension needs to set lfstatus for this status call. Otherwise,
if a missing largefile is explicitly named, a confusing message is issued that
says the largefile wasn't found, followed by another that says nothing changed.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 23 Jan 2016 20:51:17 -0500] rev 27942
largefiles: fix an explicit largefile commit after a remove (
issue4969)
The change in
b68797f244e4 to handle a normal -> largefile switch was too
aggressive in preserving the original matcher names. If a largefile is
explicitly provided by the user, but only the standin exists in dirstate, then
only the standin can be committed.
There's still maybe an issue when the largefile is deleted outside of Mercurial:
$ rm large
$ hg ci -m "oops" large
large: The system cannot find the file specified
nothing changed
[1]
Martin von Zweigbergk <martinvonz@google.com> [Mon, 25 Jan 2016 15:48:35 -0800] rev 27941
context: back out sneaky code change in documentation change
In
81b391a45264 (context: clarify why we don't compare file contents
when nodeid differs, 2016-01-12), I also changed "node2 != _newnode"
into "self.rev() is not None". I don't remember why. They are similar,
but the former also catches the case where the file is clean in the
dirstate (so node2 is not _newnode), but different from the "other"
context. This resulted in unnecessary file content comparison a few
lines further down in the code. Let's just back out the code change.
Thanks to Durham Goode for spotting this.