Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:50 -0800] rev 27844
with: use context manager in subrepo storeclean
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:50 -0800] rev 27843
with: use context manager in subrepo _cachestorehash
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:50 -0800] rev 27842
with: use context manager in largefiles commit
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:50 -0800] rev 27841
with: use context manager in unshelveabort
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:47 -0800] rev 27840
with: use context manager for wlock in transplant
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:47 -0800] rev 27839
with: use context manager for wlock in shelve stripcmd
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:47 -0800] rev 27838
with: use context manager for lock in continue
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:47 -0800] rev 27837
with: use context manager for wlock in unshelve
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:47 -0800] rev 27836
with: use context manager for wlock in shelve deletecmd
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:47 -0800] rev 27835
with: use context manager for wlock in shelve cleanupcmd
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:47 -0800] rev 27834
with: use context manager for wlock in shelve createcmd
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:47 -0800] rev 27833
with: use context manager for lock in histedit cleanupnode
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:47 -0800] rev 27832
with: use context manager for lock in qimport
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:47 -0800] rev 27831
with: use context manager for wlock in qfold
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:47 -0800] rev 27830
with: use context manager for wlock in qrefresh
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:47 -0800] rev 27829
with: use context manager for wlock in qpop
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:47 -0800] rev 27828
with: use context manager for wlock in qpush
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:47 -0800] rev 27827
with: use context manager for wlock in qnew
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:47 -0800] rev 27826
with: use context manager for wlock in mergeupdate
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27825
with: use context manager for wlock in overridepurge
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27824
with: use context manager for wlock in cmdutilforget
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27823
with: use context manager for wlock in overriderevert
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27822
with: use context manager for wlock in removelargefiles
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27821
with: use context manager for wlock in addlargefiles
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27820
with: use context manager for wlock in updatelfiles
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27819
with: use context manager for wlock in kw_dorecord
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27818
with: use context manager for wlock in kw_copy
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27817
with: use context manager for wlock in kw_amend
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27816
with: use context manager for wlock in keyword demo
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27815
with: use context manager for wlock in _kwfwrite
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27814
with: use context manager for wlock in sign
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27813
with: use context manager for wlock in checklookup
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27812
with: use context manager for wlock in copy
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27811
with: use context manager for wlock in workingctx.undelete
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27810
with: use context manager for wlock in workingctx.forget
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27809
with: use context manager for wlock in workingctx.add
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27808
with: use context manager for wlock in graft
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27807
with: use context manager for wlock in debugsetparents
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27806
with: use context manager for wlock in debugrebuilddirstate
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27805
with: use context manager for wlock in copy
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27804
with: use context manager for wlock in branch
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:46 -0800] rev 27803
with: use context manager for wlock in revert
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:45 -0800] rev 27802
with: use context manager for wlock in remove
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:45 -0800] rev 27801
with: use context manager for wlock in recordinwlock
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:45 -0800] rev 27800
with: use context manager for wlock in _writeactive
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:45 -0800] rev 27799
with: use context manager for wlock in _writerepo
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:50 -0800] rev 27798
sshpeer: make remotelock a context manager
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:45 -0800] rev 27797
lock: turn a lock into a Python context manager
This lets us greatly simply acquire/release cycles.
Code pattern before:
try:
lock = repo.lock()
# zillions of lines of code
finally:
lock.release()
And after:
with repo.lock():
# ...
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:50 -0800] rev 27796
with: use context manager for I/O in changedfiles in patch
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:45 -0800] rev 27795
with: use context manager for file I/O in memusage
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:49 -0800] rev 27794
i18n: don't translate a transaction name
Yuya Nishihara <yuya@tcha.org> [Wed, 23 Dec 2015 22:37:24 +0900] rev 27793
chgserver: mark as a built-in extension
Yuya Nishihara <yuya@tcha.org> [Wed, 23 Dec 2015 22:23:56 +0900] rev 27792
chgserver: import background server extension from cHg
This extension is copied from
https://bitbucket.org/yuja/chg/ -r 86feb5f2e971
It could be imported as mercurial/chgserver.py, but in that case, we would
have to resolve circular import between chgserver and commandserver. So I
decided to keep it as an extension.
chgserver.chgcmdserver -> commandserver.server
commandserver._servicemap -> chgserver.chgunixservice
timeless <timeless@mozdev.org> [Tue, 12 Jan 2016 15:58:59 +0000] rev 27791
check-code: export needs a space to avoid false positives
Laurent Charignon <lcharignon@fb.com> [Thu, 14 Jan 2016 11:50:28 -0800] rev 27790
rebase: small refactoring to allow better extensibility from extensions
Inhibit, one of evolve's extension, would like to change the way rebase works
with obsolete changesets. During a rebase with inhibit, the inhibition of the
obsolescence markers should be lifted for the rebase.
With this small refactoring, inhibit and can wrap the _filterobsoleterevs
function to lift inhibition cleanly and at the same time this change makes
rebases' code more legible.
Danek Duvall <danek.duvall@oracle.com> [Thu, 14 Jan 2016 13:33:08 -0800] rev 27789
tests: non-GNU mv can't move a file onto a hardlink of itself
On Solaris, when you try to mv a file to another path that is a hardlink to
the original, it complains that they're identical. GNU mv doesn't
complain, but it's simpler to just remove the original file instead.
Mathias De Maré <mathias.demare@gmail.com> [Thu, 07 Jan 2016 06:44:37 +0100] rev 27788
buildrpm: move creation of RPM directories from dockerrpm
Handling the creation of the RPM directories in buildrpm
is more consistent and takes care of non-docker builds as well.
Bryan O'Sullivan <bryano@fb.com> [Thu, 14 Jan 2016 10:31:06 -0800] rev 27787
i18n: fix a test-gendoc.t failure
Bryan O'Sullivan <bryano@fb.com> [Thu, 14 Jan 2016 09:31:03 -0800] rev 27786
test-ctxmanager: fix Python 2.6 compatibility problem
Bryan O'Sullivan <bryano@fb.com> [Thu, 14 Jan 2016 09:31:01 -0800] rev 27785
util: rename ctxmanager's __call__ method to enter
Laurent Charignon <lc2817@columbia.edu> [Wed, 13 Jan 2016 21:52:26 -0800] rev 27784
obsolete: make _computeobsoleteset much faster
This patch makes _computeobsoleteset much faster by looping
over the draft and secrets as opposed to looping over the
successors.
This works because "number of draft and secret" is typically
way smaller(<100) than the number of successor in the repo (~90k in
my checkout of core mercurial as of today). And also because
it is very fast to compute "not public()".
I timed the code with the following setup:
"""
from mercurial import hg, ui, obsolete
ui = ui.ui()
repo = hg.repository(ui, "~/hg")
l = repo.obsstore.successors # This caches the result
"""
With about 90k successors.
k=obsolete._computeobsoleteset(repo) before this patch:
10 loops, best of 3: 33.9 ms per loop
k=obsolete._computeobsoleteset(repo) after this patch:
10000 loops, best of 3: 83.3 µs per loop
timeless <timeless@mozdev.org> [Tue, 12 Jan 2016 08:34:38 +0000] rev 27783
check-commit: sort errors by line number
timeless <timeless@mozdev.org> [Tue, 12 Jan 2016 08:50:15 +0000] rev 27782
check-commit: try to fix multiline handling
The old code did not understand the difference between the first line of the summary,
and a random line in the summary that happened to include a #, or a
random line in the changes that happened to include it.
965788d9ae09 is an example where it fails
timeless <timeless@mozdev.org> [Thu, 07 Jan 2016 01:28:59 +0000] rev 27781
check-commit: support REVs as commandline arguments
usage:
* HG_NODE=REV check-commit
* hg export REV | check-commit
* check-commit REV ...
timeless <timeless@mozdev.org> [Thu, 07 Jan 2016 00:55:45 +0000] rev 27780
check-commit: modularize
timeless <timeless@mozdev.org> [Thu, 07 Jan 2016 03:58:40 +0000] rev 27779
check-commit: fix summary length regexp
Bryan O'Sullivan <bryano@fb.com> [Tue, 12 Jan 2016 14:49:35 -0800] rev 27778
util: simplify file I/O functions using context managers
Bryan O'Sullivan <bryano@fb.com> [Tue, 12 Jan 2016 14:49:10 -0800] rev 27777
run-tests: use a context manager for file I/O in TextTestRunner
Bryan O'Sullivan <bryano@fb.com> [Tue, 12 Jan 2016 14:48:27 -0800] rev 27776
bundlerepo: use context manager for file I/O in _writetempbundle
Bryan O'Sullivan <bryano@fb.com> [Tue, 12 Jan 2016 14:47:21 -0800] rev 27775
shelve: use a context manager for file I/O in listcmd
Bryan O'Sullivan <bryano@fb.com> [Tue, 12 Jan 2016 14:31:02 -0800] rev 27774
largefiles: use util.readfile in lfconvert
Bryan O'Sullivan <bryano@fb.com> [Tue, 12 Jan 2016 14:29:57 -0800] rev 27773
run-tests: use a context manager for file I/O
Bryan O'Sullivan <bryano@fb.com> [Tue, 12 Jan 2016 14:29:34 -0800] rev 27772
largefiles: use util.readfile in overrides
Bryan O'Sullivan <bryano@fb.com> [Tue, 12 Jan 2016 14:28:43 -0800] rev 27771
commands: use a context manager for file I/O in debugdiscovery
Bryan O'Sullivan <bryano@fb.com> [Tue, 12 Jan 2016 14:28:16 -0800] rev 27770
check-seclevel: use a context manager for file I/O
Bryan O'Sullivan <bryano@fb.com> [Tue, 12 Jan 2016 14:27:42 -0800] rev 27769
largefiles: use a context manager in _getfile
Bryan O'Sullivan <bryano@fb.com> [Tue, 12 Jan 2016 16:16:19 -0800] rev 27768
util: replace file I/O with readfile
Bryan O'Sullivan <bryano@fb.com> [Tue, 12 Jan 2016 15:57:18 -0800] rev 27767
patchbomb: replace file I/O with util.readfile
Matt Harbison <matt_harbison@yahoo.com> [Sun, 10 Jan 2016 18:15:39 -0500] rev 27766
util: adjust hgcmd() to handle frozen Mercurial on OS X
Previously, 'hg serve -d' was trying to exec the bundled python executable,
which failed with:
Unknown option: --
usage: python [option] ...
Try 'python -h'...
abort: child process failed to start
See the previous patch for details about the content of the various command
variables. Note that unlike the previous patch here an application bundling
Mercurial could set $HG in the environment to get the correct result, there
isn't anything that a bundling application could do to get the correct result
here.
'hg serve -d' now launches under TortoiseHg, and there is a process listed in
the background, but a client process cannot connect to it for some reason, so
more investigation is needed.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 10 Jan 2016 17:56:08 -0500] rev 27765
util: adjust hgexecutable() to handle frozen Mercurial on OS X
sys.executable is "$appbundle/Contents/MacOS/python" when Mercurial is bundled
in a frozen app bundle on OS X, so that isn't appropriate. It appears that this
was only visible for things launched via util.system(), like external hooks,
where $HG was set wrong.
It appears that Mercurial also uses 'sys.modules['__main__'].__file__' (here)
and 'sys.argv[0]' (in platform.gethgcmd()) to figure out the command to spawn.
In both cases, this points to "$appbundle/Contents/Resources/hg", which invokes
the system python since "/usr/bin/env python" is on the shebang line. On my
system with a screwed up python install, I get an error importing the os module
if this script is invoked.
We could take the dirname of sys.executable and join 'hg' instead of this if we
want to be paranoid, but py2app boostrap is setting the environment variable
since 0.1.6 (current version is 0.9), so it seems safe and we might as well use
it.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 10 Jan 2016 17:49:01 -0500] rev 27764
util: adjust 'datapath' to be correct in a frozen OS X package
Apparently unlike py2exe, py2app copies the Mercurial source tree as-is to a
Contents/Resources subdirectory of an app bundle, and places its binary stub in
Contents/MacOS. (The Windows install has the 'hgext' and 'mercurial' modules in
'lib/library.zip', while the help and templates subdirectories have been moved
out of the mercurial directory to the root of the installation. I assume that
the python code living in a zip file is why "py2exe doesn't support __file__".)
Therefore, prior to this change, Mercurial in a frozen app bundle on OS X would
go looking for help *.txt, templates and locale info in Contents/MacOS, where
they don't exist.
There are only a handful of places that test for frozen, and not all of them are
wrong for OS X, so it seems wiser to handle them on a case by case basis, rather
that try to change mainfrozen(). The remaining cases are:
1) util.hgexecutable() wrongly points to the bundled python executable, and
affects $HG in util.system() launched processes (e.g. external hooks)
2) util.hgcmd() wrongly points to the bundled python executable, but it seems
to only affect 'hg serve -d'
3) hook._pythonhook() may be OK, since I didn't see anything outrageous when
printing sys.path from an internal hook. I'm not sure if this special
case is needed on OS X though.
4) sslutil._plainapplepython() is OK, because sys.executable is not
/usr/bin/python, nor is it in /System/Library/Frameworks
timeless <timeless@mozdev.org> [Sun, 10 Jan 2016 08:03:58 +0000] rev 27763
help: add --system flag to get help for various platform(s)
timeless <timeless@mozdev.org> [Sun, 10 Jan 2016 06:21:40 +0000] rev 27762
help: split config user settings file by platform
timeless <timeless@mozdev.org> [Sun, 10 Jan 2016 06:09:10 +0000] rev 27761
help: label windows config help
timeless <timeless@mozdev.org> [Sun, 10 Jan 2016 06:08:41 +0000] rev 27760
help: split out unix/plan9 config help
timeless <timeless@mozdev.org> [Sun, 10 Jan 2016 05:58:02 +0000] rev 27759
help: move config default marking to its own line
timeless <timeless@mozdev.org> [Sun, 10 Jan 2016 05:04:49 +0000] rev 27758
help: split config ui.portablefilenames
Matt Harbison <matt_harbison@yahoo.com> [Tue, 12 Jan 2016 22:40:40 -0500] rev 27757
test-hgignore: add globs for Windows
Matt Mackall <mpm@selenic.com> [Mon, 11 Jan 2016 11:35:28 -0600] rev 27756
tests: run check-commit on secret changes too
Augie Fackler <augie@google.com> [Wed, 13 Jan 2016 14:41:10 -0500] rev 27755
util: don't capture exception with a name since we don't use it
Spotted by pyflakes.
Martin von Zweigbergk <martinvonz@google.com> [Fri, 08 Jan 2016 16:12:58 -0800] rev 27754
changegroup3: move treemanifest support into _unpackmanifests()
By putting the treemanifest code in _unpackmanifests(),
_addchangegroupfiles() will only be about files again, and we get a
nice symmetry between _packmanifests() and _unpackmanifest(). The
immediate benefit to me is that remotefilelog should not need to be
updated to work with treemanifests. It should also make
server.validate and progress output easier to get right. Probably
bundlerepo too.
Martin von Zweigbergk <martinvonz@google.com> [Mon, 11 Jan 2016 15:10:31 -0800] rev 27753
changegroup3: add empty chunk separating directories and files
Remotefilelog overrides changegroup._addchangegroupfiles(), assuming
it is about files, which seems like a natural assumption. However, in
changegroup3, directory manifests are sent in the files section of the
changegroup. These naturally make remotefilelog unhappy.
The fact that the directories are not separated from the files
(although they do come before the files) also makes server.validate
harder to implement. Since we read one chunk at a time from the steam,
once we have found a file (non-directory) entry in the stream, we
would have to push the read data back into the stream, or otherwise
refactor the code. It will be easier if we add an empty chunk after
all directory manifests.
This change adds that empty chunk, although we don't yet take
advantage of it on the reading side. We will soon move the tree
manifest stuff out of _addchangegroupfiles() and into
_unpackmanifests().
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Jan 2016 21:23:45 -0800] rev 27752
changegroup3: introduce experimental.changegroup3 boolean config
In order to give us the freedom to change the changegroup3 format,
let's hide it behind an experimental config. Since it is required by
treemanifests, that will override the cg3 config.
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Jan 2016 21:01:06 -0800] rev 27751
changegroup: hide packermap behind methods
This is to prepare for hiding changegroup3 behind a config option.
Matt Mackall <mpm@selenic.com> [Wed, 13 Jan 2016 15:47:37 -0600] rev 27750
merge with stable
Martin von Zweigbergk <martinvonz@google.com> [Tue, 12 Jan 2016 13:10:31 -0800] rev 27749
context: check for differing flags a little earlier
This makes it clearer that a unchanged file whose flags have changed
will be reported as a modification. Also test this.