Matt Harbison <matt_harbison@yahoo.com> [Fri, 21 Sep 2018 21:44:27 -0400] rev 39778
py3: create built in exceptions with str type messages in win32.py
I hit an IOError in unlink() in test-pathconflicts-basic.t, that then crashed as
it was handled:
File "mercurial\dispatch.py", line 359, in _runcatch
return _callcatch(ui, _runcatchfunc)
File "mercurial\dispatch.py", line 367, in _callcatch
return scmutil.callcatch(ui, func)
File "mercurial\scmutil.py", line 252, in callcatch
ui.error(_("abort: %s\n") % encoding.strtolocal(inst.strerror))
File "mercurial\encoding.py", line 205, in unitolocal
return tolocal(u.encode('utf-8'))
AttributeError: 'bytes' object has no attribute 'encode'
Matt Harbison <matt_harbison@yahoo.com> [Sat, 22 Sep 2018 12:11:48 -0400] rev 39777
tests: stabilize test-shelve.t#phasebased for #no-symlink and #no-execbit
The rev number ended up being 11 instead of 13 on Windows. If I ever get back
to issue2020, this will go away.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 20 Sep 2018 21:35:01 -0700] rev 39776
debugdirstate: deprecate --nodates in favor of --no-dates
We have supported 'no-' prefixes for boolean flag for a few years now,
so I was expecting it to be --no-dates.
I noticed that we have --nodates options for a few more commands
(e.g. `hg diff`), but I'll leave that for another day.
Differential Revision: https://phab.mercurial-scm.org/D4693
Matt Harbison <matt_harbison@yahoo.com> [Fri, 21 Sep 2018 00:37:03 -0400] rev 39775
py3: fix a type error in hghave.has_hardlink
test-hghave.t was failing with:
feature hardlink failed: argument 1: <class 'TypeError'>: wrong type
Martin von Zweigbergk <martinvonz@google.com> [Fri, 21 Sep 2018 09:34:41 -0700] rev 39774
narrow: remove hack to read narowspec from shared .hg directory
This was another leftover from 576eef1ab43d (narrow: move
.hg/narrowspec to .hg/store/narrowspec (BC), 2018-08-02), in addition
to 623081f2abc2 (narrow: remove hack to write narrowspec to shared .hg
directory, 2018-09-12).
Differential Revision: https://phab.mercurial-scm.org/D4692
Augie Fackler <augie@google.com> [Fri, 21 Sep 2018 11:43:46 -0400] rev 39773
streamclone: reimplement nested context manager
It's gone in Python 3, and you can't *ctxs into a with statement. Sigh.
Differential Revision: https://phab.mercurial-scm.org/D4690
Augie Fackler <augie@google.com> [Fri, 21 Sep 2018 11:44:08 -0400] rev 39772
bundle2: grab kwarg using sysstr
# skip-blame just an r prefix on a string
Differential Revision: https://phab.mercurial-scm.org/D4691
Augie Fackler <augie@google.com> [Fri, 21 Sep 2018 11:15:55 -0400] rev 39771
py3: mark another passing test
Differential Revision: https://phab.mercurial-scm.org/D4689
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Sep 2018 12:47:49 +0900] rev 39770
bookmarks: remove --active in favor of --list
It's weird that we have both --active and --inactive options meaning
completely different things. Instead of adding a one-off option, let's
document the way to display the active bookmark by using -l/--list.
No deprecated option is added since --active isn't released yet.
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Sep 2018 12:44:23 +0900] rev 39769
bookmarks: add explicit option to list bookmarks of the given names
This is a generalized form of the --active option.
A redundant sorted() call is removed. There was no point to update dict items
in lexicographical order.
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Sep 2018 12:34:13 +0900] rev 39768
bookmarks: reject --delete with --inactive which makes no sense
A deleted bookmark is neither active nor inactive.
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Sep 2018 12:32:01 +0900] rev 39767
bookmarks: parse out --inactive to action early
The --inactive option can't be directly mapped to an action or a modifier.
With any names, it means to add/rename to inactive bookmarks. Without names,
it means to deactivate the current bookmark. This patch separates them to
"inactive" flag and "action == 'inactive'".
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Sep 2018 12:25:19 +0900] rev 39766
bookmarks: parse out implicit "add" action early
This prepares for adding -l/--list option, which can be combined with the
positional arguments.
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Sep 2018 12:07:38 +0900] rev 39765
bookmarks: clarify that opts['rename'] points to an old bookmark to be renamed
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Sep 2018 12:04:29 +0900] rev 39764
bookmarks: refactor option checking to pick one from --delete/rename/active
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Sep 2018 11:51:15 +0900] rev 39763
bookmarks: convert opts to bytes dict early
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Sep 2018 11:50:07 +0900] rev 39762
bookmarks: pass in formatter to printbookmarks() instead of opts (API)
This clarifies that user options have to be processed before calling
printbookmarks().
Boris Feld <boris.feld@octobus.net> [Wed, 19 Sep 2018 17:09:01 +0200] rev 39761
strip: ignore orphaned internal changesets while computing safe strip roots
Internal changeset can be safely garbage collected, so we can ignore them during
safestrip.
(Another phase for internal changeset that must be kept in the repository might
be introduced later).
Boris Feld <boris.feld@octobus.net> [Wed, 06 Jun 2018 02:31:46 +0200] rev 39760
shelve: no longer strip internal commit when using internal phase
When the internal phase is used, the internal commits we create during shelve
will be automatically hidden, and we don't need to strip them. Avoiding strips
gives much better performances and is less traumatic for caches.
Test changes are all related to revision numbers increasing more quickly since
we avoid stripping.
At the end of `test-shelve.t` we now need manually strip the shelve-commit in
addition to the x.shelve file deletion. This emulates a preexisting shelve
after a repository upgrade.
Note:
The hidden internal commits confuses rebase a bit as shown by a new test
added. This will happen when the user have shelve commits on top of a
changeset to be rebased.
We'll fix this in the next commit. As we still use a backup bundle, rebase
can just strip the internal changesets and be fine.
Martin von Zweigbergk <martinvonz@google.com> [Wed, 19 Sep 2018 12:07:52 -0700] rev 39759
meld: enable auto-merge
This tells meld to resolve trivial conflicts before presenting the
user with the remaining conflicts.
This was attempted 5 years ago, but then --auto-merge was too new that
the patch was rejected out of concern that users still had an older
version of meld installed [1]. Maybe it's safe to assume that they
have a newer version now.
[1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2013-April/050084.html
Differential Revision: https://phab.mercurial-scm.org/D4665
Matt Harbison <matt_harbison@yahoo.com> [Thu, 20 Sep 2018 23:45:30 -0400] rev 39758
run-tests: partially backout PYTHON quoting
In 7f8b7a060584, I quoted this to support python being installed to
"Program Files". Even though the string passed to os.popen() is this:
"c:/Python27/python.exe" -c "import mercurial; print (mercurial.__path__[0])"
... cmd.exe is trying to run this:
'c:/Python27/python.exe" -c "import'
This caused test-hghave.t to fail, reporting 'unexpected mercurial lib: ""',
because the failed execution prints nothing to stdout. Py3 fails as though it's
not quoted. For whatever reason, print() shows up in the output when run with
py2, but not py3, so I'm having a hard time debugging this. For now, let's fix
the buildbot.
Pulkit Goyal <pulkit@yandex-team.ru> [Fri, 21 Sep 2018 03:16:08 +0530] rev 39757
py3: use '%d' instead of '%s' for integers
Python 3 does not allow to use '%s' for integers.
Differential Revision: https://phab.mercurial-scm.org/D4688
Pulkit Goyal <pulkit@yandex-team.ru> [Fri, 21 Sep 2018 03:16:38 +0530] rev 39756
py3: use print as a function in tests/test-revert.t
This makes the test work on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D4687
Yuya Nishihara <yuya@tcha.org> [Wed, 19 Sep 2018 23:11:07 +0900] rev 39755
chgserver: restore pager fds attached within runcommand session
While rewriting chg in Rust, I noticed the server leaks the client's pager
fd. This isn't a problem right now since the IPC process terminates earlier
than the pager, but I believe the fds attached within a "runcommand" request
should be released as soon as the session ends.
Yuya Nishihara <yuya@tcha.org> [Wed, 19 Sep 2018 22:57:47 +0900] rev 39754
chgserver: add separate flag to remember if stdio fds are replaced
I want to make it use a separate saved buffer for "attachio" requests within
"runcommand" session. See the next patch for details.
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Sep 2018 21:35:36 +0900] rev 39753
status: remove "morestatus" message from formatter data (BC)
They are just printable messages, not data that should be fed to JSON or
templater.
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Sep 2018 21:28:47 +0900] rev 39752
tests: show that the structure of the more status output looks weird
Each dict should represent data of the same kind.
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Sep 2018 16:35:39 +0900] rev 39751
phabricator: add testedwith boilerplate
Kyle Lippincott <spectral@google.com> [Thu, 20 Sep 2018 12:13:00 -0700] rev 39750
narrow: extract wdir cleanup function to make it extensible
We have an overlay filesystem which shows the entire repository, and unlinking
a file that's in the underlying data store will create "tombstone" entries,
which are going to cause our automatic tracking to re-add these directories. We
need to use a different (non-posix) interface to clean up items in the working
directory that are no longer relevant.
Extracting this to a function lets us use extensions.wrappedfunction and perform
this cleanup work, even if the paths aren't in the dirstate (they may have been
removed in the past and thus entirely "tombstone" entries already, part of
hgignore, exclusively directories (possibly empty), or other edge cases).
Differential Revision: https://phab.mercurial-scm.org/D4681
Augie Fackler <augie@google.com> [Thu, 20 Sep 2018 09:52:59 -0400] rev 39749
changegroup: reintroduce some comments that have gotten lost over the years
I got concerned about the correctness of the pruning logic, but I was
misreading it. I didn't figure that out until I walked all the way
back to 0252abaafb8a from 20111, where I was finally able to see (in
the deleted side of the change!) a complete explanation from
b6d9ea0bc107 in 2005.
Differential Revision: https://phab.mercurial-scm.org/D4686
Augie Fackler <augie@google.com> [Wed, 19 Sep 2018 23:38:30 -0400] rev 39748
changegroup: tease out a temporary prune method for manifests
It's extracted so extensions can filter manifest nodes if needed. This
is an unfortunate hack, but I think I only need it for manifests. The
long-term solution will be to rework the relationship between
changegroups and storage so that this isn't required.
Differential Revision: https://phab.mercurial-scm.org/D4685
Augie Fackler <augie@google.com> [Wed, 19 Sep 2018 23:36:16 -0400] rev 39747
changegroup: remove outdated comment
Differential Revision: https://phab.mercurial-scm.org/D4684
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 20 Sep 2018 18:36:33 +0300] rev 39746
py3: encode the name to bytes before using in revsetpredicate()
Differential Revision: https://phab.mercurial-scm.org/D4677
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 20 Sep 2018 18:36:00 +0300] rev 39745
py3: suppress the output on .write() calls in tests/test-hgweb-commands.t
Differential Revision: https://phab.mercurial-scm.org/D4676
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 20 Sep 2018 18:35:24 +0300] rev 39744
py3: use stringutil.pprint() to print boolean values
Differential Revision: https://phab.mercurial-scm.org/D4675
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 20 Sep 2018 18:34:38 +0300] rev 39743
py3: add a missing b'' in tests/test-newercgi.t
# skip-blame because just b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D4674
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 20 Sep 2018 18:33:53 +0300] rev 39742
py3: use pycompat.maplist instead of map
Differential Revision: https://phab.mercurial-scm.org/D4673
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 20 Sep 2018 17:23:20 +0300] rev 39741
py3: add some b'' prefixes in tests/test-extension.t
# skip-blame because just b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D4672
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 20 Sep 2018 17:17:02 +0300] rev 39740
py3: make tests/svn-safe-append.py compatible with python 3
Differential Revision: https://phab.mercurial-scm.org/D4671
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 20 Sep 2018 17:16:16 +0300] rev 39739
py3: use print as a function in tests/test-subrepo-svn.t
Differential Revision: https://phab.mercurial-scm.org/D4670
Anton Shestakov <av6@dwimlabs.net> [Mon, 17 Sep 2018 17:47:24 +0800] rev 39738
bundle2: make server.bundle2.stream default to True
Support for bundle2 streaming clones has been shipped in Mercurial 4.5
(7eedbd5d4880), but was never activated by default. It's time to have more
people use it. The new format allows streaming clones to transport cache
(hooray for speed) and phaseroots (fixes phase-related issues).
Changes in tests:
bundle2 capabilities now have "stream=v2" (plus a '\n' as a separator) and
therefore take 14 bytes more: "%0Astream%3Dv2". Tip for tests that have data
encoded with CBOR: 0xd3 - 0xc5 = 14.
$USUAL_BUNDLE2_CAPS$ replaces $USUAL_BUNDLE2_CAPS_SERVER$, which is the same
thing, but without "stream=v2".
Since streaming clones now also transfer caches, the reported byte and file
counts are higher (e.g. 816 bytes in 9 files instead of 613 bytes in 4 files,
a bit of --debug and manual math confirms that the caches take these extra 203
bytes in 5 files).
Differential Revision: https://phab.mercurial-scm.org/D4680
Anton Shestakov <av6@dwimlabs.net> [Mon, 17 Sep 2018 16:52:34 +0800] rev 39737
bundle2: graduate bundle2.stream option from experimental to server section
Differential Revision: https://phab.mercurial-scm.org/D4679
Anton Shestakov <av6@dwimlabs.net> [Thu, 20 Sep 2018 17:02:31 +0800] rev 39736
tests: split capabilities into separate lines while searching for "narrow"
This test is interested only in capabilities that are related to narrow, so
let's omit everything else. Makes it easier to update other capabilities (and
"rev-branch-cache" is one of the usual patterns that are already present in
tests/common-patterns.py anyway).
Differential Revision: https://phab.mercurial-scm.org/D4678
Matt Harbison <matt_harbison@yahoo.com> [Wed, 19 Sep 2018 23:54:16 -0400] rev 39735
py3: resolve Unicode issues around `hg serve` on Windows
Presumably we're going to want to use CreateProcessW(), and possibly get rid of
pycompat.getcwd() here (which maps to the DeprecationWarning causing
os.getcwdb()) to use os.getcwd() directly. But this was a minimal change to
get rid of some stacktraces in test-run-tests.t.
Matt Harbison <matt_harbison@yahoo.com> [Wed, 19 Sep 2018 21:41:58 -0400] rev 39734
run-tests: avoid os.getcwdb() on Windows
Any call to this issues a DeprecationWarning about the Windows bytes API being
deprecated. There are a handful of these calls in core, but test-run-tests.t
was littered with these, as it's printed everytime run-tests.py is launched.
I'm not sure what the long term strategy for Unicode on Windows in the test
runner is, but this seems no worse than the current conversion strategy.
Matt Harbison <matt_harbison@yahoo.com> [Wed, 19 Sep 2018 20:45:57 -0400] rev 39733
run-tests: quote PYTHON when spawning a subprocess
Same reason as 5abc47d4ca6b. This covers running *.py tests, as well as inline
python blocks. I didn't hit the path around line 3079, but it seems correct to
quote.
Augie Fackler <augie@google.com> [Mon, 17 Sep 2018 20:43:40 -0400] rev 39732
narrow: add test showing that local-to-local narrow clones don't work
It turns out they've never actually worked: prior to some recent
refactoring they just unintentionally followed the full-clone path,
which we unintentionally relied on in a test at Google.
Differential Revision: https://phab.mercurial-scm.org/D4640
Martin von Zweigbergk <martinvonz@google.com> [Wed, 19 Sep 2018 17:34:36 -0700] rev 39731
fastannotate: process files as they arrive
peer.commandexecutor()'s context manager waits for all responses to
arrive in its __exit__() method. We want to process the results as
they arrive, so we should do that inside the context manager
scope. Note that the futures' result() methods have been replaced to
make sure that the command executor's sendcommands() method is called
when the first future's result is requested, so we don't need to do
that.
A minor side-effect is that we can no longer easily tell when the
server has started sending us responses, so that long statement was
lost.
Differential Revision: https://phab.mercurial-scm.org/D4666
Matt Harbison <matt_harbison@yahoo.com> [Tue, 18 Sep 2018 22:14:03 -0400] rev 39730
py3: make osenvironb a proxy for, instead of a copy of os.environ where needed
Without this, TESTDIR and a few other variables weren't defined in the *.t test.
I didn't bother implementing all of the view functions for simplicity. All that
is actually used is __{get,set}item__(), get() and pop(), but the rest seems
easy enough to add for futureproofing.
Sean Farley <sean@farley.io> [Tue, 22 May 2018 16:16:11 +0200] rev 39729
memctx: simplify _manifest with new revlog nodeids
This was originally written before we had modifiednodeid and
addednodeid, so we had to get the parents of the context, the data from
the function, and then hash that.
This is much more simple now and helps refactor more code later.
Sean Farley <sean@farley.io> [Tue, 22 May 2018 12:35:38 +0200] rev 39728
context: remove unused overlayfilectx (API)
It seems that this was maybe used in an extension but at this point
nothing in lfs, hg-experimental, or any other cursory repo looked at has
a reference to this class; so, for now, let's just remove it.
Sean Farley <sean@farley.io> [Mon, 11 Jun 2018 20:48:47 -0700] rev 39727
context: fix typo in workingcommitctx
This was probably a copy pasta error in 745e3b485632. Refactoring memctx
code exposed this bug.
Sean Farley <sean@farley.io> [Tue, 17 Jul 2018 17:16:22 -0700] rev 39726
filectx: fix return of renamed
How is this not blowing up everywhere?
It seems that filelog.renamed has always returned False (incorrectly a
boolean) instead of the assumed None. Tracing through history, you need
to skip over my move of code in 2013 by annotating from 896193a9cab4^
and you can see the original code is from 2007 (180a3eee4b75) and that
ab9fa7a85dd9 broke this by assuming renamed was a bool (instead of
None).
Refactoring memctx code later exposed this bug.
Matt Harbison <matt_harbison@yahoo.com> [Wed, 19 Sep 2018 00:23:02 -0400] rev 39725
tests: glob over some quoting differences in test-narrow-widen-no-ellipsis.t
Matt Harbison <matt_harbison@yahoo.com> [Tue, 18 Sep 2018 23:56:38 -0400] rev 39724
py3: byteify contrib/check-config.py
The corresponding *.t still fails because of bytes (with a 'b' prefix) vs str
printing, but no longer crashes.
# skip-blame for b'' prefixing
Matt Harbison <matt_harbison@yahoo.com> [Tue, 18 Sep 2018 23:47:21 -0400] rev 39723
tests: quote PYTHON usage
Python3 defaults to installing under "Program Files".
Matt Harbison <matt_harbison@yahoo.com> [Tue, 18 Sep 2018 22:40:03 -0400] rev 39722
py3: add a missing b'' for Windows
I tried ./contrib/byteify-strings.py, but there were way too many changes (and
most looked wrong). This was hit with test-check-interfaces.py.
# skip-blame for b'' prefixes
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Sep 2018 21:01:47 +0900] rev 39721
log: make changesetformatter pass in changectx to formatter
It wasn't necessary before, but user templates may have keywords that aren't
filled in by the changesetformatter.
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Sep 2018 20:56:53 +0900] rev 39720
journal: use changesetformatter to properly nest list of commits in JSON
Before, two separate JSON documents were interleaved.
I chose the field name "changesets" over the option name "commits", since
each entry is called a "changeset" in log templates.
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Sep 2018 07:53:50 +0900] rev 39719
journal: do not pass in repolookuperror string to template (BC)
This doesn't look like data, but a warning message.