FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 05 Jul 2016 07:25:51 +0900] rev 29493
perf: add historical portability policy for future reference
Anton Shestakov <av6@dwimlabs.net> [Sat, 09 Jul 2016 14:01:55 +0800] rev 29492
tests: check ETag format in test-hgweb-commands
Anton Shestakov <av6@dwimlabs.net> [Sat, 09 Jul 2016 03:26:24 +0800] rev 29491
hgweb: emit a valid, weak ETag
Previously, ETag headers from hgweb weren't correctly formed, because rfc2616
(section 14, header definitions) requires double quotes around the content of
the header. str(web.mtime) didn't do that.
Additionally, strong ETags signify that the resource representations are
byte-for-byte identical. That is, they can be reconstructed from byte ranges if
client so wishes. Considering ETags for all hgweb pages is just mtime of
00changelog.i and doesn't consider of e.g. .hg/hgrc with description, contact
and other fields, it's clearly shouldn't be strong. The W/ prefix marks it as
weak, which still allows caching the whole served file/page, but doesn't allow
byte-range requests.
Maciej Fijalkowski <fijall@gmail.com> [Tue, 07 Jun 2016 15:35:58 +0200] rev 29490
policy: add cffi policy for PyPy
This adds cffi policy in the case where we don't want to use C modules,
but instead we're happy to rely on cffi (bundled with pypy)
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 04 Jul 2016 10:04:11 -0700] rev 29489
sslutil: handle default CA certificate loading on Windows
See the inline comment for what's going on here.
There is magic built into the "ssl" module that ships with modern
CPython that knows how to load the system CA certificates on
Windows. Since we're not shipping a CA bundle with Mercurial,
if we're running on legacy CPython there's nothing we can do
to load CAs on Windows, so it makes sense to print a warning.
I don't anticipate many people will see this warning because
the official (presumed popular) Mercurial distributions on
Windows bundle Python and should be distributing a modern Python
capable of loading system CA certs.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 30 Jun 2016 19:54:12 -0700] rev 29488
sslutil: expand _defaultcacerts docstring to note calling assumptions
We should document this so future message additions don't seem out
of place.
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 04 Jul 2016 10:00:56 -0700] rev 29487
sslutil: document the Apple OpenSSL cert trick
This is sort of documented in _plainapplypython()'s docstring. But
it helps to be explicit in security code.
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 04 Jul 2016 09:58:45 -0700] rev 29486
sslutil: use certificates provided by certifi if available
The "certifi" Python package provides a distribution of the
Mozilla trusted CA certificates as a Python package. If it is
present, we assume the user intends it to be used and we use
it to provide the default CA certificates when certificates
are otherwise not configured.
It's worth noting that this behavior roughly matches the popular
"requests" package, which also attempts to use "certifi" if
present.
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 03 Jul 2016 22:28:24 +0530] rev 29485
py3: make files use absolute_import and print_function
This patch includes addition of absolute_import and print_function to the
files where they are missing. The modern importing conventions are also followed.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 01 Jul 2016 19:17:45 -0700] rev 29484
sslutil: don't attempt to find default CA certs file when told not to
Before, devel.disableloaddefaultcerts only impacted the loading of
default certs via SSLContext. After this patch, the config option also
prevents sslutil._defaultcacerts() from being called.
This config option is meant to be used by tests to force no CA certs
to be loaded. Future patches will enable _defaultcacerts() to have
success more often. Without this change we can't reliably test the
failure to load CA certs. (This patch also likely fixes test failures
on some OS X configurations.)
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 01 Jul 2016 19:04:39 -0700] rev 29483
sslutil: pass ui to _defaultcacerts
We'll use this shortly.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 01 Jul 2016 18:03:51 -0700] rev 29482
sslutil: change comment and logged message for found ca cert file
Future patches will change _defaultcacerts() to do something
on platforms that aren't OS X. Change the comment and logged
message to reflect the future.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 01 Jul 2016 19:27:34 -0700] rev 29481
tests: better testing of loaded certificates
Tests were failing on systems like RHEL 7 where loading the system
certificates results in CA certs being reported to Python. We add
a feature that detects when we're able to load *and detect* the
loading of system certificates. We update the tests to cover the
3 scenarios:
1) system CAs are loadable and detected
2) system CAs are loadable but not detected
3) system CAs aren't loadable
Kostia Balytskyi <ikostia@fb.com> [Fri, 01 Jul 2016 17:42:55 +0200] rev 29480
update: teach hg to override untracked dir with a tracked file on update
This is a fix to an old problem when Mercurial got confused by an
untracked folder with the same name as one of the files in a commit
hg was trying to update to. It is pretty safe to remove this folder if
it is empty. Backing up an empty folder seems to go against Mercurial's
"don't track dirs" philosophy.
Kostia Balytskyi <ikostia@fb.com> [Fri, 01 Jul 2016 14:09:53 +0200] rev 29479
rebase: move handling of obsolete commits to be a separate RR class method
Kostia Balytskyi <ikostia@fb.com> [Fri, 01 Jul 2016 14:09:53 +0200] rev 29478
rebase: move rebase finish logic to be a method of the RR class
Rebase finish logic includes collapsing working directorystate into
a single commit, moving bookmarks, clearing status and collapsemsg files,
reporting skipped commits to the user and obsoleting precursors of the
newly created commits.
Kostia Balytskyi <ikostia@fb.com> [Fri, 01 Jul 2016 14:09:53 +0200] rev 29477
rebase: move core rebase logic to be a method of the RR class
Kostia Balytskyi <ikostia@fb.com> [Fri, 01 Jul 2016 14:09:53 +0200] rev 29476
rebase: move local variable 'extrafn' to the RR class
Kostia Balytskyi <ikostia@fb.com> [Fri, 01 Jul 2016 14:09:53 +0200] rev 29475
rebase: move local variable 'currentbookmarks' to the RR class
Kostia Balytskyi <ikostia@fb.com> [Fri, 01 Jul 2016 14:09:53 +0200] rev 29474
rebase: make collapsing use explicit logic to decide on the rev to reuse
This code:
for rev in sortedstate:
...
...
newnode = concludenode(repo, rev, p1, rbsrt.external,
commitmsg=commitmsg,
extrafn=extrafn, editor=editor,
keepbranches=rbsrt.keepbranchesf,
date=rbsrt.date)
uses 'rev' variable in 'concludenode' function invocation. It is not
explicitly assigned before, but its value comes as last value or 'rev' in
a for loop, e.g. last element in a 'sortedstate'. IMO this a bad style and it
also makes it hard to refactor the function, so it is better to explicitly
define the value passed to 'concludenode'.
Kostia Balytskyi <ikostia@fb.com> [Fri, 01 Jul 2016 14:09:53 +0200] rev 29473
rebase: move new rebase preparation to be a method of the RR class
This commit moves logic that prepares the execution of a new rebase
operation to be a method of the rebaseruntime class.
Kostia Balytskyi <ikostia@fb.com> [Fri, 01 Jul 2016 14:09:53 +0200] rev 29472
rebase: move abort/continue prep to be a method of the RR class
This commit moves logic that prepares the execution of abort and
continue phases or rebase operation to be a method of the rebaseruntime
class.
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 30 Jun 2016 18:59:53 -0700] rev 29471
hgweb: expose list of per-repo labels to templates
hgweb currently offers limited functionality for "classifying"
repositories. This patch aims to change that.
The web.labels config option list is introduced. Its values
are exposed to the "index" and "summary" templates. Custom
templates can use template features like ifcontains() to e.g.
look for the presence of a specific label and engage specific
behavior. For example, a site operator may wish to assign a
"defunct" label to a repository so the repository is prominently
marked as dead in repository indexes.
Sean Farley <sean@farley.io> [Tue, 21 Jun 2016 14:58:49 -0700] rev 29470
histedit: move autoverb rule to the commit it matches
Inspired by how 'git rebase -i' works, we move the autoverb to the
commit line summary that it matches. We do this by iterating over all
rules and inserting each non-autoverb line into a key in an ordered
dictionary. If we find an autoverb line later, we then search for the
matching key and append it to the list (which is the value of each key
in the dictionary). If we can't find a previous line to move to, then we
leave the rule in the same spot.
Tests have been updated but the diff looks a little messy because we
need to change one of the summary lines so that it will actually move to
a new spot. On top of that, we added -q flags to future some of the
output and needed to change the file it modified so that it wouldn't
cause a conflict.
Sean Farley <sean@farley.io> [Fri, 27 May 2016 14:03:00 -0700] rev 29469
histedit: use _getsummary in ruleeditor
This patch uses our common method instead of duplicating logic.
Sean Farley <sean@farley.io> [Fri, 27 May 2016 14:02:36 -0700] rev 29468
histedit: use _getsummary in torule
This patch uses our common method instead of duplicating logic.
Sean Farley <sean@farley.io> [Fri, 27 May 2016 14:00:12 -0700] rev 29467
histedit: extract common summary code into method
We're going to need to use this code in our autoverb logic so let's
extract it now and save ourselves from code duplication.
Sean Farley <sean@farley.io> [Thu, 26 May 2016 15:43:00 -0700] rev 29466
histedit: remove unneeded initial parameter
Now that the autoverb logic no longer acts on an individual rule line,
we don't need this parameter since we apply our logic just once at the
time of initialization.
Sean Farley <sean@farley.io> [Thu, 26 May 2016 16:46:10 -0700] rev 29465
histedit: move autoverb logic from torule to ruleeditor
This is needed for an upcoming change that will automatically rearrange the
rules based on the commit message. Before this patch, the autoverb logic only
applied to one rule at a time. This moves that logic one step up so that it can
iterate over all the rules and rearrange as needed.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 30 Jun 2016 13:06:19 -0700] rev 29464
treemanifests: actually strip directory manifests
Stripping has only partly worked since 7cbb3a01fa38 (repair: use cg3
for treemanifests, 2016-01-19): the bundle seems to have been created
correctly, but revlog entries in subdirectory revlogs were not
stripped. This meant that e.g. "hg verify" would fail after stripping
in a tree manifest repo.
To find the revisions to strip, we simply iterate over all directories
in the repo (included in store.datafiles()). This is inefficient for
stripping few commits, but efficient for stripping many commits. To
optimize for stripping few commits, we could instead walk the tree
from the root and find modified subdirectories, just like we do in the
changegroup code. I'm leaving that for another day.