Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Sep 2019 21:55:45 -0700] rev 42949
narrow: add option for automatically removing unused includes
It's been a somewhat common request among our users to have Mercurial
automatically pick includes to remove. This patch adds an option for
that: `hg tracked --auto-remove-includes`. I'm not sure if this is the
right name and semantics for it. Perhaps the feature should also add
excludes of large subdirectories even if other files in the include
are needed? Narrow clones are experimental, so we can change the name
and/or semantics later if necessary.
Differential Revision: https://phab.mercurial-scm.org/D6848
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Sep 2019 21:22:59 -0700] rev 42948
narrow: don't hexify paths and double-hexify known nodes on wire (BC)
It isn't obvious, but wireprototypes.encodelist() is meant only for
binary nodeids. So when we used it for encoding hex nodeids and paths,
the encoded result was surprising and hard to read.
This patch changes the encoding to make the list of paths a
comma-separated list and the list of common nodes to be a
encodelist()-encoded list of binary nodeids (so the result is just
singly-hexified nodeids).
This is clearly a breaking change, but the feature is experimental and
we're not aware of anyone running a server using this command yet.
Differential Revision: https://phab.mercurial-scm.org/D6851
Boris Feld <boris.feld@octobus.net> [Wed, 11 Sep 2019 17:41:13 +0200] rev 42947
remotefilelog: replace repack lock to solve race condition
2c74337e6483 reduced the probability of race-conditions when starting
background repack and prefetch and we saw the difference in our CI instance
with all failures disappearing except one where one call to waitonrepack seems
to returns too early.
I'm not sure what exactly goes wrong but I realized that while the prefetch
operation uses a standard Mercurial lock, the repack operation is using a
custom lock based on `fcntl.flock` on available platforms. As `extutil.flock`
fallback on traditional Mercurial locks on other platforms and the tests are
stable on my laptop, our CI environment and GCC112, I'm sending this patch to
standardize the behavior across environments.
Differential Revision: https://phab.mercurial-scm.org/D6844