Martin von Zweigbergk <martinvonz@google.com> [Wed, 20 Feb 2019 15:39:01 -0800] rev 41760
tests: add tests of pathcopies()
I'm working on support for storing copy metadata in the changeset
instead of in the filelog. When storing it in the changeset, it will
obviously be efficient to get the copy metadata for all files in a
single changeset, but it will be more expensive to get the copy
metadata all revisions of a single file. Some algorithms will then
need to be optimized differently. The first method I'm going to
rewrite is pathcopies().
This commit adds many tests for pathcopies(), so we can run the tests
with both old and new versions of the code, as well as with metadata
stored in filelog or in changeset (later). They use the
debugpathcopies command I recently added (with no tests when it was
added). They show a few bugs and few cases of slightly weird
behavior. I'll fix the bugs in the next few commits.
Differential Revision: https://phab.mercurial-scm.org/D5986
Martin von Zweigbergk <martinvonz@google.com> [Fri, 15 Feb 2019 10:39:45 -0800] rev 41759
uncommit: add config option to keep commit by default
We have a Google-internal extension that keeps track of "review units"
(like Phabricator reviews, or Gerrit's Change-Id). This information is
stored outside of the commit. It is updated with rewrites. Every now
and then we get reports from users who are confused because `hg
uncommit` lost track of their review. Keeping the empty commit by
default would reduce this confusion. It may also cause confusion about
the empty commit. This patch adds a config option that lets us easily
test both behaviors on our users.
Differential Revision: https://phab.mercurial-scm.org/D5970
Martin von Zweigbergk <martinvonz@google.com> [Thu, 14 Feb 2019 15:17:54 -0800] rev 41758
debugpathcopies: sort output so it's deterministic
Differential Revision: https://phab.mercurial-scm.org/D5983
Martin von Zweigbergk <martinvonz@google.com> [Sun, 17 Feb 2019 09:12:30 -0800] rev 41757
subrepo: use root-repo-relative path from `hg files` with ui.relative-paths=no
The fix is to pass in a "subuipathfn" as we do everywhere else.
Differential Revision: https://phab.mercurial-scm.org/D5978
Martin von Zweigbergk <martinvonz@google.com> [Sun, 17 Feb 2019 09:05:28 -0800] rev 41756
subrepo: demonstrate broken `hg files` with ui.relative-paths=no
Differential Revision: https://phab.mercurial-scm.org/D5977
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 18 Feb 2019 03:39:47 +0530] rev 41755
py3: whitelist 5 new passing tests caught by buildbot
Thanks to indygreg and durin42 recent patches.
Differential Revision: https://phab.mercurial-scm.org/D5979
Martin von Zweigbergk <martinvonz@google.com> [Fri, 15 Feb 2019 10:49:12 -0800] rev 41754
uncommit: inform user if the commit is empty after uncommit
Differential Revision: https://phab.mercurial-scm.org/D5969
Boris Feld <boris.feld@octobus.net> [Thu, 14 Feb 2019 15:35:47 +0100] rev 41753
test: stabilize test-run-tests.t output
We have reached a point where the duration in JSON reports of
`test-run-tests.t` were greater or equal than 10 seconds, which doesn't match
anymore the regex. For example here:
https://ci.octobus.net/blue/organizations/jenkins/MercurialPy2/detail/MercurialPy2/276/pipeline
```
"diff": "", ? (re)
- "end": "\s*[\d\.]{4,5}", ? (re)
+ "end": "10.040",
"result": "skip", ? (re)
```
Instead of accepting more characters, I changed the regex to accept any number
of digits before the `.` then 3 or 4 digits after. This way the regex is more
precise (only one `.` is authorized and we can ensure that the precision
doesn't change).
Differential Revision: https://phab.mercurial-scm.org/D5966
Boris Feld <boris.feld@octobus.net> [Thu, 14 Feb 2019 14:36:16 +0100] rev 41752
test: stabilize test-remotefilelog-bgprefetch.t flaky output
When running the test suite with multiple processes, we often get flaky
outputs, like here: https://ci.octobus.net/job/MercurialPy2/274/console
```
- $TESTTMP/hgcache/master/packs/8f1443d44e57fec96f72fb2412e01d2818767ef2.histidx
- $TESTTMP/hgcache/master/packs/8f1443d44e57fec96f72fb2412e01d2818767ef2.histpack
- $TESTTMP/hgcache/master/packs/f4d50848e0b465e9bfd2875f213044c06cfd7407.dataidx
- $TESTTMP/hgcache/master/packs/f4d50848e0b465e9bfd2875f213044c06cfd7407.datapack
+ $TESTTMP/hgcache/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/1406e74118627694268417491f018a4a883152f0
+ $TESTTMP/hgcache/master/11/f6ad8ec52a2984abaafd7c3b516503785c2072/ef95c5376f34698742fe34f315fd82136f8f68c0
+ $TESTTMP/hgcache/master/39/5df8f7c51f007019cb30201c49e884b46b92fa/69a1b67522704ec122181c0890bd16e9d3e7516a
+ $TESTTMP/hgcache/master/95/cb0bfd2977c761298d9624e4b4d4c72a39974a/076f5e2225b3ff0400b98c92aa6cdf403ee24cca
+ $TESTTMP/hgcache/master/af/f024fe4ab0fece4091de044c58c9ae4233383a/bb6ccd5dceaa5e9dc220e0dad65e051b94f69a2c
```
Add some sleeps after `debugwaitonrepack` calls as it seems it needs some
extra time to cleanup.
Differential Revision: https://phab.mercurial-scm.org/D5960
Martin von Zweigbergk <martinvonz@google.com> [Tue, 19 Feb 2019 21:55:05 -0800] rev 41751
merge with stable
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 15 Feb 2019 15:49:17 -0500] rev 41750
color: change color of grep.rev label (BC)
GNU grep uses green for line numbers as we do, but I sometimes get a
bit confused when I do `hg grep --diff -n` and get both line numbers
and revisions and don't know which one is which.
A different colour can help.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 15 Feb 2019 15:43:22 -0500] rev 41749
color: give colours to the grep.inserted and grep.deleted labels
I find the "bold" makes it stand out a bit more when the green is next
to the line number.
Note that these labels are applied before the grep.change label, which
is now disabled. To get the old colour, users can restore
[color]
grep.change = green dim
to their hgrc.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 15 Feb 2019 15:24:04 -0500] rev 41748
grep: give different labels to + and - symbols
I find it more useful to give different colours to plus and minus, but
it's difficult to do so if the default output uses the same label for
both. The following augments the names of columns with some extra
labels, akin to the diff.inserted and diff.deleted labels for the diff
command.
This is done by adding an extra label field to the columns tuples.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 18 Feb 2019 00:27:25 +0900] rev 41747
tests: bulk changes to avoid whitespace errors of check-code.py
This is a part of preparation to apply checking with check-code.py on
code fragments embedded in *.t test scripts.
This revision avoids "whitespace" errors of check-code.py below:
- missing whitespace after ","
- missing whitespace in expression
- no whitespace around "=" for named parameters
- wrong whitespace around "="
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 18 Feb 2019 00:27:25 +0900] rev 41746
tests: replace "naked except clause" to avoid check-code.py error
This is a part of preparation to apply checking with check-code.py on
code fragments embedded in *.t test scripts.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 18 Feb 2019 00:27:25 +0900] rev 41745
tests: bulk changes to avoid "omit superfluous pass" check-code.py error
This is a part of preparation to apply checking with check-code.py on
code fragments embedded in *.t test scripts.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 18 Feb 2019 00:27:25 +0900] rev 41744
tests: replace imported module to avoid check-code.py error
This is a part of preparation to apply checking with check-code.py on
code fragments embedded in *.t test scripts.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 18 Feb 2019 00:27:25 +0900] rev 41743
tests: bulk change to avoid "unneeded trailing ',' ..." error of check-code.py
This is a part of preparation to apply checking with check-code.py on
code fragments embedded in *.t test scripts.
"trailing ','" at the end of command option list in the code fragment
of test-bundle2-format.t is still left as it is, in order to follow
the style of command definitions in Mercurial core.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 18 Feb 2019 00:27:25 +0900] rev 41742
tests: define class in modern style to avoid check-code.py error
This is a part of preparation to apply checking with check-code.py on
code fragments embedded in *.t test scripts.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 18 Feb 2019 00:27:25 +0900] rev 41741
tests: use NO_CHECK_EOF as heredoc limit mark to omit checking code fragments
This is a part of preparation to apply checking with check-code.py on
code fragments embedded in *.t test scripts.
"primes.py" embedded in test-highlight.t causes an error of
check-commit.py below:
don't use .next(), use next(...)
But changing embedded primes.py is painful, because it is committed in
test script, and affects hash IDs. On the other hand, primes.py itself
is never executed in test script.
Therefore, this patch uses NO_CHECK_EOF as heredoc limit mark in order
to omit any checking on this code fragments.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 16 Feb 2019 22:03:58 -0500] rev 41740
tests: conditionalize msys path mangling in test-bundle.t
This broke in 252cc56c9ff6 when the variables were printed one per line. The
only reason I can think of is that MSYS knew the former string couldn't be a
list of paths, but thinks this form is.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 16 Feb 2019 21:49:55 -0500] rev 41739
tests: glob over quoting differences in test-blackbox.t for Windows
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 15 Feb 2019 14:56:07 -0500] rev 41738
chistedit: ensure a locale is set
My paternal surname was showing incorrectly without this fix.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Mon, 18 Feb 2019 23:43:40 -0500] rev 41737
templatekw: make negrev return empty for wdir() and nullrev
I considered just returning the same output that {rev} returns here,
but {rev} also returns essentially gibberish: either an INT_MAX-kind
of variable for wdir() or -1 for null. Since these are numbers that
are intended to be used for calculations, and since the numbers for
wdir() and -1 are not really very helpful for calculation (and worse,
when used as a revision number -1 is equal to unhidden tip), I figured
the most reasonable thing to do here is to just return nothing for
negrev.
This could potentially break scripts that are expecting to parse a
nonempty integer out of a {negrev}, but that seems like a very remote
concern at this juncture.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Mon, 18 Feb 2019 18:44:21 -0500] rev 41736
test-sqlitestore: run sqlite3 with no init file
These tests were failing for me because I have a ~/.sqliterc that
alters the default output. Tests should ignore any init file.
Sushil khanchi <sushilkhanchi97@gmail.com> [Thu, 14 Feb 2019 18:28:27 +0530] rev 41735
copies: return True instead of filename as it is expected to return boolean
As the function documentation says this function should True if we hit
a match and False otherwise. And I see that we are not using that returned
filename anywhere.
Differential Revision: https://phab.mercurial-scm.org/D5964
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 11 Feb 2019 19:41:37 +0300] rev 41734
narrow: fix command name in error messsage
Differential Revision: https://phab.mercurial-scm.org/D5982
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 15 Feb 2019 14:43:31 -0500] rev 41733
templatekw: add a {negrev} keyword
Revision numbers are getting much maligned for two reasons: they are
too long in large repos and users get confused by their local-only
nature. It just occurred to me that negative revision numbers avoid
both of those problems. Since negative revision numbers change
whenever the repo changes, it's much more obvious that they are a
local-only convenience. Additionally, for the recent commits that we
usually care about the most, negative revision numbers are always near
zero.
This commit adds a negrev templatekw to more easily expose negative
revision numbers. It's not easy to reliably produce this output with
existing keywords due to hidden commits while at the same time
ensuring good performance.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 17 Feb 2019 22:39:12 -0500] rev 41732
tests: correct the remaining fallout from recent path style changes on Windows
Per @martinvonz, `ui.slash` set by the test runner is now capable of playing a
more active role.[1] I verified that both of these work by setting `ui.slash`
to False, but these changes seem cleaner. The problem with check-perf-code.py
was that the proper imports were not being whitelisted due to '\' vs '/'.
[1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2019-February/128701.html
rdamazio@google.com [Wed, 13 Feb 2019 18:34:08 -0800] rev 41731
templates: adding a config() function for template customization
This allows templates to be written such that users can customize them easily,
or that they can be customized based on other configuration of the system. For
enterprise deployments, we often have complex template aliases, and right now
the only way individual users can customize those is by replacing the whole
template alias (which means they won't get company-wide updates to it anymore,
plus most users don't want to have to get a complex template right).
With this change, they can just set a config option which feeds into our
templates for common changes (e.g. whether to limit commit descriptions to the
width of their terminal or not).
To work around the issue of having to register the config options, I declared
a dedicated section [templateconfig] for these options to be dynamically
declared. They can still reference any other config option that's registered
elsewhere.
I only did string, bool and int at this time - list and date would add other
complications with parsing the default so I'll leave that as an exercise to
the reader :)
Differential Revision: https://phab.mercurial-scm.org/D5959
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 31 Jan 2019 20:11:16 +0300] rev 41730
changegroup: don't try to prune manifest nodes if not ellipses
In non-ellipses case, the number of manifest nodes can be very big, and finding
whether one of them can be pruned or not is very costly. For each node, we try
to find the rev and the linkrev, which is expensive.
Sending bit more manifest nodes seems better and much faster here. On our
internal repository, this saves around 5 seconds on `hg tracked --addinclude
<some_path>` on a narrow repo with ellipses disabled.
Differential Revision: https://phab.mercurial-scm.org/D5782
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 11 Feb 2019 16:34:48 +0300] rev 41729
branchmap: improve doc about BranchMapCache class
It was confusing that we are having two different branchcache and
BranchMapCache classes. The doc in BranchMapCache class was not much helpful
to understand the difference. This patch improves the doc there.
Differential Revision: https://phab.mercurial-scm.org/D5933