Martin von Zweigbergk <martinvonz@google.com> [Sun, 07 Feb 2016 22:18:24 -0800] rev 28032
update: check command line before modifying repo
A failed command should not have any effect on the repo.
Martin von Zweigbergk <martinvonz@google.com> [Sun, 07 Feb 2016 21:44:38 -0800] rev 28031
treemanifest: fix debugrebuildfncache
When I taught debugrebuildfncache about dirlogs in fb92927f9775
(treemanifests: fix streaming clone, 2016-02-04), I added a
last-minute "if 'treemanifest' in repo" guard. That should have been
checking for "... in repo.requirements". Fix that and add tests for
it.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 03 Feb 2016 15:12:01 +0000] rev 28030
update: warn about other topological head in pull and unbundle
Other commands have a '--update' triggering a bare update. We now issue the
message introduced into the previous changeset for these too.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 02 Feb 2016 14:49:02 +0000] rev 28029
update: warn about other topological heads on bare update
A concern around the user experience of Mercurial is user getting stuck on there
own topological branch forever. For example, someone pulling another topological
branch, missing that message in pull asking them to merge and getting stuck on
there own local branch.
The current way to "address" this concern was for bare 'hg update' to target the
tipmost (also latest pulled) changesets and complain when the update was not
linear. That way, failure to merge newly pulled changesets would result in some
kind of failure.
Yet the failure was quite obscure, not working in all cases (eg: commit right
after pull) and the behavior was very impractical in the common case
(eg: issue4673).
To be able to change that behavior, we need to provide other ways to alert a
user stucks on one of many topological head. We do so with an extra message after
bare update:
1 other heads for branch "default"
Bookmark get its own special version:
1 other divergent bookmarks for "foobar"
There is significant room to improve the message itself, and we should augment
it with hint about how to see theses other heads or handle the situation (see
in-line comment). But having "a" message is already a significant improvement
compared to the existing situation. Once we have it we can iterate on a better
version of it. As having such message is an important step toward changing the
default destination for update and other nicety, I would like to move forward
quickly on getting such message.
This was discussed during London - October 2015 Sprint.
timeless <timeless@mozdev.org> [Wed, 03 Feb 2016 04:37:04 +0000] rev 28028
tests: mock getpid to reduce glob usage
With util.getpid, it is now possible to define fixed pids.
Future iterations can define a map of pids on a locked
first come first serve basis to create a more realistic
harness, but for now this is good enough.
This applies to blackbox, but could apply to other
tests as well.
timeless <timeless@mozdev.org> [Wed, 03 Feb 2016 09:11:22 +0000] rev 28027
util: enable getpid to be replaced
This will enable tests to write stable process ids.
timeless <timeless@mozdev.org> [Mon, 08 Feb 2016 00:47:36 +0000] rev 28026
blackbox: refactor use of vfs as _bbvfs
timeless <timeless@mozdev.org> [Wed, 03 Feb 2016 15:18:29 +0000] rev 28025
blackbox: flush output file descriptor
Without this, when there are multiple ui views, each blackbox
will have its own file handle, and the logging will be in
a really bad order.
Also, because of the way blackbox works, it never closes its
file handles, which means the last output before exit is
often lost.
timeless <timeless@mozdev.org> [Wed, 03 Feb 2016 18:15:18 +0000] rev 28024
tests: change blackbox test to work cross platform
While it is not easy to make a file 000 on Windows, you can
emulate most of the behaviors by replacing the file with a directory.
Also corrects test description to properly indicate that failing to
read from the log is fatal.
Siddharth Agarwal <sid0@fb.com> [Mon, 01 Feb 2016 20:28:32 -0800] rev 28023
merge: document checkignored and checkunknown configs again
These options were undocumented for 3.7 because of an issue found during the
freeze (see rev 7cb7264cfd52). This issue has now been fixed, so we can
document these options again.
Siddharth Agarwal <sid0@fb.com> [Wed, 03 Feb 2016 13:12:06 -0800] rev 28022
rebase: respect checkunknown and checkignored in more cases
checkunknown and checkignored are currently respected for updates and regular
merges, but not for certain kinds of rebases. To be precise, they aren't
respected for 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.
This happens because rebases set force to True when calling merge.update.
Setting force to True makes a lot of sense in general, but it turns out the
force option is overloaded: there's a deprecated '--force' option in merge that
allows you to merge in outstanding changes, including changes in untracked
files. We use the 'mergeforce' parameter to tell those two cases apart.
I think the behavior during rebases when checkunknown is 'abort' (the default)
is wrong -- we should abort on or overwrite differing untracked files, not try
to merge them in. However that currently breaks rebases by aborting in the
middle -- we need better handling for that case before we can change the
default.
Siddharth Agarwal <sid0@fb.com> [Wed, 03 Feb 2016 13:11:34 -0800] rev 28021
test-merge-force: add tests for merge.checkunknown=warn
In an upcoming patch we're going to change the behavior of some merges with
merge.checkunknown=warn or ignore -- ensure that the behavior of the deprecated
'merge --force' remains the same.
Siddharth Agarwal <sid0@fb.com> [Mon, 01 Feb 2016 20:28:32 -0800] rev 28020
merge: tell _checkunknownfiles about whether this was merge --force
In an upcoming patch we'll have different behavior here for when 'merge
--force' is used as opposed to when other kinds of force operations are
performed, like rebases.
Siddharth Agarwal <sid0@fb.com> [Mon, 01 Feb 2016 20:28:32 -0800] rev 28019
merge: add missing doc for 'labels' parameter
Siddharth Agarwal <sid0@fb.com> [Mon, 01 Feb 2016 20:28:32 -0800] rev 28018
merge: move abort/warn checks up to the top level of _checkunknownfiles
In upcoming patches, we're also going to do these checks when force is True.
Martin von Zweigbergk <martinvonz@google.com> [Fri, 05 Feb 2016 21:09:32 -0800] rev 28017
match: rename "narrowmatcher" to "subdirmatcher" (API)
I keep mistaking "narrowmatcher" for narrowhg's
narrowmatcher. "subdirmatcher" seems more to the point anyway.
timeless <timeless@mozdev.org> [Wed, 03 Feb 2016 18:59:35 +0000] rev 28016
tests: relax test-devel-warnings to reduce false positives
This test is interested in warning output, so
glob away line numbers and hashes as they aren't relevant
to its core.
Matt Mackall <mpm@selenic.com> [Sun, 07 Feb 2016 00:49:31 -0600] rev 28015
merge with stable
Jun Wu <quark@fb.com> [Tue, 19 Jan 2016 18:20:13 +0000] rev 28014
chgserver: create new process group after fork (issue5051)
This is to make SIGTSTP work. Before the patch, the server process group is
considered "orphaned" and will ignore SIGTSTP, SIGTTIN, SIGTTOU, according to
POSIX. See the comment above `will_become_orphaned_pgrp` in `kernel/exit.c`
from Linux 4.3 for details.
SIGTSTP is important if chgserver runs some ncurses commend like `commit -i`.
Ncurses has its own SIGTSTP handler which will do the following:
1. Clean the screen
2. Stop itself by resending SIGTSTP to itself
3. Restore the screen
If SIGTSTP is ignored, step 2 will be a noop, which means the process cannot
be suspended properly.
In order to make things work, chg client needs to forward SIGTSTP and SIGCONT
to server as well.
Matt Mackall <mpm@selenic.com> [Fri, 05 Feb 2016 16:54:01 -0600] rev 28013
check-commit: check for double-addition of blank lines
Previously, we were only checking for a blank line being added next to
an existing one. Now we also check for two being added at the same time.
Matt Mackall <mpm@selenic.com> [Fri, 05 Feb 2016 16:52:02 -0600] rev 28012
check-commit: scan for multiple instances of error patterns
Durham Goode <durham@fb.com> [Fri, 05 Feb 2016 10:22:14 -0800] rev 28011
merge: add file ancestor linknode to mergestate
During a merge, each file has a current commitnode+filenode, an other
commitnode+filenode, and an ancestor commitnode+filenode. The ancestor
commitnode is not stored though, and we rely on the ability for the filectx() to
look up the commitnode by using the filenode's linkrev. In alternative backends
(like remotefilelog), linkrevs may have restriction that prevent arbitrary
linkrev look up given a filenode.
This patch accounts for that by storing the ancestor commitnode in
the merge state so that it is available later at resolve time.
This results in some test changes because the ancestor commitnode we're using at
resolve time changes slightly. Before, we used the linkrev commit, which is the
earliest commit that introduced that particular filenode (which may not be the
latest common ancestor of the commits being merged). Now we use the latest
common ancestor of the merged commits as the commitnode. This is fine though,
because that commit contains the same filenode as the linkrev'd commit.
Durham Goode <durham@fb.com> [Fri, 05 Feb 2016 10:15:28 -0800] rev 28010
merge: add debugmergestate support for _stateextras
Now that we can store extras for each file, we need to have support for showing
it in debugmergestate (the tests depend on this).
Durham Goode <durham@fb.com> [Fri, 05 Feb 2016 10:15:28 -0800] rev 28009
merge: add state extras merge state data
In future commits we will want to store more data related to each file in the
merge state. This patch adds an optional record for storing a dictionary of
extras for each file.