Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 21 May 2017 15:35:21 +0200] rev 32509
hidden: use _domainancestors to compute revs revealed by dynamic blocker
The complexity of computing the revealed changesets is now 'O(revealed)'.
This massively speeds up the computation on large repository. Moving it to the
millisecond range.
Below are timing from two Mozilla repositories with different contents:
1) mozilla repository with:
* 400667 changesets
* 35 hidden changesets (first rev-268334)
* 288 visible drafts
* obsolete working copy (dynamicblockers),
Before:
! visible
! wall 0.030247 comb 0.030000 user 0.030000 sys 0.000000 (best of 100)
After:
! visible
! wall 0.000585 comb 0.000000 user 0.000000 sys 0.000000 (best of 4221)
The timing above include the computation of obsolete changeset:
! obsolete
! wall 0.000396 comb 0.000000 user 0.000000 sys 0.000000 (best of 6816)
So adjusted time give 30ms before versus 0.2ms after. A 150x speedup.
2) mozilla repository with:
* 405645 changesets
* 4312 hidden changesets (first rev-326004)
* 264 visible drafts
* obsolete working copy (dynamicblockers),
Before:
! visible
! wall 0.168658 comb 0.170000 user 0.170000 sys 0.000000 (best of 48)
After
! visible
! wall 0.008612 comb 0.010000 user 0.010000 sys 0.000000 (best of 325)
The timing above include the computation of obsolete changeset:
! obsolete
! wall 0.006408 comb 0.010000 user 0.010000 sys 0.000000 (best of 404)
So adjusted time give 160ms before versus 2ms after. A 75x speedup.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 21 May 2017 15:21:46 +0200] rev 32508
hidden: add a function returning ancestors of revs within a domain
See documentation for details. This will be used to improve the hidden
computation algorithm. See new changesets for usage.
Kyle Lippincott <spectral@google.com> [Fri, 26 May 2017 14:52:54 -0700] rev 32507
tests: hint how to run slow tests when rejecting
Kyle Lippincott <spectral@google.com> [Fri, 26 May 2017 13:24:07 -0700] rev 32506
zsh_completion: install as _hg not hg
The contrib/zsh_completion file itself says to name it _hg.
With a name like `hg`, if the user has a line like `autoload ${^fpath}/*(N-.:t)`
in their zshrc, it will create a shell function named `hg` that will hide the
actual hg command and make hg unusable.
Separately from that though, the underscore prefix makes it actually work. The
zsh man page states:
The convention for autoloaded functions used in completion is that they
start with an underscore
This does not seem to just be a "convention", though. With the ill-advised line
removed from my zshrc and the file named
`/usr/local/share/zsh/site-functions/hg` (without the underscore), these
completions did not seem to get loaded and the ones from the zsh installation
were loaded instead. If I renamed them to be
`/usr/local/share/zsh/site-functions/_hg`, however, they were loaded.
I manually tested the above statement by starting a new zsh instance with the
file in `/usr/local/share/zsh/site-functions` with the following names:
- As `hg`, `which _hg_labels` did not show anything
- As `_hg`, `which _hg_labels` showed the expected function.
Augie Fackler <augie@google.com> [Mon, 20 Mar 2017 17:50:31 -0400] rev 32505
osx: include chg by default
Augie Fackler <augie@google.com> [Fri, 26 May 2017 20:03:05 -0400] rev 32504
osx: override default exclude filter for pkgbuild
To quote `man 1 pkgbuild`:
--filter filter-expression
By default, --root will include the entire contents of the
given root-path in the package payload, except for any .svn
or CVS directories, and any .DS_Store files. You can override
these default filters by specifying one or more --filter
options. Each filter-expression is an re_format(7)
``extended'' expression: any path in the root which matches
any of the given expressions will be excluded from the pack-
age payload. (Note that specifying even one --filter inhibits
the default filters, so you must respecify the default fil-
ters if you still want them to be used.)
It turns out the default filter these days *also* includes .git and
.hg. Notice how that filter expression is a regular expression? That
(presumably unintentionally) prevents a file named "chg" or "_hg" from
getting included in the distribution. Many many thanks to spectral@
for trying to include a _hg file which led us to figure this bug out.
Bug filed with Apple for this as rdar://problem/32437369, mentioning
both the gap in documentation and the wrong defaults.
Augie Fackler <augie@google.com> [Fri, 26 May 2017 20:05:59 -0400] rev 32503
osx: update Mac packaging tests for bdiff.so install location change
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 05 May 2017 18:15:42 +0200] rev 32502
strip: use the 'writenewbundle' function to get bundle on disk
This will ensure the backup bundle use the best available logic (eg: includes
relevant caches so that we loose less of them on strip.)
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 23 May 2017 02:23:07 +0200] rev 32501
perfphases: add 'perfphases' command
This commands benchmark the time spend computing the data in a repository.
Martin von Zweigbergk <martinvonz@google.com> [Tue, 16 May 2017 22:15:42 -0700] rev 32500
match: remove support for excludes from matcher class
The support is now provided by differencematcher() and still available
via the match() function.
Martin von Zweigbergk <martinvonz@google.com> [Tue, 16 May 2017 16:36:48 -0700] rev 32499
match: handle excludes using new differencematcher
As I've said on earlier patches, I'm hoping to use more composition of
simpler matchers instead of the single complex matcher we currently
have. This extracts a first new matcher that composes two other
matchers. It matches if the first matcher matches but the second does
not. As such, we can use it for excludes, which this patch also
does. We'll remove the now-unncessary code for excludes in the next
patch.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 25 May 2017 09:52:56 -0700] rev 32498
match: override matchfn() the usual way in subdirmatcher
Martin von Zweigbergk <martinvonz@google.com> [Thu, 25 May 2017 09:52:49 -0700] rev 32497
match: make matchfn a method on the class
This makes it easier to override in subclasses, so they don't have to
assign the attribute with a lambda.
Boris Feld <boris.feld@octobus.net> [Wed, 24 May 2017 17:50:17 +0200] rev 32496
util: raise ParseError when parsing dates (BC)
a7dce526c462 refactored util.parsedate in order to raise ValueError instead
of Abort for using with ui.configwith. It causes several problems, putting
arbitrary bytes in ValueError can cause issues with Python 3. Moreover, we
added a function to convert ValueError exceptions back to Abort.
A better approach would be to make parsedate raises ParseError, removing
the convert function and update configwith to also catch ParseError.
The side-effect is that error message when giving an invalid date in CLI
change from:
abort: invalid date: 'foo bar'
to:
hg: parse error: invalid date: 'foo bar'
I'm not sure if it's an acceptable change, I found personally the error
message more clear but more verbose too.
Martin von Zweigbergk <martinvonz@google.com> [Tue, 16 May 2017 14:31:21 -0700] rev 32495
match: fix visitdir for roots of includes
I'm hoping to rewrite the matcher so excludes are handled by
composition of one matcher with another matcher where the second
matcher has only includes. For that to work, we need to make
visitdir() to return 'all' for directory 'foo' for a '-I foo' matcher.
Martin von Zweigbergk <martinvonz@google.com> [Wed, 17 May 2017 23:02:42 -0700] rev 32494
match: make subdirmatcher extend basematcher
This makes the subdirmatcher not depend on the main matcher, giving us
more freedom to modify that (specifically, it will lose it _always
field in a while).
Martin von Zweigbergk <martinvonz@google.com> [Fri, 19 May 2017 10:17:08 -0700] rev 32493
match: make basematcher._files a @propertycache
This will make it easier to override in subclasses (otherwise the
function @propertycache object will be replaced by the
super-constructor call)..
Martin von Zweigbergk <martinvonz@google.com> [Wed, 17 May 2017 23:45:13 -0700] rev 32492
match: extract base class for matchers
We will soon start splitting up the current matcher class into more
specialized classes, so we'll want a base class for all the things
that don't vary much between different matchers.
Martin von Zweigbergk <martinvonz@google.com> [Mon, 22 May 2017 11:08:52 -0700] rev 32491
debugwalk: also print matcher representation
This will make the effect of coming patches clearer.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 25 May 2017 01:45:52 +0200] rev 32490
transaction: run _writejournal unfiltered
The function use the length of the repository, something affected by filtering.
It seems better to use the unfiltered length here.
Credit for finding this goes to Durham Goode.
Augie Fackler <augie@google.com> [Mon, 22 May 2017 19:18:12 -0400] rev 32489
bookmarks: warn about bookmark names that unambiguously resolve to a node (BC)
I just burned myself on this today because I left out the -r in my `hg
bookmark` command, which then left me confused because I didn't notice
the bookmark I created in the wrong place that was silently shadowing
the revision I was trying to check out. Let's warn the user.
This patch only enforces the check on bookmark names 4 characters long
or longer. We can tweak that if we'd like, I selected that since
that's the fewest characters shortest will use in the templater
output.
A previous version of this patch rejected such bookmarks. It was
proposed during review (and I agree) that the behavior change for a
bookmark named "cafe" or similar as history accumulated was a little
too weird, but that the warning definitely has merit.
Yuya Nishihara <yuya@tcha.org> [Thu, 04 May 2017 11:51:07 +0900] rev 32488
pycompat: try __bytes__() to convert object to bytestr
It should be better than using __str__() unconditionally.
Boris Feld <boris.feld@octobus.net> [Tue, 23 May 2017 15:44:50 +0200] rev 32487
ui: fix ui.configdate for invalid dates
a7dce526c462 introduced util._parsedate with the aim to be used in
ui.configdate but ui.configdate was using util.parsedate instead. It have the
impact of raising an AbortError in case of an invalid date instead of a
ConfigError exception. Fix ui.configdate to use the right function and add a
test for invalid dates.
Thanks to Yuya for the catch!
Yuya Nishihara <yuya@tcha.org> [Fri, 28 Apr 2017 00:01:22 +0900] rev 32486
demandimport: stop overriding __getattribute__()
Proxy __dict__ and __doc__ explicitly instead.
I'm not sure which is less evil, but this seems slightly simpler than hooking
all attribute accesses.
Yuya Nishihara <yuya@tcha.org> [Fri, 28 Apr 2017 23:46:16 +0900] rev 32485
demandimport: look for 'mod' suffix as alternative name for module reference
It's widely used in our codebase.
Yuya Nishihara <yuya@tcha.org> [Mon, 01 May 2017 14:26:56 +0900] rev 32484
demandimport: insert empty line per method
_demandmod class is getting bigger, and I don't want to put more things in
a dense form.
Yuya Nishihara <yuya@tcha.org> [Mon, 01 May 2017 13:43:31 +0900] rev 32483
demandimport: strictly compare identity of proxy object
This looks better, and __eq__() may be overridden in an undesired way.
Martin von Zweigbergk <martinvonz@google.com> [Tue, 23 May 2017 08:49:01 -0700] rev 32482
match: use ProgrammingError where appropriate
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 23 May 2017 01:30:36 +0530] rev 32481
revlog: raise error.WdirUnsupported from revlog.node() if wdirrev is passed
When we try to run, 'hg debugrevspec 'branch(wdir())'', it throws an index error
and blows up. Lets raise the WdirUnsupported if wdir() is passed so that we can
catch that later.
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 23 May 2017 01:22:33 +0530] rev 32480
revset: add support for ancestors(wdir())
This is a part of extending support for wdir() predicate.
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 23 May 2017 01:08:19 +0530] rev 32479
revset: add support for using ~ operator on wdir() predicate
We catch the WdirUnsupported exception and handles the wdir() case here.
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 22 May 2017 02:14:22 +0530] rev 32478
revset: add support for p2(wdir()) to get second parent of working directory
This adds support for finding the second parent of working directory using the
p2 predicate.