Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 29 Jan 2014 09:22:31 -0800] rev 20448
revset: added lazyset implementation to author revset
Performance benchmarking:
$ time hg log -qr "first(author(mpm))"
0:9117c6561b0b
real 0m3.486s
user 0m3.317s
sys 0m0.077s
$ time ./hg log -qr "first(author(mpm))"
0:9117c6561b0b
real 0m0.551s
user 0m0.295s
sys 0m0.072s
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 29 Jan 2014 09:04:03 -0800] rev 20447
revset: added lazyset implementation to keyword revset
Performance benchmarking:
$ time hg log -qr "first(keyword(changeset))"
0:9117c6561b0b
real 0m3.466s
user 0m3.345s
sys 0m0.072s
$ time ./hg log -qr "first(keyword(changeset))"
0:9117c6561b0b
real 0m0.365s
user 0m0.199s
sys 0m0.083s
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 28 Jan 2014 16:19:30 -0800] rev 20446
revset: changed limit revset implementation to work with lazy revsets
Performance benchmarking:
$ time hg log -qr "first(branch(default))"
0:9117c6561b0b
real 0m3.130s
user 0m3.025s
sys 0m0.074s
$ time ./hg log -qr "first(branch(default))"
0:9117c6561b0b
real 0m0.300s
user 0m0.198s
sys 0m0.069s
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 05 Feb 2014 16:12:03 -0800] rev 20445
revset: added lazyset implementation to branch revset
Performance Benchmarking:
$ time hg log -l1 -qr "branch(default)"
0:9117c6561b0b
real 0m3.366s
user 0m3.217s
sys 0m0.095s
$ time ./hg log -l1 -qr "branch(default)"
0:9117c6561b0b
real 0m0.389s
user 0m0.199s
sys 0m0.061s
Simon Heimberg <simohe@besonet.ch> [Tue, 11 Feb 2014 01:15:07 +0100] rev 20444
run-tests: fix typo and print out failing line
Instead of stripping the newline and printing the line, only the newline was
printed.
The output on buildbot will make more sense now.
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 28 Jan 2014 15:19:14 -0800] rev 20443
revset: changed getset so that it can return a lazyset
Not converting it manually to a baseset anymore. At this point every revset
method should return a baseset typed structure.
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Feb 2014 09:00:38 -0800] rev 20442
hgext: updated extensions to return a baseset when adding symbols
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 20:22:43 -0800] rev 20441
push: move phases synchronisation function in its own function
Now that every necessary information is held in the `pushoperation` object, we
can finally extract the phase synchronisation phase to it's own function. This
is the first concrete block of code we extract from the huge push function.
Hooray!
This changeset is pure code movement only.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 20:18:26 -0800] rev 20440
push: move outgoing object in the push object
The set of outgoing and common changeset are used by phases to compute the new
common set between local and remote. So we need to move it into the object to
extract the phase sync from the god function.
Note that this information will be used by obsolescence markers too.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 19:43:28 -0800] rev 20439
push: move push return value in the push object
The return code convey information about the success of changeset push. This is
used by phases to compute the new common set between local and remote. So we
need to move it into the object to extract the phase sync from the god
function.
Note that this information will be used by obsolescence markers too.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 20:10:59 -0800] rev 20438
push: move local phase move in a normal function
We now have the modularity for simpler approach `localphasemove`.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 20:09:21 -0800] rev 20437
push: explicitly feed pushop to localphasemove
Now that pushop is holding all the push related data, we do not really need a
closure anymore. So we start feeding the object to `localphasemove` and will
make it a normal function in the next commit.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 20:00:34 -0800] rev 20436
push: move local lock logic in pushoperation
During push, we try to lock the local repo to move local phase according to what
we saw/pushed on the remote repo. Locking the repo may fail, in that case we let
the push proceed without local phase movement (printing warning).
This mean we have code in phase synchronisation that will check if the local repo is
locked or not. we need to move this information in the push object to be able to
extract the phase synchronisation in its own function. This is done as a boolean
because putting reference to the actual lock outside of the main function
sounded a bad idea.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 19:55:09 -0800] rev 20435
push: move obsolescence related message into _pushobsolescence function
No good reason to have them in the main fonction.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 19:51:21 -0800] rev 20434
push: drop now outdated comment
This `_pushobsolete` now exist for modularity purpose.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 17:56:09 -0800] rev 20433
push: feed pushoperation object to _pushobsolete function
This will allow the obsolete marker synchronisation to have full
information on the ongoing push and pass information to other
operation.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 17:54:47 -0800] rev 20432
push: move obsolescence marker exchange in the exchange module
The obsolescence marker exchange code was already extracted during a previous
cycle. We are moving the extracted functio in this module. This function will
read and write data in the `pushoperation` object and I prefer to have all core
function collaborating through this object in the same place.
This changeset is pure code movement only. Code change for direct consumption of
the `pushoperation` object will come later.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 17:51:41 -0800] rev 20431
push: feed pushoperation object to _pushbookmark function
This will able the bookmark synchronisation to have full information on the
ongoing push and pass information to other operation.
Matt Mackall <mpm@selenic.com> [Mon, 10 Feb 2014 17:31:26 -0600] rev 20430
merge with stable
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 14:29:37 -0800] rev 20429
revset: added operations to duck type baseset
Added more operations which are not lazy but only used so far to duck type
baseset.
Their implementations will be changed in future patches.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 14:25:37 -0800] rev 20428
revset: added basic operations to lazyset
Added methods __add__, __sub__ and __and__ to duck type more methods in
baseset
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 14:19:40 -0800] rev 20427
revset: added lazyset class with basic operations
This class allows us to return values from large revsets as soon as they are
computed instead of having to wait for the entire revset to be calculated.
Simon Heimberg <simohe@besonet.ch> [Sun, 09 Feb 2014 00:26:01 +0100] rev 20426
tests: test that the pid returned by `hg serve` looks reasonable
This failed on windows before win32.spawndetached has been fixed. The process
name was "cmd.exe" and not "hg.exe" or "python.exe".
Simon Heimberg <simohe@besonet.ch> [Sat, 08 Feb 2014 14:35:07 +0100] rev 20425
win32: spawndetached returns pid of detached process and not of cmd.exe
win32.spawndetached starts the detached process by `cmd.exe` (or COMSPEC). The
pid it returned was the one of cmd.exe and not the one of the detached process.
When this pid is used to kill the process, the detached process is not killed,
but only cmd.exe.
With this patch the pid of the detached process is written to the pid file.
Killing the process works as expected.
The pid is only evaluated on writing the pid file. It is unnecessary to search
the pid when it is not needed. And more important, it probably does not yet
exist right after the cmd.exe process was started. When the pid is written to
the file, waiting for the start of the detached process has already happened.
Use this functionality instead of writing a 2nd wait function.
Many tests on windows will not fail anymore, all those with the first failing
line "abort: child process failed to start". (The processes still hanging
around from previous test runs have to be killed first. They still block a
tcp port.)
A good test for the functionality of this patch is test-treediscovery.t,
because it starts and kills `hg serve -d` several times.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 14:57:25 -0800] rev 20424
revset: minor changes adding baseset to revsets
Changed bits of code to work with baseset implementations.
Simon Heimberg <simohe@besonet.ch> [Mon, 10 Feb 2014 22:56:10 +0100] rev 20423
tests: rewrite path in test-shelve.t for not being mangled on msys
msys (on windows) converets '-R bundle:.XX/XX' to '-R bundle:;.XX/XX'. Avoid
this by writing '-R bundle://.XX/XX'. This is used more often than the
alternative work arounds like '-Rbundle://.XX/XX' or '-R bundle:Y/../.XX/XX'.
Brodie Rao <brodie@sf.io> [Mon, 10 Feb 2014 14:51:06 -0800] rev 20422
hooks: only disable/re-enable demandimport when it's already enabled
This fixes an issue introduced in d7c28954d901 where, when disabling
demandimport while running hooks, it's inadvertently re-enabled even when
it was never enabled in the first place.
This doesn't affect normal command line usage of Mercurial; it only matters
when Mercurial is run with demandimport intentionally disabled.
Matt Mackall <mpm@selenic.com> [Sun, 09 Feb 2014 18:36:37 -0600] rev 20421
merge with stable
Mads Kiilerich <madski@unity3d.com> [Fri, 07 Feb 2014 17:29:37 +0100] rev 20420
convert: secret config option for disabling debugsvnlog
Subversion issues involving svn log such as d54467c1a198 can be tricky to
debug when it is run in an 'hg debugsvnlog' sub process. Debugging is simpler
when convert only uses one process.
With this change convert will invoke the svn log directly when setting
[convert]
svn.debugsvnlog = False
This is intentionally not documented.
Mads Kiilerich <madski@unity3d.com> [Fri, 07 Feb 2014 17:28:37 +0100] rev 20419
convert: make subversion revsplit more stable when meeting revisions without @
revsplit would crash for instance if given a subversion string without @ ...
and that could somehow happen when playing around with convert.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 14:57:25 -0800] rev 20418
revset: minor changes adding baseset to revsets
Changed bits of code to work with baseset implementations.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 11:37:16 -0800] rev 20417
revset: added __add__ method to baseset class
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 11:33:36 -0800] rev 20416
revset: added docstring to baseset class
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:43:54 +0100] rev 20415
merge: don't overwrite file untracked after remove, abort with 'untracked files'
Merge could overwrite untracked files and cause data loss.
Instead we now handle the 'local side removed file and has untracked file
instead' case as the 'other side added file that local has untracked' case:
FILE: untracked file exists
abort: untracked files in working directory differ from files in requested revision
It could perhaps make sense to create .orig files when overwriting, either
instead of aborting or when overwriting anyway because of force ... but for now
we stay consistent with similar cases.
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:54:40 +0100] rev 20414
shelve: better (and slightly redundant) test coverage for unshelve conflicts
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:54:27 +0100] rev 20413
shelve: status messages from unshelve
It was hard for the user to know what was going on when unshelving - especially
if the user had to resolve conflicts and thus got to see the intermediate
states.
Seeing that pending changes was gone could scare the user, make him panic, and
do stuff that really made him lose data.
Merging (both when rebasing and with pending changes) also requires some
understanding of where in the process you are and what you are merging.
To help the user we now show a couple of status messages (when relevant):
temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:54:12 +0100] rev 20412
shelve: be quiet when unshelve pulls from the shelve bundle
unshelve was quite verbose and it was hard for a user to follow what really was
going on. It ended up saying 'added 1 changesets' ... but the user just
expected and got pending changes and never saw any changeset.
The use of bundles is an implementation detail that we don't have to leak here.
Pulling is quite verbose, optimized for pulling many changesets from remote
repos - that is not the case here.
Instead, set the quiet flag when pulling the bundle - not only when temporarily
committing pending changes.
The 'finally' restore of ui.quiet is moved to the outer try/finally used for
locking.
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:53:27 +0100] rev 20411
shelve: add 'changes to' prefix to default shelve message
The shelved changes _could_ perhaps be amended to the parent changeset but it
_is_ not the parent changeset. Using the description from the parent changeset
is thus wrong and confusing.
Instead, add a 'changes to' prefix.
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:53:27 +0100] rev 20410
shelve: mention FILE options in help
Shelve do normally take a list of files or patterns to shelve and the command
summary should thus show [FILE]...
Note: --delete is a bit special and interpret the parameters as a list of
shelve names. This change makes that even less obvious from the help. Too bad
- we can't please everyone.
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:53:25 +0100] rev 20409
shelve: mention walk options in help
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:52:56 +0100] rev 20408
shelve: really pass publicancestors to changegroupsubset - not the parents
publicancestors returned the parents of the public ancestors ... and
changegroupsubset used the parents of these as base for the bundle. That gave
bundles with one layer of changesets more than necessary.
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:52:46 +0100] rev 20407
shelve: publicancestors do not have to visit nullrev
Not visiting nullrev seems more correct and might be a minor optimization.
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:52:16 +0100] rev 20406
localrepo: make it clear that changegroupsubset doesn't take bases but roots
changegroupsubset will take the parents of the roots to find the bases.
Other parts of Mercurial do not expect that, and a result of that is that some
bundles contain more changesets than necessary.
No real changes here - just renaming a parameter to document what it is.
Augie Fackler <raf@durin42.com> [Tue, 04 Feb 2014 17:13:45 -0500] rev 20405
repoview: use repo.revs() instead of a private revset method
Breaks an import cycle.
Augie Fackler <raf@durin42.com> [Tue, 04 Feb 2014 14:55:04 -0500] rev 20404
commands: use ctx.getfileset instead of fileset.getfileset
Matt Mackall <mpm@selenic.com> [Sun, 09 Feb 2014 17:31:26 -0600] rev 20403
push: backout 2bc520bd0ce0 due to test failures
Matt Mackall <mpm@selenic.com> [Sun, 09 Feb 2014 17:30:49 -0600] rev 20402
mq: fix qimport url check
Augie Fackler <raf@durin42.com> [Tue, 04 Feb 2014 14:54:42 -0500] rev 20401
match: use ctx.getfileset() instead of fileset.getfileset()
Resolves an import cycle involving match and merge.
Augie Fackler <raf@durin42.com> [Tue, 04 Feb 2014 15:27:49 -0500] rev 20400
context: add a getfileset() method so fewer things need fileset directly
Allows me to break an import cycle in a subsequent change.
Augie Fackler <raf@durin42.com> [Tue, 04 Feb 2014 18:09:20 -0500] rev 20399
fix_bytesmod: fix defects in fix_bytesmod so it produces working code
Prior to this change, the fixer did not always add the py3kcompat
import to files, and did not manage to blacklist itself.
Mads Kiilerich <madski@unity3d.com> [Thu, 06 Feb 2014 02:19:38 +0100] rev 20398
discovery: improve "note: unsynced remote changes!" warning
This note (which actually is a warning) frequently caused confusion.
"unsynced" is not a well established user-facing concept in Mercurial and the
message was not very specific or helpful.
Instead, show a messages like:
remote has heads on branch 'default' that are not known locally: 6c0482d977a3
and show it before aborting on "push creates new remote head". This will also
give more of a hint in the case where the branch has been closed remotely and
'hg heads' thus not would show any new heads after pulling.
A similar (but actually very different) message was addressed in 6b618aa08b6e.
Mads Kiilerich <madski@unity3d.com> [Fri, 07 Feb 2014 17:26:28 +0100] rev 20397
convert: drop unused getheads from sinks
Simon Heimberg <simohe@besonet.ch> [Sat, 08 Feb 2014 10:41:17 +0100] rev 20396
tests: on windows, run command explicitly in sh for working command substitution
On windows, os.system runs the command in cmd.exe, which does not know command
substitution. To let this work, run the command explicitly in sh.
This fixes the failure of this test on windows.
Simon Heimberg <simohe@besonet.ch> [Tue, 28 Jan 2014 00:33:52 +0100] rev 20395
tests: test-module-imports.t works on windows (with backslash path sep)
Transform the backslashes to slashes on windows, because they are eaten up by
the shell. (Similar as done in test-check-pyflakes.t.)
This test will not produce a traceback on windows anymore. But the test still
fails because the detected mixed imports differ.
Matt Mackall <mpm@selenic.com> [Fri, 07 Feb 2014 17:54:10 -0600] rev 20394
qimport: allow importing URLs
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Feb 2014 15:01:33 -0800] rev 20393
revset: fixed bug where revset returning order was being changed
Some revsets were innecesarily turning the subset into a set before iterating
over it. This led to returning order changing in some cases.
Augie Fackler <raf@durin42.com> [Mon, 03 Feb 2014 18:36:00 -0500] rev 20392
itersubrepos: move to scmutil to break a direct import cycle
Mads Kiilerich <madski@unity3d.com> [Fri, 07 Feb 2014 02:59:46 +0100] rev 20391
import-checker: handle standard modules with arch in the filename
Installations with module names like
/usr/lib/python2.7/lib-dynload/bz2.x86_64-linux-gnu.so occurs in the wild.
Let's just ignore everything after first '.' when guessing the Python module
name.
Simon Heimberg <simohe@besonet.ch> [Mon, 03 Feb 2014 20:08:58 +0100] rev 20390
tests: use ls instead of find, all files are in the same directory
In this case find has no advantage compared to ls. Descending into directories
is unnecessary, because there are none.
Simon Heimberg <simohe@besonet.ch> [Mon, 27 Jan 2014 11:17:07 +0100] rev 20389
commands: hg debuginstall checks missing templates (issue4151)
Missing templates where not reported as a problem, only an empty bracket
were shown as indication of no found template directory:
$ hg debuginstall
*...some lines*
checking templates ()...
*...some lines*
no problems detected
Now the problem is reported and extended with some information. The style
of the messages is adapted to the other messages of debuginstall.
When no templates directories exist, it writes:
$ hg debuginstall
*...some lines*
checking templates ()...
no template directories found
(templates seem to have been installed incorrectly)
*...some lines*
1 problems detected, please check your install!
When the template map is not found, it writes:
$ hg debuginstall
*...some lines*
checking templates (/path/to/mercurial/templates)...
template 'default' not found
(templates seem to have been installed incorrectly)
*...some lines*
1 problems detected, please check your install!
When the template map is buggy the message is the same as before. The error
message is shown before the line "(templates seem ...)".
No test is added because testing this failure is complicated. It would
require to modify the templates directory of the mercurial installation,
or to monkey patch a function (os.listdir or any from mercurial.templater)
by a test extension.
Mads Kiilerich <mads@kiilerich.com> [Sun, 10 Feb 2013 00:11:45 +0100] rev 20388
contrib/Makefile.python: build local Python from source
This provides an easy way to install new or old Python versions on Unixish
systems. It is mainly intended for testing Mercurial with different Python
versions.
Example:
$ cd build
$ make -f ../contrib/Makefile.python python PYTHONVER=2.4 PREFIX=/tmp/p24
$ /tmp/p24/bin/python -V
Python 2.4
Tested on Fedora, Debian and Ubuntu with Python versions from 2.4 to 2.7.6.
Most Python versions need some workarounds to compile on Debian-ish systems.
The workarounds do not do any significant harm on Fedora.
Mads Kiilerich <madski@unity3d.com> [Wed, 05 Feb 2014 01:45:59 +0100] rev 20387
tests: use small conditional section for tic requirement in test-status-color.t
Better test coverage when curses not is available.
Mads Kiilerich <madski@unity3d.com> [Wed, 05 Feb 2014 01:43:51 +0100] rev 20386
import-checker: show stdlib and relative imports separately
Make the output more useful for debugging problems.
Mads Kiilerich <madski@unity3d.com> [Wed, 05 Feb 2014 01:41:36 +0100] rev 20385
tests: improved test coverage for HTTP authentication and 401 responses
Dump the access log to verify that the client gets the 401s it deserves and
handles them correctly. This establishes a baseline for Basic authentication
protocol.
Mads Kiilerich <madski@unity3d.com> [Wed, 05 Feb 2014 01:37:37 +0100] rev 20384
tests: ignore http tests that are known wontfix failures on python 2.4
As mentioned on http://bz.selenic.com/show_bug.cgi?id=2739#c17 , b3083042bdda
left test-http.t failing on Python < 2.4.3. That has not been noticed because
most 2.4 testing has been done with a patched 2.4.2.
This makes sure that the tests only are run for Python >= 2.4.3. That makes it
possible to verify that everything else works with Python 2.4.
Mads Kiilerich <madski@unity3d.com> [Wed, 05 Feb 2014 01:30:33 +0100] rev 20383
import-checker: fix names of dynamically loaded modules
The import checker found standard library modules such as
lib-dynload/zlibmodule.so but saw that as a 'zlibmodule' module, not as the
'zlib' module.
Debian ships Python with most modules built-in and this incorrect handling of
dynamic modules did thus not cause problems on that platform.
Fedora ships Python with as many modules as possible loaded dynamically. That
made the import checker tests fail with incorrect classification of the
following modules: array fcntl grp itertools time zlib.
This change makes test-module-imports.t pass on Fedora.
Simon Heimberg <simohe@besonet.ch> [Tue, 28 Jan 2014 02:23:48 +0100] rev 20382
tests: for consistent output flush between writing sterr and stdout
Because stdout and stderr are buffered, the order of the output is other way
around on some systems.
Mads Kiilerich <madski@unity3d.com> [Thu, 06 Feb 2014 02:17:48 +0100] rev 20381
discovery: cleanup of variable names and comments
Mads Kiilerich <madski@unity3d.com> [Thu, 06 Feb 2014 01:55:09 +0100] rev 20380
localrepo: give a sigh of relief when getting lock after waiting for it
A message like this was sometimes shown when pushing:
remote: waiting for lock on repository foo held by 'mercurial:20858'
That could scare users, making them wonder whether the push actually succeeded.
To mitigate that fear, issue an additional "warning" such as:
got lock after 2 seconds
The return value from lock.lock.lock() was unused - instead we return the
delay.
This also adds the first test coverage for waiting for locks.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 22 Jan 2014 15:43:21 -0600] rev 20379
convert: add tagmap option
Tests have been updated.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 22 Jan 2014 15:40:17 -0600] rev 20378
convert: add tagmap logic
Previously, there was no way to rewrite tags on the fly while converting. Now,
we add similar logic to branchmap to provide a way to map old tags to new tags.
Currently, this is not enabled since there is not yet a command-line option.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 22 Jan 2014 15:31:24 -0600] rev 20377
convert: avoid updating tags when there is nothing new
Previously, when converting from a mercurial repo there would be an extraneous
commit at the end of the convert process that would rewrite tags. Now, we check
if there are any new tags before doing this rewriting.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 22 Jan 2014 17:38:05 -0600] rev 20376
convert: compare tags from all heads instead of just one
Previously, the hg sink for puttags would just use one head for getting the old
tags which would sometimes lead to tags disappearing. Now, we iterate over all
heads and merge the results.
Sean Farley <sean.michael.farley@gmail.com> [Tue, 21 Jan 2014 11:35:17 -0600] rev 20375
convert: add closemap option
Tests have been updated.
Sean Farley <sean.michael.farley@gmail.com> [Tue, 21 Jan 2014 11:20:14 -0600] rev 20374
convert: add parseclosemap method
This is a copy of the parsesplicemap method and will serve as a way to specify
which changesets to close while converting.
Sean Farley <sean.michael.farley@gmail.com> [Tue, 21 Jan 2014 11:34:55 -0600] rev 20373
convert: add mapname parameter to checkrevformat
Upcoming patches will add new map files so we change the calling sequence of
checkrevformat so that error messages will let the user know which file has the
wrong rev format.
Sean Farley <sean.michael.farley@gmail.com> [Thu, 18 Apr 2013 10:05:50 -0500] rev 20372
convert: replace old sha1s in the description
This is a simple find-and-replace strategy for matching anything in the
old description of a converted commit and, if that matched sha1 exists
in the mapping, replacing it with the new sha1.
In particular, this is helpful for descriptions that contain tags with
messages such as, "Added tag 1.0 for commit abcde1234567" which will now
be automatically converted.
Tests have been updated accordingly.
Durham Goode <durham@fb.com> [Wed, 05 Feb 2014 20:22:28 -0800] rev 20371
template: fix shortest(node) function in pure mercurial
Pure mercurial (i.e. without c extensions) does not support partialmatch() on
the revlog index, so we must fall back to use revlog._partialmatch() to handle
that case for us. The tests caught this.
We don't use revlog._partialmatch() for the normal case because it performs a
very expensive index iteration when the string being tested fails to find a
unique result via index.partialmatch(). It does this in order to filter
out hidden revs in hopes of the string being unique amongst non-hidden revs.
For the shortest(node) case, we'd prefer performance over worrying about
hidden revs.
Durham Goode <durham@fb.com> [Fri, 17 Jan 2014 00:16:48 -0800] rev 20370
template: add pad function for padding output
Adds a pad template function with the following signature:
pad(text, width, fillchar=' ', right=False)
This uses the standard python ljust and rjust functions to produce a string
that is at least a certain width. This is useful for aligning variable length
strings in log output (like user names or shortest(node) output).
Durham Goode <durham@fb.com> [Fri, 17 Jan 2014 00:10:37 -0800] rev 20369
template: add shortest(node) template function
Adds a '{shortest(node)}' template function that results in the shortest hex node
that uniquely identifies the changeset at that time. The minimum length can be
specified as an optional second argument and defaults to 4.
This is useful for producing prettier log output, like so:
@ durham shortestnode
| 77cf template: add pad function for padding output
|
o durham
| b183 template: add shortestnode keyword
|
o pierre-yves @
| 6545 backout: add a message after backout that need manual commit
|
| o durham manifestcache
|/ 93f0 manifest cache
|
| o durham catperf
| | c765 cat: increase perf when catting single files
| |
| o durham
|/ 9c53 changectx: increase perf of walk function
|
Matt Mackall <mpm@selenic.com> [Wed, 05 Feb 2014 18:09:07 -0600] rev 20368
merge with stable
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 24 Jan 2014 16:57:44 -0800] rev 20367
revset: added intersection to baseset class
Added the method __and__ to the baseset class to be able to intersect with
other objects in a more efficient way.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 23 Jan 2014 14:20:58 -0800] rev 20366
revset: added substraction to baseset class
Added __sub__ method to the baseset class to be able to compare it with other
subsets more efficiently.
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 22 Jan 2014 10:46:02 -0800] rev 20365
revset: implemented set caching for revset evaluation
Added set caching to the baseset class. It lazily builds the set whenever it's
needed and keeps a reference which is returned when the set is requested
instead of being built again.
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 21 Jan 2014 11:39:26 -0800] rev 20364
revset: added baseset class (still empty) to improve revset performance
This class is going to be used to cache the set that is created from this list
in many cases while evaluating a revset.
Simon Heimberg <simohe@besonet.ch> [Mon, 03 Feb 2014 21:34:13 +0100] rev 20363
i18n: leave out entries which contain only rst syntax
This prevents the danger of translating entries like the following ones:
.. container:: verbose
.. input:: filename1.txt
Simon Heimberg <simohe@besonet.ch> [Mon, 03 Feb 2014 21:33:48 +0100] rev 20362
i18n: leave out entries which contain only a rst directive
This prevents the danger of translating entries like ".. note::"
Simon Heimberg <simohe@besonet.ch> [Sun, 17 Nov 2013 20:24:33 +0100] rev 20361
i18n: posplit removes the entry "::" from the pot file
We do not gain anything by allowing to translate it.
Simon Heimberg <simohe@besonet.ch> [Wed, 29 Jan 2014 16:47:00 +0100] rev 20360
i18n-de: update po file for showing the effect of changed posplit
Simon Heimberg <simohe@besonet.ch> [Mon, 03 Feb 2014 21:31:35 +0100] rev 20359
i18n: posplit writes a warning for translators before rst directives
rst directives like this one have been translated:
.. note::
To help the translator include a comment before such messages.
An entry containing a rst directive now looks like this:
#. do not translate: .. note::
#: path/to/file:75
msgid = ".. note:: to think about"
msgstr = ...
Simon Heimberg <simohe@besonet.ch> [Sun, 17 Nov 2013 20:16:14 +0100] rev 20358
Makefile: hg.pot depends on the scripts generating it
This is convenient when editing this scripts. And translators will get updated
translation files even if nothing else has changed.
Matt Mackall <mpm@selenic.com> [Wed, 05 Feb 2014 17:23:35 -0600] rev 20357
hgweb: hack around mimetypes encoding thinko (issue4160)
A correct patch for this has existed in Python's BTS for 3 years
(http://bugs.python.org/issue9291), so waiting for it to be fixed
upstream is probably not a viable strategy. Instead, we add this
horrible hack to workaround the issue in existing copies of Python
2.4-2.7.
Matt Mackall <mpm@selenic.com> [Mon, 03 Feb 2014 18:09:08 -0600] rev 20356
merge with stable
Siddharth Agarwal <sid0@fb.com> [Mon, 03 Feb 2014 14:36:20 -0800] rev 20355
hg: note that islocal only accepts paths pointing to repos
hg.islocal doesn't work for paths pointing to non-repos, such as patch files.
Siddharth Agarwal <sid0@fb.com> [Mon, 03 Feb 2014 14:53:44 -0800] rev 20354
hg.openpath: use url.islocal to tell if the path is local (issue3624)
Previously we used hg.islocal, which doesn't work for paths pointing to
non-repos, such as patch files.
Siddharth Agarwal <sid0@fb.com> [Mon, 03 Feb 2014 14:47:41 -0800] rev 20353
util.url: add an 'islocal' method
This returns True if the URL represents a path that can be opened locally,
without needing to go through the entire URL open mechanism.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 17:46:51 -0800] rev 20352
push: move bookmarks exchange in the exchange module
The bookmark exchange code was already extracted during a previous cycle. This
changesets moves the extracted function in this module. This function will read
and write data in the `pushoperation` object and It is preferable to have all
core function collaborating through this object in the same place.
This changeset is pure code movement only. Code change for direct consumption of
the `pushoperation` object will come later.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 17:08:29 -0800] rev 20351
push: move `newbranch` argument into the push object
One more step toward a more modular push function.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 17:04:23 -0800] rev 20350
push: move `revs` argument into the push object
One more step toward a more modular push function.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 16:59:25 -0800] rev 20349
push: move `force` argument into the push object
One more step toward a more modular push function.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 16:57:01 -0800] rev 20348
push: move `remote` argument in the push object
One more step toward a more modular push function.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 16:46:30 -0800] rev 20347
push: ease access to current ui object
The `pushoperation.repo.ui` attribute is very commonly used. we offer a faster way
to access it directly through the push operation object.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 16:43:11 -0800] rev 20346
push: introduce a pushoperation object
This object will hold all data and state gathered through the push. This will
allow us to split the long function into multiple small one. Smaller function
will be easier to maintains and wrap. The idea is to blindly store all
information related to the push in this object so that each step and extension
can use them if necessary.
We start by putting the `repo` variable in the object. More migration in other
changeset.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 15:34:01 -0800] rev 20345
exchange: extract push function from localrepo
The localrepo class if far too big. Push and pull logic will be extracted and
reworked to better fit with the fact they now exchange more than plain changeset
bundle.
This changeset extract the push code. later changeset will slowly slice this
over 200 hundred lines and 8 indentation level function into smaller saner
brick.
The localrepo.push method is kept for now to limit impact on user code. But it
will be ultimately removed, now that the public supposed API is hold by peer.
Matt Mackall <mpm@selenic.com> [Mon, 03 Feb 2014 16:33:21 -0600] rev 20344
merge with stable
Matt Mackall <mpm@selenic.com> [Sat, 01 Feb 2014 15:20:49 -0600] rev 20343
Added signature for changeset 3cec5134e9c4
Matt Mackall <mpm@selenic.com> [Sat, 01 Feb 2014 15:20:35 -0600] rev 20342
Added tag 2.9 for changeset 3cec5134e9c4
Matt Mackall <mpm@selenic.com> [Sat, 01 Feb 2014 14:53:52 -0600] rev 20341
merge with i18n
Wagner Bruna <wbruna@softwareexpress.com.br> [Fri, 31 Jan 2014 15:25:31 -0200] rev 20340
i18n-pt_BR: synchronized with a29f3a15bd8b
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 31 Jan 2014 16:27:26 +0900] rev 20339
i18n-ja: change translation to fix test-gendoc.t failure with old docutils
Before this patch, "ja.po" translation causes test-gendoc.t failure
with old docutils: It fails with docutils 0.7, but not with 0.11.
Simon Heimberg <simohe@besonet.ch> [Thu, 30 Jan 2014 23:34:18 +0100] rev 20338
i18n-de: update many fuzzy entries and translate some simple ones
I mainly did the simple cases, like removing ".. note::", changing single
quotes to double quotes and adapting underlining.
Unhelpful msgstr in fuzzy entries are removed. (They were suggestions by the
program msgmerge.)
Simon Heimberg <simohe@besonet.ch> [Wed, 22 Jan 2014 16:32:53 +0100] rev 20337
i18n-de: updated po file with 427d672c0e4e
Do this in a separate patch for easier reviewing of the translation patch.
Simon Heimberg <simohe@besonet.ch> [Wed, 22 Jan 2014 16:32:52 +0100] rev 20336
i18n-de: remove locations
Strip the locations by running msgcat [1] as the wiki [2] tells to do. Do
this in a separate patch for getting a smaller one when updating from hg.pot.
[1] msgcat --no-location -o de.po de.po
[2] mercurial.selenic.com/wiki/TranslatingMercurial#Updating_a_Translation
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 31 Jan 2014 15:13:15 -0800] rev 20335
rebase: do not crash in panic when cwd disapear in the process (issue4121)
Before this patch rebase crashed badly when it happend. (not abort, crash).
Fix courtesy of Matt Mackall.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 31 Jan 2014 14:52:53 -0800] rev 20334
record: use absolute path instead of os.chdir
Record was changing the current directory to `repo.root` in order to be able to
feed `command.commit` file name relative to this `repo.root`. This is a bit
overkill and prevent an incoming fix to rebase. This would also break
multi-threaded usage.
Instead we just feed `command.commit` with absolute path name. works as well as
before but without chdir.
Angel Ezquerra <angel.ezquerra@gmail.com> [Wed, 29 Jan 2014 15:16:36 +0100] rev 20333
help: improve description of phases.checksubrepos setting
The existing description was a bit hard to understand.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 11:52:38 -0800] rev 20332
clone: do not turn hidden changeset public on publishing clone (issue3935)
Before this changeset local clone of a repo with hidden changeset would include
then in the clone (why not) and turn them public (plain wrong). This happened
because the copy clone publish by dropping the phaseroot file entirely making
everything in the repo public (and therefore immune to obsolescence marker).
This changeset takes the simplest fix, we deny the copy clone in the case of hidden
changeset falling back to pull clone that will exclude them from the clone and
therefore not turning them public.
A smarter version of copy clone could be done, but I prefer to go for the
simplest solution first.
lstewart [Tue, 28 Jan 2014 14:00:23 +1100] rev 20331
convert: use branchmap to change default branch in destination (issue3469)
The fix for issue2653 broke the ability to map the default branch of a source
repository to a non-default named branch in the destination repository. Leave
the default behaviour as is, but allow the branch name "None" to be used to map
to a non-default named branch in the destination repository.
Julien Cristau <julien.cristau@logilab.fr> [Mon, 27 Jan 2014 10:57:20 +0100] rev 20330
dispatch: take --hidden from individual commands into account
The command server would otherwise ignore that option, since the repo
object is only created once.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 30 Jan 2014 15:03:36 +0900] rev 20329
doc: fix mistake about matching against directories in "pattern.txt"
This fixes mistake of documentation about matching against directories
in "pattern.txt" introduced by 50db996bccaf.
".hgignore" treats specified "glob:" pattern as same as one specified
for "-X" option: it can match against directories, too.
For reference, extra regexp string appended to specified pattern for
each types are listed below: see also "match.match()" and
"match._regex()" for detail.
============= ========== ===============
type cmdline -I/-X
============= ========== ===============
glob/relglob '$' '(?:/|$)'
path/relpath '(?:/|$)' '(?:/|$)'
re/relre (none) (none)
============= ========== ===============
Appending '$' means that the specified pattern should match against
only files.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 29 Jan 2014 23:47:54 +0900] rev 20328
dispatch: make "_checkshellalias()" invoke "findcmd()" with "strict=True"
Before this patch, shell alias may be executed by abbreviated command
name unexpectedly, even if abbreviated command name matches also
against the command provided by extension.
For example, "rebate" shell alias is executed by "hg reba", even if
rebase extension (= "rebase" command) is enabled. In this case, "hg
reba" should be aborted because of command name ambiguity.
This patch makes "_checkshellalias()" invoke "cmdutil.findcmd()"
always with "strict=True" (default value).
If abbreviated command name matches against only one shell alias even
after loading extensions, such shell alias will be executed via
"_parse()".
This patch doesn't remove "_checkshellalias()" invocation itself,
because it may prevent shell alias from loading extensions uselessly.
Matt Mackall <mpm@selenic.com> [Thu, 30 Jan 2014 13:56:56 -0600] rev 20327
rebase: abort cleanly when we encounter a damaged rebasestate (issue4155)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 30 Jan 2014 17:09:13 +0900] rev 20326
i18n-ja: change phrasing for "or"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 29 Jan 2014 22:14:41 +0900] rev 20325
i18n-ja: fix some quoting problems for space character usage
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 29 Jan 2014 21:38:10 +0900] rev 20324
i18n-ja: synchronized with f493c2f67430
Simon Heimberg <simohe@besonet.ch> [Wed, 22 Jan 2014 16:47:05 +0100] rev 20323
i18n: fix non-matching 1st line indentations
When generating documentation, indentation must match for getting the same
view for translated messages. Often an output is generated anyway, but it
can look different. When a syntactically wrong indentation change is done,
runrst will fail (this is detected by test-gendoc.t).
Fix the simple places. When translation knowledge is necessary, the entry is
marked as fuzzy (and therefore skipped when generating translations). A
translator can fix it later.
Simon Heimberg <simohe@besonet.ch> [Wed, 22 Jan 2014 16:35:10 +0100] rev 20322
i18n: fix some non matching quotation marks in translations
A test for this is in preparation.
Simon Heimberg <simohe@besonet.ch> [Wed, 22 Jan 2014 16:34:36 +0100] rev 20321
i18n: do not translate rst syntax .. note::
.. note:: is rst syntax which must not be translated. Fix this in the
translations.
This is not the first time this happens, so there should be a note for the
translator. A later patch will change the generation of the po files to
write this automatically.
A test in i18n/check-translation.py could help as well.
Leonardo Bueno Postacchini <notivago@gmail.com> [Mon, 27 Jan 2014 16:34:00 -0200] rev 20320
i18n-pt_BR: synchronized with 268a5ab5c27b
Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 24 Nov 2013 02:17:17 +0100] rev 20319
subrepo: make it possible to update to hidden subrepo revisions
When a subrepo revision was hidden it was considered missing and mercurial was
unable to update to the corresponding parent revision. Instead warn the user of
the problem and let it choose what to do (the default is to udpate anyway).
Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 24 Nov 2013 02:13:00 +0100] rev 20318
subrepo: remove unnecessary else clause in hgsubrepo._get
This revision has no behaviour change. It simply removes an unnecessary else
that follows an if / return block. The change looks big because a big chunk of
code has been unindented one level.
Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 24 Nov 2013 02:10:14 +0100] rev 20317
subrepo: do not try to get hidden revisions
If a subrepo revision is hidden (because it was amended, for example) it does
not make sense to try to "get" it from the remote subrepository.
Note that in order to avoid making the change look bigger than it is, this adds
an unnecessary else clause. This will be removed on a follow up patch.
David Soria Parra <davidsp@fb.com> [Thu, 23 Jan 2014 19:08:26 +0100] rev 20316
parsers: fix 'unsigned expression is always true' warning (issue4142)
On Mac OS gcc-llvm throws an -Wtautological-compare warning because flen
is defined as an unsigned integer, therefore flen < 0 is always true.
Steve Borho <steve@borho.org> [Thu, 23 Jan 2014 14:06:15 -0600] rev 20315
wix: pull in new templates
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 28 Jan 2013 15:16:49 +0100] rev 20314
phase: properly compute ancestors of --rev on push (issue3786)
Now that discovery is working on unfiltered changeset, I had a good occasion to
look at that bug again. This let me realise that a trivial node vs rev
comparision was the cause of this two years old bugs…
Happy second birthday phases!
Simon Heimberg <simohe@besonet.ch> [Thu, 23 Jan 2014 01:21:08 +0100] rev 20313
hgext: fix one typo in rebase
Simon Heimberg <simohe@besonet.ch> [Thu, 23 Jan 2014 01:29:50 +0100] rev 20312
templater: selecting a style with no templates does not crash (issue4140)
Running `hg log --style compact` (or any other style) raised a traceback when
no template directory was there. Now there is a message:
Abort: style 'compact' not found
(available styles: no templates found, try `hg debuginstall` for more info)
There is no test because this would require to rename the template directory.
But this would influence other tests running in parallel. And when the test
would be aborted the wrong named directory would remain, especially a problem
when running with -l.
Matt Mackall <mpm@selenic.com> [Thu, 23 Jan 2014 14:31:05 -0600] rev 20311
makefile: add $ to environment variables in help message
Matt Mackall <mpm@selenic.com> [Tue, 21 Jan 2014 14:44:40 -0600] rev 20310
Added signature for changeset 8862469e16f9
Matt Mackall <mpm@selenic.com> [Tue, 21 Jan 2014 14:44:29 -0600] rev 20309
Added tag 2.9-rc for changeset 8862469e16f9
Matt Mackall <mpm@selenic.com> [Tue, 21 Jan 2014 14:44:01 -0600] rev 20308
merge with i18n
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 20 Jan 2014 11:16:26 -0200] rev 20307
i18n: fix trailing '::' on translated messages
Reported by FUJIWARA Katsunori <foozy@lares.dti.ne.jp>.
Matt Mackall <mpm@selenic.com> [Tue, 21 Jan 2014 14:30:06 -0600] rev 20306
merge default into stable for 2.9 code freeze
Mads Kiilerich <madski@unity3d.com> [Mon, 20 Jan 2014 01:29:54 +0100] rev 20305
tests: stop tracking tests/gpg/random_seed
test-gpg.t left the random_seed file as modified. That was slightly confusing
... and it was accidentally changed in ea4996754d91.
The seed is created on demand and there is no reason to track it. There is also
no reason to leak state between test runs so we let the test clean up after
running.
Mads Kiilerich <madski@unity3d.com> [Mon, 20 Jan 2014 01:29:54 +0100] rev 20304
tests: 'hghave tic' also requires curses support in Python
test-status-color.t would fail when using a Python without curses.
Matt Mackall <mpm@selenic.com> [Mon, 20 Jan 2014 17:09:20 -0600] rev 20303
test-import-merge: mangle file in binary mode
This should fix a test breakage on Windows.
Matt Mackall <mpm@selenic.com> [Sun, 19 Jan 2014 22:58:33 -0600] rev 20302
localrepo: drop dead comment
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 16 Jan 2014 15:05:03 -0500] rev 20301
record: re-enable whitespace-ignoring options
It looks like somewhere down the line, patch.diffopts changed the
names of the options that it recognises, but record.recordfunc wasn't
updated to the new names. Instead of trying to write down names at
all, we now use whatever names are provided in commands.diffwsopts and
pass that along to patch.diffopts, along with a couple of custom
options
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 16 Jan 2014 14:57:52 -0500] rev 20300
record: use commands.diffwsopts instead of ad-hoc diffopts
The record extension is writing its own version of commands.diffwsopts
which is identical to commands.diffwsopts. Based on the principle that
code duplication increases maintenance burden, this patch removes
record's ad-hoc diffopts in favour of commands.diffwsopts
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 17 Nov 2013 11:30:17 -0500] rev 20299
phases: add a formal note that hash of secret changeset may leak out
For technical reason (discovery, obsolescence marker) the hash of secret
changeset are communicated outside of your repo. We clarifie that in the help so
that people does not used hash of secret changeset as nuclear launch code.
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:54:41 -0500] rev 20298
largefiles: stylistic cleanup of filemerge
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20297
largefiles: show hashes before prompting for conflict resolution
The largefile hashes are mostly an implementation detail, but they are "leaked"
in several places anyway, and showing the hashes is better than not giving the
user any information about the options in the prompt.
The hashes are long, but it is largefile hashes and it would thus be confusing
to shorten them.
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20296
largefiles: don't try to explain rename history before prompt for conflicts
Before it tried to explain the exact situation when merging moved largefiles.
That do not happen for normal merges and is not more relevant for largefiles
than for normal files. It is unneeded complexity - remove it.
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20295
largefiles: drop redundant special handling of merges of renames
It is unclear what cases this was supposed to cover but it do no longer seem
relevant.
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20294
diff: search beyond ancestor when detecting renames
This removes an optimization that was introduced in 91eb4512edd0 but was too
aggressive - as indicated by how it changed test-mq-merge.t .
We are walking filelogs to find copy sources and we can thus not be sure to hit
the base revision and find the renamed file there - it could also be in the
first ancestor of the base ... in the filelog.
We are walking the filelog and can thus not easily know when we hit the first
ancestor of the base revision and which filename to look for there. Instead, we
use _findlimit like mergecopies do: The lower bound for how far we have to go
is found from the lowest changelog revision that is an ancestor of only one of
the compared revisions. Any filelog ancestor with a revision number lower than
that revision will be the ancestor of both compared revisions, and there is
thus no reason to go further back than that.
Durham Goode <durham@fb.com> [Tue, 14 Jan 2014 13:38:16 -0800] rev 20293
cat: increase perf when catting single files
Special case the single file case in hg cat. This allows us to avoid
parsing the manifest, which shaves 15% off hg cat perf. This is worth
it, since automation often uses hg cat for retrieving single files.
Durham Goode <durham@fb.com> [Tue, 14 Jan 2014 13:49:19 -0800] rev 20292
changectx: increase perf of walk function
When running 'hg cat -r . <file>' it was doing an expensive ctx.walk(m) which
applied the regex to every file in the manifest.
This changes changectx.walk to iterate over just the files in the regex, if no
other patterns are specified. This cuts hg cat time by 50% in our repo and
probably benefits a few other commands as well.
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 15 Jan 2014 16:46:20 -0800] rev 20291
url: added authuri when login information is requested (issue3209)
When users are using a revset they can get multiple password prompts.
This prompts have no extra information about which password is being requested
so I added the authuri to the prompt to make it recognizable.
As in:
$ hg log -r "outgoing('https://bitbucket.org/mg/test') -
outgoing('https://bitbucket.org/nesneros/test')"
http authorization required
realm: Bitbucket.org HTTP
user: interrupted!
I changed it to describe the url when prompting for password.
As in:
$ hg log -r "outgoing('https://bitbucket.org/mg/test') -
outgoing('https://bitbucket.org/nesneros/test')"
http authorization required for https://bitbucket.org/mg/test
realm: Bitbucket.org HTTP
user: interrupted!
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 17 Jan 2014 23:55:11 +0900] rev 20290
doc: add description about pattern matching against directories
Before this patch, there is no explicit description about pattern
matching against directories, even though users may understand it from
"plain examples" in "hg help patterns".
This patch adds description about pattern matching against
directories.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 17 Jan 2014 23:55:11 +0900] rev 20289
revset: add explanation about the pattern without explicit kind
Before this patch, online help of "adds()", "contains()", "filelog()",
"file()", "modifies()" and "removes()" predicates doesn't explain
about how the pattern without explicit kind like "glob:" is treated,
even though each predicates treat it differently:
- as "relpath:" by "adds()", "modifies()" and "removes()"
- as "glob:" by "file()"
- as special by "contains()" and "filelog()"
- be relative to cwd, and
- match against a file exactly
("relpath:" matches also against a directory)
This may confuse users.
This patch adds explanation about the pattern without explicit kind
to these predicates.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 17 Jan 2014 23:55:03 +0900] rev 20288
revset: use "canonpath()" for "filelog()" pattern without explicit kind
Before this patch, revset predicate "filelog()" uses "match.files()"
to get filename also for the pattern without explicit kind.
But in such case, only canonicalization of relative path is required,
and other initializations of "match" object including regexp
compilation are meaningless.
This patch uses "pathutil.canonpath()" directly for "filelog()"
pattern without explicit kind like "glob:", for efficiency.
This patch also does below as a part of introducing "canonpath()":
- move location of "matchmod.match()" invocation, because "m" is no
more used in "if not matchmod.patkind(pat)" code path
- omit passing "default" argument to "matchmod.match()", because
"pat" should have explicit kind of pattern in this code path
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 17 Jan 2014 23:42:12 +0900] rev 20287
revset: avoid loop for "match.files()" having always one element for efficiency
This patch avoids the loop for "match.files()" having always one
element in revset predicate "filelog()" for efficiency: "match" object
"m" is constructed with "[pat]" as "patterns" argument.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 17 Jan 2014 23:42:12 +0900] rev 20286
revset: make default kind of pattern for "contains()" rooted at cwd
Before this patch, default kind of pattern for revset predicate
"contains()" is treated as the exact file path rooted at the root of
the repository. This decreases usability, because:
- all other predicates taking pattern argument (also "filelog()")
treat such pattern as the path rooted at the current working
directory
- "contains()" doesn't describe this difference in its help
- this difference may confuse users
for example, this prevents revset aliases from sharing same
argument between "contains()" and other predicates
This patch makes default kind of pattern for revset predicate
"contains()" be rooted at the current working directory.
This patch uses "pathutil.canonpath()" instead of creating "match"
object for efficiency.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 17 Jan 2014 23:42:12 +0900] rev 20285
revset: narrow scope of the variable referred only in specific code path
This patch narrows scope of the variable "m" in the function for
revset predicate "contains()", because it is referred only in "else"
code path of "if not matchmod.patkind(pat)" examination.
Simon Heimberg <simohe@besonet.ch> [Fri, 17 Jan 2014 12:46:29 +0100] rev 20284
tests: fix test-run-tests.py on OS X
Do the same hack as in test-doctests.py to let the test pass on OS X.
Simon Heimberg <simohe@besonet.ch> [Fri, 17 Jan 2014 19:46:23 +0100] rev 20283
tests: test-debugcommands.t also matches stack trace on python 2.4
Some versions of python 2.4 write ? instead of <module>. Ignore this detail by
a glob.
This fixes a failure spotted on buildbot, existing since this test lines were
introduced 47d0843647d1.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 15 Jan 2014 17:55:13 -0600] rev 20282
commands: use bookmarks.validdest instead of duplicating logic
Now that bookmarks.py has grown a validdest method that even handles successor
changesets, we use that instead of duplicating the logic in commands.py
Sean Farley <sean.michael.farley@gmail.com> [Wed, 15 Jan 2014 17:48:48 -0600] rev 20281
update: consider successor changesets when moving active bookmark
Previously, when an obsolete changeset was bookmarked, successor changesets were not considered
when moving the bookmark forward. Now that a bare update will move to the tip most of the
successor changesets, we also update the bookmark logic to allow the bookmark to move with this
update.
Tests have been updated and keep issue4015 covered as well.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 15 Jan 2014 16:41:18 -0600] rev 20280
merge: consider successor changesets for a bare update
Previously, a bare update would ignore any successor changesets thus
potentially leaving you on an obsolete head. This happens commonly when there
is an old bookmark that hasn't been moved forward which is the motivating
reason for this patch series.
Now, we will check for successor changesets if two conditions hold: 1) we are
doing a bare update 2) *and* we are currently on an obsolete head.
If we are in this situation, then we calculate the branchtip of the successor
set and update to that changeset.
Tests coverage has been added.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 06 Nov 2013 17:02:07 -0600] rev 20279
merge: refactor initialization of variables in update
There is no code change here but this helps prepare for future commits that
will fix a bare update with obsolete markers.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 06 Nov 2013 10:26:25 -0600] rev 20278
merge: update comment for future devs
Sean Farley <sean.michael.farley@gmail.com> [Wed, 15 Jan 2014 18:14:12 -0600] rev 20277
obsolete: clarify documentation for succcessorssets
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 08 Jan 2014 17:23:26 -0800] rev 20276
backout: add a message after backout that need manual commit
In some case Backout silently succeeded to back out but left all the change
uncommitted. This may be confusing for user so this changeset add a note
reminding to commit. Other backout case already actively informs the user about
created commit.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 08 Jan 2014 14:53:46 -0800] rev 20275
backout: avoid update on simple case.
Before the changeset the backout process was:
1) go to <target>
2) revert to <target> parent
3) update back to changeset we came from
The two update steps can takes a very long time to move back and forth unrelated
file change between <target> and current working directory.
The new process is just merging current working directory with the parent of
<target> using <target> as ancestor. This give the very same result but skip
the two updates. On big repo with a lot of files and changes that save a lots of
time (x20 for one week window).
The "merge" version (hg backout --merge) is still done with upgrades. We could
imagine using in memory commit to speed it up but this is another fish.
Simon Heimberg <simohe@besonet.ch> [Thu, 16 Jan 2014 12:08:57 +0100] rev 20274
run-tests: print more information on unnecessary glob matching
Extend the message with the test name and the approximate line number. (The
line number is the one of the command producing the output.)
Finding the line to fix is easier now.
old message:
......
Info, unnecessary glob: at a/b/c (glob)
..
new message:
......
Info, unnecessary glob in test-example.t (after line 9): at a/b/c (glob)
..
The test result is still pass as before.
Simon Heimberg <simohe@besonet.ch> [Thu, 16 Jan 2014 12:08:29 +0100] rev 20273
run-tests: suggest to append glob when only path sep does not match
When the line does not match because of \ instead of / (on windows), append
(glob) in the expected output.
This allows to rename test-bla.t.err to test-bla.t for getting a correct
output. This worked for other failures like missing (esc), but not here.
Output example (only +- lines of diff):
Before:
- path/with/local/sep
+ path\\with\\local/sep
Now:
- path/with/local/sep
+ path/with/local/sep (glob)
Simon Heimberg <simohe@besonet.ch> [Thu, 16 Jan 2014 12:06:49 +0100] rev 20272
run-tests: test each line matching function on its own
This has several advantages.
* Each match function can return some information to the caller runone (used in
the next patch).
* It is not checked that the line ends in " (glob)" when rematch() returns
false.
* And it looks more readable.
Simon Heimberg <simohe@besonet.ch> [Thu, 16 Jan 2014 19:07:18 +0100] rev 20271
tests: new test for line matching functions in run-tests
Test for failing matches and warnings. (The existing test-run-tests.t can not
do both by design.) And simulate matching on other os.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 08 Jan 2014 17:15:22 -0800] rev 20270
test-backout: add multiple summary calls to monitor result wc
The main goal is to monitor that working directory parent are correct after
backout. This will be useful the next changeset introducting magic merge usage.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 02 Dec 2013 00:50:30 +0900] rev 20269
transplant: use "ui.extractchoices()" to show the list of available responses
Before this patch, transplant extension shows the list of available
responses by specific string, even though the prompt string passed to
"ui.promptchoice()" has enough (maybe i18n-ed) information.
This patch uses "ui.extractchoices()" to show the list of available
responses.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 02 Dec 2013 00:50:30 +0900] rev 20268
transplant: use "ui.promptchoice()" for interactive transplant
Before this patch, transplant extension uses "ui.prompt()" for
interactive transplant, and has to check whether user response
returned by "ui.prompt()" is valid or not in own code.
In addition to it, transplant extension uses response characters
(e.g. "y", "n", and so on) directly in own code, and this disallows to
use another response characters by translation, even though the help
shown by '?' typing is translatable.
This patch uses "ui.promptchoice()" instead of "ui.prompt()" to
resolve problems above.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 02 Dec 2013 00:50:30 +0900] rev 20267
transplant: add test for interactive transplant
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 02 Dec 2013 00:50:30 +0900] rev 20266
record: use "ui.extractchoices()" to get the list of available responses
Before this patch, record extension gets the list of available
responses from online help document of "hg record" in the tricky way,
even though the value passed to "ui.promptchoice()" has enough (maybe
i18n-ed) information.
This patch uses "ui.extractchoices()" to get the list of available
responses.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 02 Dec 2013 00:50:29 +0900] rev 20265
ui: add "extractchoices()" to share the logic to extract choices from prompt
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 06 Jan 2014 15:19:31 -0800] rev 20264
branchmap: use set for update code
We are doing membership test and substraction. new code is marginally faster.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 06 Jan 2014 14:26:49 -0800] rev 20263
branchmap: simplify update code
We drop iterrevs which are not needed anymore. The know head are never a
descendant of the updated set. It was possible with the old strip code. This
simplification make the code easier to read an update.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 03 Jan 2014 16:44:23 -0800] rev 20262
branchmap: stop useless rev -> node -> rev round trip
We never use the node of new revisions unless in the very specific case of
closed heads. So we can just use the revision number.
So give another handfull of percent speedup.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 15 Jan 2013 20:04:12 +0100] rev 20261
branchmap: stop membership test in update logic
Now that no user try to update the cache on a truncated repo we can drop the
extra lookup. Give an handfull percent speedup on big branchmap update.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 03 Jan 2014 17:06:07 -0800] rev 20260
branchmap: remove silly line break
The line fit in 80 character limit without it. It is even shorter without it.
Simon Heimberg <simohe@besonet.ch> [Thu, 16 Jan 2014 11:26:54 +0100] rev 20259
run-tests: set the thread name to the test name for info on error
This does not happen when running normal. But when fiddling around with
the test infrastructure, this helps a lot.
Old traceback messge
Exception in thread Thread-7:
Traceback (most recent call last):
...
new traceback message
Exception in thread test-something.t:
Traceback (most recent call last):
...
Simon Heimberg <simohe@besonet.ch> [Thu, 16 Jan 2014 18:55:35 +0100] rev 20258
run-tests: report tests as failed when run-test raises an error
Before no message was returned to the main thread. No result was registered
and no new thread was started.
This does not happen when running normal. But when fiddling around with
the test infrastructure, this helps a lot.
Takumi IINO <trot.thunder@gmail.com> [Wed, 08 Jan 2014 00:47:45 +0900] rev 20257
hgweb: infinite scroll support for coal style
Augie Fackler <raf@durin42.com> [Thu, 16 Jan 2014 09:23:31 -0500] rev 20256
test-hgweb-*: output change fixes from b1d65cb8
Takumi IINO <trot.thunder@gmail.com> [Wed, 08 Jan 2014 00:47:44 +0900] rev 20255
hgweb: infinite scroll support for monoblue style
Takumi IINO <trot.thunder@gmail.com> [Wed, 08 Jan 2014 00:47:43 +0900] rev 20254
hgweb: infinite scroll support for gitweb style
Takumi IINO <trot.thunder@gmail.com> [Wed, 08 Jan 2014 00:35:03 +0900] rev 20253
hgweb: avoid invalid infinity scroll request when overwritten web.style
Infinity scroll is broken when you override the web.style in the following ways:
$ hg --config='web.style=gitweb' serve
$ open http://localhost:8080/shortlog?style=paper
ajaxScrollInit should use http://localhost:8080/shortlog/%next%?style=paper.
however, http://localhost:8080/shortlog/%next% is used actually.
It is missing style parameter.
This patch add style parameter to request url.
Takumi IINO <trot.thunder@gmail.com> [Wed, 08 Jan 2014 00:26:55 +0900] rev 20252
hgweb: fix regexp for other styles like monoblue
Some styles have indentation.
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20251
tests: introduce test for rebasing on named branches with closed heads
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20250
rebase: remove old code for handling empty rebaseset
Mads Kiilerich <madski@unity3d.com> [Sun, 17 Nov 2013 18:21:58 -0500] rev 20249
rebase: improve error message for --base being empty or causing emptiness
Before it just said 'nothing to rebase'.
Now 'if "base" is an empty set:
abort: empty "base" revision set - can't compute rebase set
If the set of changesets to rebase can't be found from "base", it will fail as
before but with more explanation of what the problem was.
The name of the "base" option is not obvious - it is more like "samples
identifying the branch to rebase". The error messages for problems with the
specified "base" value will use that term and might thus also not be obvious,
but at least they are consistent with the option name. The name "base" will not
be used if the base only was specified implicitly as the working directory
parent.
Mads Kiilerich <madski@unity3d.com> [Sun, 17 Nov 2013 18:21:58 -0500] rev 20248
rebase: improve error message for empty --source set
Before, it just said 'nothing to rebase' in this case. Now, it aborts
mentioning the reason: 'empty "source" revision set'.
Specifying revisions that cannot be rebased is a 'soft' error, but specifying
an empty set deserves an abort that explains exactly what the problem is.
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20247
rebase: improve error message for empty --rev set
Before, it just said 'nothing to rebase' in this case. Now, it aborts
mentioning the reason: 'empty "rev" revision set'.
Specifying revisions that cannot be rebased is a 'soft' error, but specifying
an empty set deserves an abort that explains exactly what the problem is.
Mads Kiilerich <madski@unity3d.com> [Sun, 17 Nov 2013 18:21:58 -0500] rev 20246
rebase: test for empty dest revision
Mads Kiilerich <madski@unity3d.com> [Thu, 21 Nov 2013 15:17:18 -0500] rev 20245
help: branch names primarily denote the tipmost unclosed branch head
Was the behavior correct and the description wrong so it should be updated as
in this patch? Or should the code work as the documentation says?
Both ways could make some sense ... but none of them are obvious in all cases.
One place where it currently cause problems is when the current revision has
another branch head that is closer to tip but closed. 'hg rebase' refuses to
rebase to that as it only see the tip-most unclosed branch head which is the
current revision.
/me kind of likes named branches, but no so much how branch closing works ...
Mads Kiilerich <madski@unity3d.com> [Sun, 12 Jan 2014 23:28:21 +0100] rev 20244
util: introduce util.debugstacktrace for showing a stack trace without crashing
This is often very handy when hacking/debugging.
Calling util.debugstacktrace('hey') from a place in hg will give something like:
hey at:
./hg:38 in <module>
/home/user/hgsrc/mercurial/dispatch.py:28 in run
/home/user/hgsrc/mercurial/dispatch.py:65 in dispatch
/home/user/hgsrc/mercurial/dispatch.py:88 in _runcatch
/home/user/hgsrc/mercurial/dispatch.py:740 in _dispatch
/home/user/hgsrc/mercurial/dispatch.py:514 in runcommand
/home/user/hgsrc/mercurial/dispatch.py:830 in _runcommand
/home/user/hgsrc/mercurial/dispatch.py:801 in checkargs
/home/user/hgsrc/mercurial/dispatch.py:737 in <lambda>
/home/user/hgsrc/mercurial/util.py:472 in check
...
Simon Heimberg <simohe@besonet.ch> [Tue, 07 Jan 2014 22:29:57 +0100] rev 20243
check-code: print debug output when an ignore pattern matches
Simon Heimberg <simohe@besonet.ch> [Tue, 07 Jan 2014 22:29:51 +0100] rev 20242
check-code: drop now unused check-code-ignore
Using check-code-ignore to skip the failures on a line has several
disadvantages:
* It skips all check-code failures on a line, not only the one it was created
for.
* It does not give any hint for which rule it was added, making it difficult to
see when it is not needed anymore.
So drop this pragma in favor of better alternatives promoted before.
Simon Heimberg <simohe@besonet.ch> [Tue, 07 Jan 2014 22:29:44 +0100] rev 20241
check-code: explain what to do when a check-code rule mismatches
In the past several approaches were used when a check-code rule triggered
without a good reason. Not all of them looked nice, some were even wrong.
Suggest some good practices which should be used instead.
Simon Heimberg <simohe@besonet.ch> [Tue, 07 Jan 2014 22:29:39 +0100] rev 20240
cleanup: Remove the only ever used skip-check-code pragma
Use the work-around suggested by the rule instead
Simon Heimberg <simohe@besonet.ch> [Tue, 07 Jan 2014 22:29:15 +0100] rev 20239
check-code: always report when a file is skipped by "no-check-code"
Skipping an entire file generally from checking is an important event, so
report it always.
Do not tell the check name because skipping does not depend on it. Directly
skip the entire file instead of checking more patterns and skip again.
The pragma no-check-code was introduced by accident in the past. (Fixed in
e033a7d444ac and ee07f9d142c9.) This now is prevented because the files
to skip have to be listed in the test output of test-check-code-hg.t.
Simon Heimberg <simohe@besonet.ch> [Tue, 07 Jan 2014 22:28:45 +0100] rev 20238
check-code: do not skip entire file, skip only one match instead
Skipping of the entire file has been introduced in bc3b48b0f5c8.
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20237
bisect: --command without --noupdate should flag the parent rev it tested
14913fcb30c6 not only introduced the 'bisect(current)' revset predicate, it
also changed how the 'current' revision is used in combination with --command.
The new behaviour might be ok for --noupdate where the working directory and
its revision shouldn't be used, but it also did that when --command is used to
run a command on the currently checked out revision then it could register the
test result on the wrong revision.
An example:
Before, bisect with --command could use the wrong revision when recording the
test result:
$ hg up -qr 0
$ hg bisect --command "python \"$TESTTMP/script.py\" and some parameters"
changeset 31:58c80a7c8a40: bad
abort: inconsistent state, 31:58c80a7c8a40 is good and bad
Now it works as before and as expected and uses the working directory revision
for the --command result:
$ hg up -qr 0
$ hg bisect --command "python \"$TESTTMP/script.py\" and some parameters"
changeset 0:b99c7b9c8e11: bad
...
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20236
context: drop caching 'copies' method
The 'copies' method has no test coverage and calls copies.pathcopies with an
incorrect number of parameters and is thus (fortunately) not used. Kill it.
Siddharth Agarwal <sid0@fb.com> [Tue, 19 Nov 2013 12:43:29 -0800] rev 20235
commands.bookmarks: move hexfn to inside list block
This isn't used outside this block, nor is it expected to be.
Siddharth Agarwal <sid0@fb.com> [Tue, 19 Nov 2013 12:42:17 -0800] rev 20234
commands.bookmarks: move cur initialization to inside wlock
This is more correct because we now fetch '.' while nothing else can interfere
with it.
Siddharth Agarwal <sid0@fb.com> [Thu, 21 Nov 2013 17:11:04 -0800] rev 20233
commands.bookmarks: pass cur in explicitly to checkconflict
cur will be moved inside the wlock in a future patch, so we need to pass it
into checkconflict explicitly.
Siddharth Agarwal <sid0@fb.com> [Tue, 19 Nov 2013 12:33:14 -0800] rev 20232
commands.bookmarks: hold wlock for write operations
Any invocations of bookmarks other than a plain 'hg bookmarks' will likely
cause a write to the bookmark store. These should be guarded by the wlock.
The repo._bookmarks read should be similarly guarded by the wlock if we're
going to be subsequently writing to it.
Siddharth Agarwal <sid0@fb.com> [Tue, 19 Nov 2013 11:47:30 -0800] rev 20231
commands.bookmarks: separate out 'no bookmarks set' status messages
Upcoming patches will acquire the wlock for write operations, such as make
inactive, but not read-only ones, such as list bookmarks. Separate out the
status messages so that the code paths can be separated.
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 19:56:53 -0500] rev 20230
tests: test-convert-cvs-synthetic.t requires cvs 1.12
9589227657bc introduced hghave cvs112 10 months ago. Let's assume it has
stabilized so much that we can start using it now.
Matt Mackall <mpm@selenic.com> [Mon, 13 Jan 2014 14:33:39 -0600] rev 20229
merge with stable
David Soria Parra <davidsp@fb.com> [Wed, 08 Jan 2014 12:25:00 -0800] rev 20228
i18n-de: rename noun "entfernt" to "Gegenseite"
The German translation for "remote" as "entfernt" can be misleading
in situations where remote is used as a noun. "entfernt" is not a
noun and can also mean "removed". To clarify this we rename "remote"
to "Gegenseite" when used as a noun.
Kevin Bullock <kbullock@ringworld.org> [Fri, 10 Jan 2014 16:26:11 -0600] rev 20227
doc: bump copyright year
Matt Mackall <mpm@selenic.com> [Fri, 10 Jan 2014 17:29:16 -0600] rev 20226
localrepo: drop unused variable
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 15 Nov 2013 23:28:43 -0500] rev 20225
discovery: stop using nodemap for membership testing
Nodemap is not aware of filtering so we need to ask the changelog itself if a
node is known. This is probably a bit slower but such check does not dominated
discovery time. This is necessary if we want to run discovery on filtered repo.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 15 Nov 2013 23:27:39 -0500] rev 20224
discovery: enforce filtering into revlogbaseddag._internalizeall
One more step toward discovery running on filtered repo.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 15 Nov 2013 23:27:15 -0500] rev 20223
discovery: make revlogdag work on filtered repo
The revlogdag class is a core part of discovery. We need its initialisation to
exclude revision filtered out.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 16 Nov 2013 11:53:44 -0500] rev 20222
pull: run findcommon incoming on unfiltered repo
The discovery is not yet ready for filtered repo. Pull was using filtered for
its discovery which is wrong. It worked by dumb luck because discovery mainly
use funtion that does not respect the filtering.
Trying to makes discovery work on filtered repo revealed this bug.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 05 Nov 2013 18:37:44 +0100] rev 20221
push: more robust check for bundle fast path
When all changesets in the local repo are either being pushed or remotly known,
we can take a fast path when bundling changeset because we are certain all local
deltas are computed againts base known remotely.
So we have a check to detect this situation, when we did a bare push and nothing
was excluded.
In a coming refactoring, the discovery will run on filtered view and the content
of `outgoing.excluded` will just include unserved (secret) changeset not filtered by the
repoview used to call push (usually "visible"). So we need to check if there is
both no excluded changeset and nothing filtered by the current repoview.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 16 Nov 2013 15:36:50 -0500] rev 20220
pull: fix post-pull common computation
Before that changes, pulled revision that happend to be already known locally
(so, not actually added) was not taken into account when computing the new
common set between local and remote.
It appears that we already know the heads of the pulled set. It is in the
`rheads` variable, so we are just using it and everything is works fine.
We are dropping the, now useless, computation of `added` set in the process.
Simon Heimberg <simohe@besonet.ch> [Mon, 25 Nov 2013 22:00:46 +0100] rev 20219
run-tests: better check for python version
Compare version by using pythons tuple comparison. So we do not match on python
3.0 or newer.
Andrew Shadura <andrew@shadura.me> [Mon, 23 Dec 2013 14:14:31 +0100] rev 20218
templatekw: allow tagtypes other than global in getlatesttags
hg-git uses tagtype 'git', for example, so it's better
to check for tagtype != 'local', not strictly for 'global'
Durham Goode <durham@fb.com> [Tue, 26 Nov 2013 12:58:27 -0800] rev 20217
revlog: move file writing to a separate function
Moves the code that actually writes to a file to a separate function in
revlog.py. This allows extensions to intercept and use the data being written to
disk. For example, an extension might want to replicate these writes elsewhere.
When cloning the Mercurial repo on /dev/shm with --pull, I see about a 0.3% perf change.
It goes from 28.2 to 28.3 seconds.
Kevin Bullock <kbullock@ringworld.org> [Sun, 24 Nov 2013 17:33:39 -0600] rev 20216
discovery: prefer loop to double-for list comprehension in changegroupsubset
The double-for form of list comprehensions gets particularly unreadable
when you throw in an 'if' condition. This expands the only remaining
instance of the double-for syntax in our codebase into a loop.
Matt Mackall <mpm@selenic.com> [Thu, 02 Jan 2014 16:32:51 -0600] rev 20215
merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 02 Jan 2014 15:56:30 -0600] rev 20214
merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 01 Jan 2014 21:46:45 -0600] rev 20213
Added signature for changeset ca387377df7a
Matt Mackall <mpm@selenic.com> [Wed, 01 Jan 2014 21:46:41 -0600] rev 20212
Added tag 2.8.2 for changeset ca387377df7a
Matt Mackall <mpm@selenic.com> [Wed, 01 Jan 2014 21:46:03 -0600] rev 20211
merge with i18n
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 30 Dec 2013 21:30:34 +0900] rev 20210
i18n-ja: synchronized with d4be314b2071
Augie Fackler <raf@durin42.com> [Wed, 01 Jan 2014 18:28:40 -0500] rev 20209
merge with stable
Yuya Nishihara <yuya@tcha.org> [Sat, 21 Dec 2013 12:44:19 +0900] rev 20208
fileset, revset: do not use global parser object for thread safety
parse() cannot be called at the same time because a parser object keeps its
states. This is no problem for command-line hg client, but it would cause
strange errors in multi-threaded hgweb.
Creating parser object is not too expensive.
original:
% python -m timeit -s 'from mercurial import revset' 'revset.parse("0::tip")'
100000 loops, best of 3: 11.3 usec per loop
thread-safe:
% python -m timeit -s 'from mercurial import revset' 'revset.parse("0::tip")'
100000 loops, best of 3: 13.1 usec per loop
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 23 Dec 2013 15:29:51 -0800] rev 20207
obsolete: order of magnitude speedup in _computebumpedset
Reminder: a changeset is said "bumped" if it tries to obsolete a immutable
changeset.
The previous algorithm for computing bumped changeset was:
1) Get all public changesets
2) Find all they successors
3) Search for stuff that are eligible for being "bumped"
(mutable and non obsolete)
The entry size of this algorithm is `O(len(public))` which is mostly the same as
`O(len(repo))`. Even this this approach mean fewer obsolescence marker are
traveled, this is not very scalable.
The new algorithm is:
1) For each potential bumped changesets (non obsolete mutable)
2) iterate over precursors
3) if a precursors is public. changeset is bumped
We travel more obsolescence marker, but the entry size is much smaller since
the amount of potential bumped should remains mostly stable with time `O(1)`.
On some confidential gigantic repo this move bumped computation from 15.19s to
0.46s (×33 speedup…). On "smaller" repo (mercurial, cubicweb's review) no
significant gain were seen. The additional traversal of obsolescence marker is
probably probably counter balance the advantage of it.
Other optimisation could be done in the future (eg: sharing precursors cache
for divergence detection)
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 23 Dec 2013 13:36:13 -0800] rev 20206
obsolete: add an allprecursors method mirroring allsuccessors one.
Detection of bumped changeset should use `allprecursors(<mutable>)` instead or
`allsuccessors(<immutable>)` so we need the all precursors function to exists.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 23 Dec 2013 16:04:51 -0800] rev 20205
perf: fix perfvolatilesets
The repoview's `filteredrevs` has been renamed to `filterrevs` at some point.
perf was never informed.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 23 Dec 2013 13:33:21 -0800] rev 20204
obsolete: improve allsuccessors doc string
The fact original nodes are also yield is not obvious. We update the docstring
to highlight it.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 23 Dec 2013 13:32:03 -0800] rev 20203
obsolete: fix bad comment
We cannot afford such extra "with" they are far too pricy.
Christian Ebert <blacktrash@gmx.net> [Sun, 29 Dec 2013 13:54:04 +0000] rev 20202
util: remove unused realpath (issue4063)
util.realpath was in use for only 5 days from dbdb777502dc
until it was backed out in c519cd8f0169 because it caused
issue3077 and issue3071.
Augie Fackler <raf@durin42.com> [Wed, 01 Jan 2014 17:57:48 -0500] rev 20201
import-checker: suppress check-code about any()
ast is a new enough module that this script can't work on any version
of Python without any(), so we'll just use it.
Augie Fackler <raf@durin42.com> [Tue, 24 Dec 2013 19:10:04 -0500] rev 20200
import-checker: use any() and a genexp to avoid awkward for/else construction
Chris Jerdonek <chris.jerdonek@gmail.com> [Sun, 22 Dec 2013 21:27:00 -0800] rev 20199
import-checker: backout 40f79b9a2cc8 (issue4129)
This patch backs out 40f79b9a2cc8, which caused test-module-imports.t to
be skipped when the test was run using virtualenv. Since the test now
passes when using virtualenv, the skip is no longer necessary.
Chris Jerdonek <chris.jerdonek@gmail.com> [Sun, 22 Dec 2013 21:20:38 -0800] rev 20198
import-checker: make test-module-imports.t work using virtualenv (issue4129)
This patch modifies contrib/import-checker.py so that test-module-imports.t
will pass if run using virtualenv. The patch achieves this by adding two
new prefixes to the list of allowable sys.path prefixes. The added prefixes
are the directories of two modules in the stdlib. The modules selected are
a minimal set that allowed the return value of list_stdlib_modules() to
match the return value without virtualenv, when run on the patch author's
machine: Mac OS X 10.8, Python 2.7.6.
Chris Jerdonek <chris.jerdonek@gmail.com> [Sun, 22 Dec 2013 14:10:26 -0800] rev 20197
import-checker: refactor sys.path prefix check (issue4129)
This patch refactors the logic in contrib/import-checker.py responsible for
checking the beginnings of the paths in sys.path. In particular, it adds a
variable that defines the set of allowed prefixes.
The primary purpose of this change is to make it easier to add more allowed
prefixes. This will be useful in resolving issue4129, which involves making
the function list_stdlib_modules() work when run from a virtualenv.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 24 Dec 2013 17:44:23 -0500] rev 20196
filter: add a comment so that people do not forget to update subsettable
Changeset 175c6fd8cacc moved `subsettable` from `mercurial/repoview.py` to
`mercurial/branchmap.py`. This mean that `filtertable` and `subsettable` are no
longer next to each other. So we add a comment to remind people to update both.
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20195
localrepo: remove unused repo.branchtags()/_branchtip() methods
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20194
hgweb: simplify branches with repo.branchmap().iterbranches()
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20193
hgweb: simplify summary with repo.branchmap().iterbranches()
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20192
branches: simplify with repo.branchmap().iterbranches()
Running hg branches on the PyPy repo (with 996) over a busy NFS server,
before this change:
$ time hg --profile branches > /dev/null
CallCount Recursive Total(s) Inline(s) module:lineno(function)
1069 0 1.2955 1.2955 <open>
1063 0 0.5576 0.5576 <method 'close' of 'file' objects>
4122 0 0.1993 0.0449 mercurial.repoview:161(changelog)
8240 0 0.0771 0.0299 mercurial.changelog:133(tip)
4122 0 0.0422 0.0204 mercurial.localrepo:26(__get__)
8240 0 0.0252 0.0131 <len>
4122 0 0.0060 0.0037 mercurial.repoview:112(filterrevs)
8240 0 0.0028 0.0028 <hash>
3029 0 0.2139 0.0390 mercurial.context:202(__init__)
3029 0 0.1402 0.0339 mercurial.repoview:161(changelog)
3029 0 0.0240 0.0087 mercurial.changelog:183(rev)
9087 0 0.0067 0.0067 <isinstance>
1096 0 0.0025 0.0025 <binascii.unhexlify>
4125 0 0.0015 0.0015 <len>
4229 0 0.0344 0.0344 mercurial.revlog:296(rev)
1061 0 0.0343 0.0343 <method 'seek' of 'file' objects>
1063 0 0.0339 0.0339 <method 'read' of 'file' objects>
40476 16488 0.0479 0.0311 <len>
16488 0 0.0216 0.0168 mercurial.revlog:262(__len__)
8240 0 0.0771 0.0299 mercurial.changelog:133(tip)
8240 0 0.0281 0.0203 mercurial.changelog:190(node)
8240 0 0.0191 0.0095 <len>
1342 0 0.0278 0.0278 <zlib.decompress>
1074 0 2.2143 0.0266 mercurial.changelog:270(read)
1074 0 2.1328 0.0230 mercurial.revlog:907(revision)
1073 0 0.0208 0.0108 mercurial.changelog:28(decodeextra)
2148 0 0.0072 0.0072 <method 'split' of 'str' objects>
2148 0 0.0211 0.0038 mercurial.encoding:61(tolocal)
1074 0 0.0028 0.0028 <method 'index' of 'str' objects>
1061 0 1.9811 0.0237 mercurial.revlog:817(_loadchunk)
real 0m2.742s
user 0m0.811s
sys 0m0.188s
After this change:
$ time hg --profile branches > /dev/null
CallCount Recursive Total(s) Inline(s) module:lineno(function)
2092 0 0.1444 0.0292 mercurial.context:202(__init__)
2092 0 0.0908 0.0216 mercurial.repoview:161(changelog)
2092 0 0.0164 0.0057 mercurial.changelog:183(rev)
6276 0 0.0045 0.0045 <isinstance>
1096 0 0.0024 0.0024 <binascii.unhexlify>
3188 0 0.0013 0.0013 <len>
2218 0 0.0230 0.0230 mercurial.revlog:296(rev)
2111 0 0.1028 0.0218 mercurial.repoview:161(changelog)
4218 0 0.0387 0.0146 mercurial.changelog:133(tip)
2111 0 0.0238 0.0104 mercurial.localrepo:26(__get__)
4218 0 0.0122 0.0062 <len>
2111 0 0.0038 0.0021 mercurial.repoview:112(filterrevs)
4218 0 0.0014 0.0014 <hash>
20240 8444 0.0233 0.0149 <len>
8444 0 0.0110 0.0084 mercurial.revlog:262(__len__)
4218 0 0.0387 0.0146 mercurial.changelog:133(tip)
4218 0 0.0144 0.0103 mercurial.changelog:190(node)
4218 0 0.0097 0.0048 <len>
2398 1 0.0271 0.0115 mercurial.localrepo:26(__get__)
2398 1 0.0146 0.0046 mercurial.scmutil:939(__get__)
2124 0 0.0009 0.0009 mercurial.localrepo:330(unfiltered)
274 0 0.0002 0.0002 mercurial.repoview:192(unfiltered)
4 0 0.1409 0.0112 mercurial.branchmap:19(read)
1096 0 0.1113 0.0028 mercurial.localrepo:407(__contains__)
1098 0 0.0020 0.0020 <method 'split' of 'str' objects>
1097 0 0.0019 0.0019 <binascii.unhexlify>
1096 0 0.0093 0.0018 mercurial.encoding:61(tolocal)
1096 0 0.0010 0.0010 <method 'append' of 'list' objects>
4349 0 0.0150 0.0105 mercurial.changelog:190(node)
4349 0 0.0045 0.0045 mercurial.revlog:317(node)
real 0m0.362s
user 0m0.329s
sys 0m0.024s
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20191
debuglabelcomplete: simplify with repo.branchmap().iterbranches()
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20190
branchmap: introduce iterbranches() method
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20189
localrepo: refactor repo.branchheads() to use repo.branchmap().branchheads()
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20188
branchmap: introduce branchheads() method
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20187
localrepo: refactor repo.branchtip() to use repo.branchmap().branchtip()
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20186
branchmap: introduce branchtip() method
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 20185
branchmap: cache open/closed branch head information
This lets us determine the open/closed state of a branch without
reading from the changelog (which can be costly over NFS and/or with
many branches).
Stephen Lee <sphen.lee@gmail.com> [Mon, 11 Nov 2013 21:16:54 +1100] rev 20184
bookmarks: allow push -B to create a new remote head (issue2372)
Push is currently allowed to create a new head if there is a remote
bookmark that will be updated to point to the new head. If the
bookmark is not known remotely then push aborts, even if a -B argument
is about to push the bookmark. This change allows push to continue in
this case. This does not require a wireproto force.
Matthew Turk <matthewturk@gmail.com> [Thu, 21 Nov 2013 15:46:49 -0500] rev 20183
template: modify showextras to return a hybrid
This modifies slightly the behavior introduced in 519120a96c63 to allow
showextras to return a hybrid, rather than showlist. The example in the
template help file now executes and returns meaningful results.
Brodie Rao <brodie@sf.io> [Fri, 15 Nov 2013 23:18:08 -0500] rev 20182
branches: avoid unnecessary changectx.branch() calls
This requires reading from the changelog, which can be costly over NFS.
Note that this does not totally remove reading from the changelog; we
still do that when calling changectx.closesbranch(). That call will be
removed in a later patch.
Running hg branches on the PyPy repo (with 996) over a busy NFS server,
before this change:
$ time hg --profile branches > /dev/null
CallCount Recursive Total(s) Inline(s) module:lineno(function)
2042 0 2.2827 2.2827 <open>
2036 0 0.9840 0.9840 <method 'close' of 'file' objects>
2036 0 0.0464 0.0464 <method 'read' of 'file' objects>
5233 0 0.1985 0.0453 mercurial.repoview:161(changelog)
10462 0 0.0791 0.0314 mercurial.changelog:133(tip)
5233 0 0.0388 0.0176 mercurial.localrepo:26(__get__)
10462 0 0.0250 0.0126 <len>
5233 0 0.0059 0.0039 mercurial.repoview:112(filterrevs)
10462 0 0.0029 0.0029 <hash>
2034 0 0.0444 0.0444 <method 'seek' of 'file' objects>
5340 0 0.0390 0.0390 mercurial.revlog:296(rev)
2582 0 0.0371 0.0371 <zlib.decompress>
3155 0 0.1963 0.0366 mercurial.context:202(__init__)
3155 0 0.1238 0.0306 mercurial.repoview:161(changelog)
3155 0 0.0261 0.0080 mercurial.changelog:183(rev)
9465 0 0.0061 0.0061 <isinstance>
1096 0 0.0023 0.0023 <binascii.unhexlify>
4251 0 0.0014 0.0014 <len>
2059 0 3.7341 0.0332 mercurial.changelog:270(read)
2059 0 3.6304 0.0307 mercurial.revlog:907(revision)
2057 0 0.0262 0.0137 mercurial.changelog:28(decodeextra)
4118 0 0.0094 0.0094 <method 'split' of 'str' objects>
4118 0 0.0270 0.0048 mercurial.encoding:61(tolocal)
2059 0 0.0040 0.0040 <method 'index' of 'str' objects>
10462 0 0.0791 0.0314 mercurial.changelog:133(tip)
10462 0 0.0289 0.0207 mercurial.changelog:190(node)
10462 0 0.0188 0.0091 <len>
52433 20932 0.0478 0.0310 <len>
20932 0 0.0221 0.0168 mercurial.revlog:262(__len__)
2059 0 3.6304 0.0307 mercurial.revlog:907(revision)
real 0m4.361s
user 0m0.986s
sys 0m0.237s
After this change:
$ time hg --profile branches > /dev/null
CallCount Recursive Total(s) Inline(s) module:lineno(function)
1069 0 1.1098 1.1098 <open>
1063 0 0.4865 0.4865 <method 'close' of 'file' objects>
4122 0 0.1811 0.0404 mercurial.repoview:161(changelog)
8240 0 0.0712 0.0272 mercurial.changelog:133(tip)
4122 0 0.0378 0.0177 mercurial.localrepo:26(__get__)
8240 0 0.0221 0.0115 <len>
4122 0 0.0057 0.0033 mercurial.repoview:112(filterrevs)
8240 0 0.0025 0.0025 <hash>
3029 0 0.1979 0.0371 mercurial.context:202(__init__)
3029 0 0.1278 0.0310 mercurial.repoview:161(changelog)
3029 0 0.0230 0.0081 mercurial.changelog:183(rev)
9087 0 0.0061 0.0061 <isinstance>
1096 0 0.0026 0.0026 <binascii.unhexlify>
4125 0 0.0014 0.0014 <len>
4229 0 0.0337 0.0337 mercurial.revlog:296(rev)
1061 0 0.0296 0.0296 <method 'seek' of 'file' objects>
1063 0 0.0292 0.0292 <method 'read' of 'file' objects>
8240 0 0.0712 0.0272 mercurial.changelog:133(tip)
8240 0 0.0271 0.0196 mercurial.changelog:190(node)
8240 0 0.0169 0.0083 <len>
40476 16488 0.0422 0.0271 <len>
16488 0 0.0193 0.0152 mercurial.revlog:262(__len__)
1342 0 0.0241 0.0241 <zlib.decompress>
9445 0 0.0336 0.0224 mercurial.changelog:190(node)
9445 0 0.0112 0.0112 mercurial.revlog:317(node)
1074 0 1.9102 0.0224 mercurial.changelog:270(read)
1074 0 1.8397 0.0202 mercurial.revlog:907(revision)
1073 0 0.0187 0.0099 mercurial.changelog:28(decodeextra)
2148 0 0.0061 0.0061 <method 'split' of 'str' objects>
2148 0 0.0184 0.0034 mercurial.encoding:61(tolocal)
real 0m2.402s
user 0m0.735s
sys 0m0.177s
Brodie Rao <brodie@sf.io> [Fri, 15 Nov 2013 23:18:08 -0500] rev 20181
branchmap: add documentation on the branchcache on-disk format
Brodie Rao <brodie@sf.io> [Sun, 17 Nov 2013 18:04:29 -0500] rev 20180
revlog: allow tuning of the chunk cache size (via format.chunkcachesize)
Running perfmoonwalk on the Mercurial repo (with almost 20,000 changesets) on
Mac OS X with an SSD, before this change:
$ hg --config format.chunkcachesize=1024 perfmoonwalk
! wall 2.022021 comb 2.030000 user 1.970000 sys 0.060000 (best of 5)
(16,154 cache hits, 3,840 misses.)
$ hg --config format.chunkcachesize=4096 perfmoonwalk
! wall 1.901006 comb 1.900000 user 1.880000 sys 0.020000 (best of 6)
(19,003 hits, 991 misses.)
$ hg --config format.chunkcachesize=16384 perfmoonwalk
! wall 1.802775 comb 1.800000 user 1.800000 sys 0.000000 (best of 6)
(19,746 hits, 248 misses.)
$ hg --config format.chunkcachesize=32768 perfmoonwalk
! wall 1.818545 comb 1.810000 user 1.810000 sys 0.000000 (best of 6)
(19,870 hits, 124 misses.)
$ hg --config format.chunkcachesize=65536 perfmoonwalk
! wall 1.801350 comb 1.810000 user 1.800000 sys 0.010000 (best of 6)
(19,932 hits, 62 misses.)
$ hg --config format.chunkcachesize=131072 perfmoonwalk
! wall 1.805879 comb 1.820000 user 1.810000 sys 0.010000 (best of 6)
(19,963 hits, 31 misses.)
We may want to change the default size in the future based on testing and
user feedback.
Brodie Rao <brodie@sf.io> [Sun, 17 Nov 2013 18:04:28 -0500] rev 20179
revlog: read/cache chunks in fixed windows of 64 KB
When reading a revlog chunk, instead of reading up to 64 KB ahead of the
request offset and caching that, this change caches a fixed window before
and after the requested data that falls on 64 KB boundaries. This increases
cache hits when reading revlogs backwards.
Running perfmoonwalk on the Mercurial repo (with almost 20,000 changesets) on
Mac OS X with an SSD, before this change:
$ hg perfmoonwalk
! wall 2.307994 comb 2.310000 user 2.120000 sys 0.190000 (best of 5)
(Each run has 10,668 cache hits and 9,304 misses.)
After this change:
$ hg perfmoonwalk
! wall 1.814117 comb 1.810000 user 1.810000 sys 0.000000 (best of 6)
(19,931 cache hits, 62 misses.)
On a busy NFS share, before this change:
$ hg perfmoonwalk
! wall 17.000034 comb 4.100000 user 3.270000 sys 0.830000 (best of 3)
After:
$ hg perfmoonwalk
! wall 1.746115 comb 1.670000 user 1.660000 sys 0.010000 (best of 5)
Brodie Rao <brodie@sf.io> [Sun, 17 Nov 2013 18:04:28 -0500] rev 20178
perf: add perfmoonwalk command to walk the changelog backwards
This lets us test the effectiveness (or ineffectiveness) of the revlog chunk
cache when walking revlogs backwards.
Long Vu <long@tlvu.ca> [Tue, 03 Dec 2013 13:28:04 -0500] rev 20177
largefiles: call super class method with proper kwargs to respect API
Since the localrepositoyry.push() method in mercurial/localrepo.py is defined
this way:
def push(self, remote, force=False, revs=None, newbranch=False):
it is better for largefiles to call push() on the super class with proper
kwargs to respect the API.
This will avoid breaking other extensions overriding the push method this way:
def push(self, remote, force=False, **kwargs):
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 13 Nov 2013 15:55:30 +0900] rev 20176
subrepo: check phase of state in each subrepositories before committing
Before this patch, phase of newly created commit is determined by
"phases.new-commit" configuration regardless of phase of state in each
subrepositories.
For example, this may cause the "public" revision in the parent
repository referring the "secret" one in subrepository.
This patch checks phase of state in each subrepositories before
committing in the parent, and aborts or changes phase of newly created
commit if subrepositories have more restricted phase than the parent.
This patch uses "follow" as default value of "phases.checksubrepos"
configuration, because it can keep consistency between phases of the
parent and subrepositories without breaking existing tool chains.
Matt Mackall <mpm@selenic.com> [Mon, 16 Dec 2013 12:59:32 -0600] rev 20175
merge with crew
Augie Fackler <raf@durin42.com> [Sat, 14 Dec 2013 12:48:12 -0500] rev 20174
http: backout 181108726ea5, which breaks on Python 2.4
Augie Fackler <raf@durin42.com> [Sat, 14 Dec 2013 11:58:26 -0500] rev 20173
test-module-imports: try and detect virtualenv breakage (issue4129)
virtualenvs (among other things) break the stdlib module detection in
the import checker, and I don't see a good way to work around that for
now.
Stéphane Klein <contact@stephane-klein.info> [Mon, 25 Nov 2013 17:18:12 +0100] rev 20172
http: reuse authentication info after the first failed request (issue3567)
Context: mercurial access to repository server with http access, and this
server is protected by basic auth.
Before patch:
* mercurial try an anonymous access to server, server return 401 response and
mercurial resend request with login / password information
After patch:
* mercurial try an anonymous access to server, server return 401
response. For all subsequent requests, mercurial keep in memory this
information (this server need basic auth information).
This patch reduce the number of http access against mercurial server.
Example, before patch :
10.10.168.170 - - [25/Oct/2013:15:44:51 +0200] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:44:52 +0200] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 200 147 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:00 +0200] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:01 +0200] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 200 147 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:03 +0200] "GET /hg/testagt?cmd=batch
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:04 +0200] "GET /hg/testagt?cmd=batch
HTTP/1.1" 200 42 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:06 +0200] "GET /hg/testagt?cmd=getbundle
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:07 +0200] "GET /hg/testagt?cmd=getbundle
HTTP/1.1" 200 61184 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:09 +0200] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:10 +0200] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 200 15 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:12 +0200] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:12 +0200] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 200 - "-" "mercurial/proto-1.0"
Example after patch :
10.10.168.170 - - [28/Oct/2013:11:49:14 +0100] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [28/Oct/2013:11:49:15 +0100] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 200 147 "-" "mercurial/proto-1.0"
10.10.168.170 - - [28/Oct/2013:11:49:17 +0100] "GET /hg/testagt?cmd=batch
HTTP/1.1" 200 42 "-" "mercurial/proto-1.0"
10.10.168.170 - - [28/Oct/2013:11:49:19 +0100] "GET /hg/testagt?cmd=getbundle
HTTP/1.1" 200 61184 "-" "mercurial/proto-1.0"
10.10.168.170 - - [28/Oct/2013:11:49:22 +0100] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 200 15 "-" "mercurial/proto-1.0"
10.10.168.170 - - [28/Oct/2013:11:49:24 +0100] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 200 - "-" "mercurial/proto-1.0"
In this last example, you can see only one 401 response.
Prasoon Shukla <prasoon92.iitr@gmail.com> [Thu, 12 Dec 2013 12:25:56 +0530] rev 20171
record: --user/-u now works with record when ui.username not set (issue3857)
The -u flag didn't work when ui.username was not set and resulted in an
abort message. This was fixed by checking for the 'user' key in the opts
dictionary. If the key is present, the step causing the exception is not
executed.
Steve Hoelzer <shoelzer@gmail.com> [Wed, 11 Dec 2013 11:33:58 -0600] rev 20170
help: fix formatting of template example
Matt Mackall <mpm@selenic.com> [Fri, 13 Dec 2013 17:23:02 -0600] rev 20169
merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 04 Dec 2013 13:42:28 -0600] rev 20168
hgweb: avoid initialization race (issue3953)
Matt Mackall <mpm@selenic.com> [Wed, 11 Dec 2013 18:33:42 -0600] rev 20167
mpatch: rewrite pointer overflow checks
Chris Jerdonek <chris.jerdonek@gmail.com> [Mon, 02 Dec 2013 07:49:49 -0800] rev 20166
parsers: clarify documentation of test-parseindex2.py
This change updates and improves the description of test-parseindex2.py.
In particular, it removes language that can be interpreted to mean that the
test module checks only the C implementation of parsers.parse_index2().
Rather, the module checks parsers.parse_index2(), which can be either the
C or pure Python implementation, depending on which version is being used.
As of e57c532c3835, the module also does more than just compare the return
value with the original Python implementation.
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 21:24:48 -0600] rev 20165
merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 21:24:26 -0600] rev 20164
tests: fix missing import in check-translations
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:54:02 -0600] rev 20163
merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:51:15 -0600] rev 20162
Added signature for changeset 209e04a06467
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:51:12 -0600] rev 20161
Added tag 2.8.1 for changeset 209e04a06467
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:47:09 -0600] rev 20160
merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:46:36 -0600] rev 20159
parsers: backout version mismatch detection from 21dafd8546d1
This introduced mandatory recompilations and breaks pure mode in tests
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 20:39:11 -0600] rev 20158
tests: fix Mac doctest escape code garbage for check-translations
Wagner Bruna <wbruna@yahoo.com> [Sun, 01 Dec 2013 18:26:42 -0200] rev 20157
i18n-pt_BR: synchronized with 734ff413eb7e
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 14:10:53 -0600] rev 20156
merge with stable
Chris Jerdonek <chris.jerdonek@gmail.com> [Fri, 29 Nov 2013 12:36:28 -0800] rev 20155
parsers: fail fast if Python has wrong minor version (issue4110)
This change causes an informative ImportError to be raised when importing
the extension module parsers if the minor version of the currently-running
Python interpreter doesn't match that of the Python that was used when
compiling the extension module. Here is an example of what the new error
looks like:
Traceback (most recent call last):
File "test.py", line 1, in <module>
import mercurial.parsers
ImportError: Python minor version mismatch: The Mercurial extension
modules were compiled with Python 2.7.6, but Mercurial is currently using
Python with sys.hexversion=33883888: Python 2.5.6
(r256:88840, Nov 18 2012, 05:37:10)
[GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))]
at: /opt/local/Library/Frameworks/Python.framework/Versions/2.5/Resources/
Python.app/Contents/MacOS/Python
The reason for raising an error in this scenario is that Python's C API
is known not to be compatible from minor version to minor version, even
if sys.api_version is the same. See for example this Python bug report
about incompatibilities between 2.5 and 2.6+:
http://bugs.python.org/issue8118
These incompatibilities can cause Mercurial to break in mysterious,
unforeseen ways. For example, when Mercurial compiled with Python 2.7 was
run with 2.5, the following crash occurred when running "hg status":
http://bz.selenic.com/show_bug.cgi?id=4110
After this crash was fixed, running with Python 2.5 no longer crashes, but
the following puzzling behavior still occurs:
$ hg status
...
File ".../mercurial/changelog.py", line 123, in __init__
revlog.revlog.__init__(self, opener, "00changelog.i")
File ".../mercurial/revlog.py", line 251, in __init__
d = self._io.parseindex(i, self._inline)
File ".../mercurial/revlog.py", line 158, in parseindex
index, cache = parsers.parse_index2(data, inline)
TypeError: data is not a string
which can be reproduced more simply with:
import mercurial.parsers as parsers
parsers.parse_index2("", True)
Both the crash and the TypeError occurred because the Python C API's
PyString_Check returns the wrong value when the C header files from
Python 2.7 are run with Python 2.5. This is an example of an
incompatibility of the sort mentioned in the Python bug report above.
Failing fast with an informative error message will result in a better
user experience in cases like the above. The information in the ImportError
will also simplify troubleshooting for those on Mercurial mailing lists,
the bug tracker, etc.
This patch only adds the version check to parsers.c, which is sufficient
to affect command-line commands like "hg status" and "hg summary".
An idea for a future improvement is to move the version-checking C code
to a more central location, and have it run when importing all
Mercurial extension modules and not just parsers.c.
Andrew Shadura <andrew@shadura.me> [Sun, 01 Dec 2013 13:53:24 -0600] rev 20154
hgk: fix tag list parser (issue4101)
As tags may have embedded spaces, and "hg tags" command doesn't escape them,
the output of the command doesn't make a well-formed list, so we can't just
iterate over it. Instead, apply a simple regexp to transform it to a list
which we actually use. Line boundary matching should be enabled.
Matt Mackall <mpm@selenic.com> [Sun, 01 Dec 2013 13:45:00 -0600] rev 20153
merge with i18n
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 27 Nov 2013 22:47:32 +0900] rev 20152
i18n: add the tool to check Mercurial specific translation problems in *.po
Existing tool like "msgfmt --check" can check typical translation
problems (missing "%s" in msgstr, for example), but can't check
Mercurial specific ones.
For example, "msgfmt --check" can't check whether the translated
string given to "ui.promptchoice()" is correct or not, even though
problems like below cause run-time error or unexpected behavior:
- less or more choices than msgid,
- choices without '&', or
- choices with '&' followed by none
This patch adds the tool to check Mercurial specific translation
problems in *.po files.
Santiago Pay=C3=A0 i Miralta <santiagopim@gmail.com> [Wed, 27 Nov 2013 22:32:01 +0100] rev 20151
help: fix backwards bisect help example
Durham Goode <durham@fb.com> [Tue, 26 Nov 2013 16:30:52 -0800] rev 20150
unshelve: add tests for unknown files
Adds a basic test for shelving/unshelving with an unknown file present.
Adds a test for unshelving on top of an existing unknown file.
Durham Goode <durham@fb.com> [Tue, 26 Nov 2013 16:23:05 -0800] rev 20149
unshelve: don't commit unknown files during unshelve (issue4113)
Previously, unshelve would temporarily commit unknown files (via addremove) in
an attempt to allow unshelving into unknown files. This produced unexpected
results, like the file time stamp changing and a .i file being created.
This change makes it no longer use addremove. It ignores unknown files
completely. If an unshelve would overwrite an unknown file, the unknown file is
moved to *.orig
The shelve continue/abort format is changed, but it just removes stuff from the
end of the file, so it can still read the old format.
Mads Kiilerich <madski@unity3d.com> [Tue, 26 Nov 2013 15:38:33 +0100] rev 20148
largefiles: don't crash on 'local renamed directory' actions
a12798938721 introduced splitstandin on all action filenames. It would however
crash on 'd' actions where the filename is None.
Fix that and add test coverage for that case.
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 19:13:07 +0100] rev 20147
glossary: don't mention obsolete graphlog extension
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 19:12:44 +0100] rev 20146
bisect: don't mention obsolete graphlog extension in help
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 19:12:18 +0100] rev 20145
contrib: don't mention obsolete graphlog extension in mercurial.ini
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 19:11:48 +0100] rev 20144
contrib: stop mentioning obsolete graphlog extension in sample.hgrc
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 17:14:44 +0100] rev 20143
contrib: promote strip extension over MQ in sample.hgrc
Matt Mackall <mpm@selenic.com> [Fri, 22 Nov 2013 17:12:43 +0100] rev 20142
help: use progress instead of mq as in 'hg help config' example
Wagner Bruna <wbruna@yahoo.com> [Sat, 30 Nov 2013 21:50:40 -0200] rev 20141
i18n-pt_BR: fix wording in tag command help text
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 28 Nov 2013 20:10:47 +0900] rev 20140
i18n-ja: synchronized with 5246fd4781d8
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 26 Nov 2013 11:00:49 -0200] rev 20139
i18n-pt_BR: synchronized with 224e96078708
Augie Fackler <raf@durin42.com> [Wed, 27 Nov 2013 16:43:02 -0500] rev 20138
test-import-git.t: work around check-code hating on ^ and $( in tests
Nicolas Vigier <boklm@mars-attacks.org> [Wed, 27 Nov 2013 18:39:00 +0100] rev 20137
patch: add support for git delta hunks
When creating patches modifying binary files using "git format-patch",
git creates 'literal' and 'delta' hunks. Mercurial currently supports
'literal' hunks only, which makes it impossible to import patches with
'delta' hunks.
This changeset adds support for 'delta' hunks. It is a reimplementation
of patch-delta.c from git :
http://git.kernel.org/cgit/git/git.git/tree/patch-delta.c
Sean Farley <sean.michael.farley@gmail.com> [Mon, 25 Nov 2013 12:12:42 -0500] rev 20136
pathcomplete: remove ambiguous entries for sole completion on a directory
Previously, directories were added with the trailing slash and, if there was
only one completion, then another ambiguous entry was created using '.', as
follows:
$ hg rm mer<TAB>
mercurial/./ mercurial//
This was added in fa6d5c62f3bd (though, some logic existed before that) to work
around bash completion adding a space after the sole entry because we treated
directories and files the same. We no longer do that now so we remove this
unneeded code.
Tests have been updated to match this new behavior.
Sean Farley <sean.michael.farley@gmail.com> [Tue, 26 Nov 2013 14:33:18 -0600] rev 20135
bash_completion: add global support for -b|--branch
Previously, only -r|--rev was parsed globally which meant 'hg push -b <tab>'
would try to complete a path instead of a branch.
Sean Farley <sean.michael.farley@gmail.com> [Tue, 26 Nov 2013 14:31:40 -0600] rev 20134
bash_completion: add global support for -B|--bookmark
Previously, only -r|--rev was parsed globally which meant 'hg push -B <tab>'
would try to complete a path instead of a bookmark.
Sean Farley <sean.michael.farley@gmail.com> [Tue, 26 Nov 2013 14:04:12 -0600] rev 20133
bash_completion: change --rev if-else block into a case
Again, this doesn't change behavior but does make it easy to add cases in the
next patch.
Sean Farley <sean.michael.farley@gmail.com> [Tue, 26 Nov 2013 13:55:33 -0600] rev 20132
bash_completion: simplify if-else logic
There is no change in functionality here but this makes refactoring this later
easier.
Sean Farley <sean.michael.farley@gmail.com> [Mon, 25 Nov 2013 11:38:14 -0500] rev 20131
bash_completion: add _hg_branches for list of branches
Sean Farley <sean.michael.farley@gmail.com> [Tue, 26 Nov 2013 14:38:14 -0600] rev 20130
bash_completion: add -B|--bookmark support for strip
Sean Farley <sean.michael.farley@gmail.com> [Fri, 22 Nov 2013 14:58:41 -0500] rev 20129
bash_completion: add completion for deleting a shelve
Sean Farley <sean.michael.farley@gmail.com> [Thu, 21 Nov 2013 15:14:52 -0500] rev 20128
bash_completion: use correct command for listing shelves
Previously, _hg_shelves used the unshelve command to list current shelves. This
is actually the wrong command. The correct usage is 'hg shelve -l' so we use
that instead.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 20 Nov 2013 19:13:24 -0500] rev 20127
bash_completion: remove restriction on bookmark completion
Previously, we only completed a bookmark when deleting or renaming a
bookmark. Since we can now move a bookmark forward, we drop this restriction.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 20 Nov 2013 14:45:18 -0500] rev 20126
bash_completion: fix issue with subdirectories not being completed
Previously, if there was a directory between the file and first-level directory (e.g. 'bar' in
foo/bar/file), then bash_completion would only list 'foo/file' instead of 'foo/bar/file'.
This behavior was introduced in 80f3ae36f908 to fix spaces in file names. In
this patch, we keep that behavior while also fixing subdirectory completion by
reverting 80f3ae36f908 and instead add backslashes to whitespace manually. This
approach means adding the completion option 'nospace' since we do this manually
now.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 20 Nov 2013 13:19:55 -0500] rev 20125
bash_completion: determine root executable in case of alias
This solves an issue for users that have "alias hg='hg --some_opts'" where they
would see wrong entries in the completion output (such as color codes).
Sean Farley <sean.michael.farley@gmail.com> [Wed, 20 Nov 2013 15:16:54 -0500] rev 20124
bash_completion: expand aliased commands
Sean Farley <sean.michael.farley@gmail.com> [Tue, 19 Nov 2013 11:45:30 -0500] rev 20123
bash_completion: untabify
Sean Farley <sean.michael.farley@gmail.com> [Mon, 25 Nov 2013 12:20:39 -0500] rev 20122
dispatch: turn off custom debugger for HGPLAIN mode
Some debuggers, such as ipdb, load escape codes and color codes even when later
turned off. This will affect scripts that do simple parsing and can't handle
escape codes. Therefore, we only load a custom debugger if ui.plain() is false.
Simon Heimberg <simohe@besonet.ch> [Sun, 17 Nov 2013 12:18:26 +0100] rev 20121
Makefile: temporary copy of hg.pot is hg.pot.tmp instead of hg.pot~
The file ending of temporary files for generating XX.po has been changed to
.tmp (from ~). Use the same ending when generating hg.pot.
Simon Heimberg <simohe@besonet.ch> [Sun, 17 Nov 2013 12:17:55 +0100] rev 20120
Makefile: fix po file updating by using same file name everywhere
The update is done on a temporary file since ce5d711475a3. The name of this
file was first XX.po~ and has been changed to XX.po.tmp in all except of one
place. Do this now.
Kevin Bullock <kbullock@ringworld.org> [Sun, 24 Nov 2013 17:29:10 -0600] rev 20119
mq: prefer a loop to a double-for list comprehension
The [x for y in l for x in y] syntax is nigh-incomprehensible, and this
is a particularly easy case to expand into a loop since there's no 'if'
condition in the list comprehension.
Martin Geisler <martin@geisler.net> [Sat, 23 Nov 2013 18:34:32 +0100] rev 20118
graphlog: mark as deprecated
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 19:14:17 +0100] rev 20117
tests: don't load unnecessary graphlog extension
Since graphlog is in core, we can use 'hg log -G' instead.
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 19:13:26 +0100] rev 20116
hg: remove outdated comment
The graphlog functionality has been in core since Mercurial 2.3.
Martin Geisler <martin@geisler.net> [Fri, 22 Nov 2013 17:10:08 +0100] rev 20115
tests: use strip extension instead of mq where it makes sense
When a test only uses 'hg strip', it no longer needs to load MQ.
Simon Heimberg <simohe@besonet.ch> [Sat, 23 Nov 2013 01:06:20 +0100] rev 20114
tests: fix `hghave root` on windows
This lets tests\test-hghave.t pass on windows where geteuid does not exist.
Christian Ebert <blacktrash@gmx.net> [Wed, 20 Nov 2013 12:55:08 +0000] rev 20113
keyword: wlock while setting branch in kwdemo
Simon Heimberg <simohe@besonet.ch> [Sun, 17 Nov 2013 15:43:46 +0100] rev 20112
tests: add missing glob
Bryan O'Sullivan <bryano@fb.com> [Tue, 26 Nov 2013 21:55:21 -0800] rev 20111
Merge
Abhay Kadam <abhaykadam88@gmail.com> [Tue, 19 Nov 2013 23:49:11 +0530] rev 20110
mercurial/parsers.c: fix compiler warning
When try to compile on x64 OS X, I get this warning:
mercurial/parsers.c:931:27: warning: implicit conversion loses integer precision
: 'long' to 'int' [-Wshorten-64-to-32]
? 4 : self->raw_length / 2;
The patch verifies if value of self->raw_length falls bellow INT_MAX; if not,
it raises the ValueError exception.
If value of self->raw_length is greater than 4, it's casted to int type, to
eliminate the warning.
Chris Jerdonek <chris.jerdonek@gmail.com> [Tue, 26 Nov 2013 16:14:22 -0800] rev 20109
parse_index2: fix crash on bad argument type (issue4110)
Passing a non-string to parsers.parse_index2() causes Mercurial to crash
instead of raising a TypeError (found on Mac OS X 10.8.5, Python 2.7.6):
import mercurial.parsers as parsers
parsers.parse_index2(0, 0)
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 parsers.so 0x000000010e071c59 _index_clearcaches + 73 (parsers.c:644)
1 parsers.so 0x000000010e06f2d5 index_dealloc + 21 (parsers.c:1767)
2 parsers.so 0x000000010e074e3b parse_index2 + 347 (parsers.c:1891)
3 org.python.python 0x000000010dda8b17 PyEval_EvalFrameEx + 9911
This happens because when arguments of the wrong type are passed to
parsers.parse_index2(), indexType's initialization function index_init() in
parsers.c leaves the indexObject instance in a state that indexType's
destructor function index_dealloc() cannot handle.
This patch moves enough of the indexObject initialization code inside
index_init() from after the argument validation code to before it.
This way, when bad arguments are passed to index_init(), the destructor
doesn't crash and the existing code to raise a TypeError works. This
patch also adds a test to check that a TypeError is raised.
Matt Mackall <mpm@selenic.com> [Mon, 25 Nov 2013 16:15:44 -0600] rev 20108
merge with stable
Sean Farley <sean.michael.farley@gmail.com> [Wed, 06 Nov 2013 19:01:14 -0600] rev 20107
bookmarks: consider successor changesets when moving bookmark (issue4015)
Previously, this required -f because we didn't consider obsolete changesets
(and their children ... or successors of those children, etc.). We now use
obsolete.foreground to calculate acceptable changesets when advancing the
bookmark.
Test coverage has been added.
Simon Heimberg <simohe@besonet.ch> [Wed, 20 Nov 2013 22:03:15 +0100] rev 20106
util: url keeps backslash in paths
Backslashes (\) in paths were encoded to %C5 when converting from url to
string. This does not look nice for windows paths. And it introduces many
problems when running tests on windows.
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 19:55:38 -0500] rev 20105
tests: deal with new gits sending status messages to stderr
git-1.8.4.2 will send messages like
Cloning into 'X'...
done.
to stderr.
Mute stderr.
Matt Mackall <mpm@selenic.com> [Mon, 25 Nov 2013 13:50:36 -0600] rev 20104
subrepo: sanitize non-hg subrepos
Matt Mackall <mpm@selenic.com> [Mon, 25 Nov 2013 13:46:46 -0600] rev 20103
shelve: fix bad argument interaction with largefiles (issue4111)
Siddharth Agarwal <sid0@fb.com> [Mon, 18 Nov 2013 09:09:05 -0800] rev 20102
strip.stripcmd: remove redundant wlock acquire/release
Now that we acquire and release a wlock in the outer scope, this is redundant.
Matt Mackall <mpm@selenic.com> [Mon, 25 Nov 2013 12:18:29 -0600] rev 20101
merge with stable
Siddharth Agarwal <sid0@fb.com> [Fri, 15 Nov 2013 18:41:40 -0800] rev 20100
bookmarks: make setcurrent with None an error
Siddharth Agarwal <sid0@fb.com> [Fri, 15 Nov 2013 18:31:02 -0800] rev 20099
strip: use bookmarks.unsetcurrent instead of setcurrent with None
Siddharth Agarwal <sid0@fb.com> [Fri, 15 Nov 2013 18:28:57 -0800] rev 20098
bmstore.write: use unsetcurrent instead of setcurrent with None
Siddharth Agarwal <sid0@fb.com> [Fri, 15 Nov 2013 18:06:01 -0800] rev 20097
commands.bookmark: use unsetcurrent instead of setcurrent with None
There are currently two different ways we can have no active bookmark:
.hg/bookmarks.current being missing and it being an empty file. This patch and
upcoming ones make an empty file the only way to represent no active bookmarks.
This is the right choice because it matches the state that a new repository
without bookmarks will be in.
Siddharth Agarwal <sid0@fb.com> [Mon, 18 Nov 2013 08:57:19 -0800] rev 20096
strip: hold wlock for entire duration
Previously, we'd acquire and release the wlock several times. This meant that
other hg processes could come in and change state. Instead of that, retain the
wlock for the entire duration of the strip.
Matt Mackall <mpm@selenic.com> [Fri, 22 Nov 2013 17:26:58 -0600] rev 20095
merge with stable
Mads Kiilerich <madski@unity3d.com> [Sun, 10 Nov 2013 18:51:21 +0100] rev 20094
bisect: report "both good and bad" as such, not as "not directly related"
Martin Geisler <martin@geisler.net> [Fri, 08 Nov 2013 11:49:13 +0100] rev 20093
phase: better error message when --force is needed
When trying to turn a draft changeset into a secret changeset, I was
told:
% hg phase -s .
cannot move 1 changesets to a more permissive phase, use --force
no phases changed
That message struck me as being backwards -- the secret phase feels
less permissive to me since it restricts the changesets from being
pushed.
We don't use the word "permissive" elsewhere, 'hg help phase' talks
about "lower phases" and "higher phases". I therefore reformulated the
error message to be
cannot move 1 changesets to a higher phase, use --force
That is not perfect either, but more in line with the help text. An
alternative could be
cannot move phase backwards for 1 changesets, use --force
which fits better with the help text for --force.
Isaac Jurado <diptongo@gmail.com> [Fri, 08 Nov 2013 09:48:01 +0100] rev 20092
hgweb: ignore non numeric "revcount" parameter values (issue4091)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 12 Nov 2013 16:23:52 +0900] rev 20091
lock: take both vfs and lock file path relative to vfs to access via vfs
This patch makes "lock.lock.__init__()" take both vfs and lock file
path relative to vfs, instead of absolute path to lock file.
This allows lock file to be accessed via vfs.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 12 Nov 2013 16:23:52 +0900] rev 20090
vfs: add "makelock()" and "readlock()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 12 Nov 2013 16:23:52 +0900] rev 20089
hg: rewrite "copystore()" with vfs
This patch rewrites "copystore()" with vfs, because succeeding patch
requires "lock.lock()" invocation with vfs.
This patch uses 'dstbase + "/lock"' instead of "join()" with both
elements even on Windows environment but it should be reasonable,
because target files given from "store.copyfiles()" already uses "/"
as path separator.
"util.copyfiles()" between two vfs-s may have to be rewritten in the
future.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 12 Nov 2013 16:23:52 +0900] rev 20088
localrepo: import "lock" module as "lockmod" for readability
Before this patch, "localrepo.py" has many methods defining local
variable "lock", even though it imports "lock" module as "lock". This
ambiguity decreases readability.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 12 Nov 2013 16:23:52 +0900] rev 20087
transaction: take journal file path relative to vfs to use file API via vfs
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 12 Nov 2013 16:23:52 +0900] rev 20086
vfs: add "chmod()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 12 Nov 2013 16:23:52 +0900] rev 20085
vfs: add "isfile()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 12 Nov 2013 16:23:52 +0900] rev 20084
transaction: unlink target file via vfs
Before this patch, unlink target file is once opened before unlinking,
because "opener" before vfs migration doesn't have "unlink()"
function.
This patch uses "vfs.unlink()" instead of "open()" and "fp.name".
Simon Heimberg <simohe@besonet.ch> [Sat, 09 Nov 2013 14:50:58 +0100] rev 20083
relink: abort earlier when on different devices (issue3916)
Add a first check of the devices before collecting candidate files. This is
much quicker when big repos are on different devices.
Keep the existing check in prune. It checks for same device of the files. This
could probably be different in a special repo store (with symlinks).
Simon Heimberg <simohe@besonet.ch> [Mon, 11 Nov 2013 22:59:26 +0100] rev 20082
localrepo: prevent to copy repo local config, copy baseui instead
Copying a repos local configuration to another repo is a bad idea because the
2nd repo gets the configuration of the first. Prevent this by really calling
repo.baseui.copy when repo.ui.copy is called.
This requires some changes in commandserver which needs to clone repo.ui for
rejecting temporary changes.
This patch has its roots back in the topic "repo isolation" around f0564402d059
and was suggested by mpm.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 08 Nov 2013 14:42:09 +0900] rev 20081
doc: show details of command options in pages generated by docutils
Before this patch, HTML/man pages generated by docutils don't show
details of each command options, whether it should take argument or
not for example, even though "hg help" does.
This patch shows details of command options as same as "hg help"
shows.
This patch uses "--option <VALUE[+]>" style instead of "--option
<VALUE> [+]" used in output of "hg help", because docutils requires
that option argument strings starts with "<" and ends with ">".
Simon Heimberg <simohe@besonet.ch> [Tue, 05 Nov 2013 09:43:26 +0100] rev 20080
Makefile: intermediate steps work with temporary copy of hg.pot
In case of abortion or a failing step, the target file remains untouched
instead of being in an intermediate state.
Matt Mackall <mpm@selenic.com> [Thu, 21 Nov 2013 15:08:30 -0600] rev 20079
merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 21 Nov 2013 11:49:31 -0600] rev 20078
help: drop help for branches template keyword
The {branches} keyword dates to pre-1.0 Mercurial's tag-like branch
scheme which allowed changesets to be on multiple branches. This is
the last visible vestige of that scheme, users should instead be using
{branch}, possibly with if().
Siddharth Agarwal <sid0@fb.com> [Thu, 21 Nov 2013 12:47:03 -0800] rev 20077
test-command-template.t: fix failure due to trailing whitespace
Matt Mackall <mpm@selenic.com> [Thu, 21 Nov 2013 11:30:52 -0600] rev 20076
templater: makes branches work correctly with stringify (issue4108)
Durham Goode <durham@fb.com> [Mon, 11 Nov 2013 16:35:12 -0800] rev 20075
manifest: increase lrucache from 3 to 4
During a commit amend there are 4 manifests being handled:
- original commit
- temporary commit
- amended commit
- merge base
This causes a manifest cache miss which hurts perf on large repos. On a large
repo, this fix causes amend to go from 6 seconds to 5.5 seconds.
Durham Goode <durham@fb.com> [Mon, 11 Nov 2013 16:42:49 -0800] rev 20074
strip: add faster revlog strip computation
The previous revlog strip computation would walk every rev in the revlog, from
the bottom to the top. Since we're usually stripping only the top few revs of
the revlog, this was needlessly expensive on large repos.
The new algorithm walks the exact number of revs that will be stripped, thus
making the operation not dependent on the number of revs in the repo.
This makes amend on a large repo go from 8.7 seconds to 6 seconds.
Durham Goode <durham@fb.com> [Mon, 11 Nov 2013 16:40:02 -0800] rev 20073
revlog: return lazy set from findcommonmissing
When computing the commonmissing, it greedily computes the entire set
immediately. On a large repo where the majority of history is irrelevant, this
causes a significant slow down.
Replacing it with a lazy set makes amend go from 11 seconds to 8.7 seconds.
Matt Mackall <mpm@selenic.com> [Tue, 19 Nov 2013 11:29:56 -0500] rev 20072
merge with stable
Siddharth Agarwal <sid0@fb.com> [Sun, 17 Nov 2013 15:11:09 -0800] rev 20071
histedit: hold wlock and lock while in progress
Currently, histedit acquires and releases lock and wlock several times during
its run. This isn't great because it allows other hg processes to come in and
change state. With this fix, lock and wlock are acquired and released exactly
once.
The change to test-histedit-drop.t is a minor implementation one -- the cache
is still correctly invalidated, but it just happens a little later and only
gets printed out because of the unrelated --debug flag.
Matt Mackall <mpm@selenic.com> [Mon, 18 Nov 2013 15:43:45 -0500] rev 20070
merge with i18n
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 18 Nov 2013 13:29:05 -0200] rev 20069
i18n-pt_BR: fix typos in notify docs
Wagner Bruna <wbruna@yahoo.com> [Sun, 17 Nov 2013 19:52:49 -0200] rev 20068
i18n-pt_BR: synchronized with 06e118c097ff
Matt Mackall <mpm@selenic.com> [Mon, 18 Nov 2013 15:37:09 -0500] rev 20067
templater: only recursively evaluate string literals as templates (issue4103)
Matt Mackall <mpm@selenic.com> [Mon, 18 Nov 2013 14:02:26 -0500] rev 20066
templater: fix escaping in nested string literals (issue4102)
Before the templater got extended for nested expressions, it made
sense to decode string escapes across the whole string. Now we do it
on a piece by piece basis.
Matt Mackall <mpm@selenic.com> [Sun, 17 Nov 2013 20:22:59 -0500] rev 20065
merge with stable
David Soria Parra <davidsp@fb.com> [Thu, 07 Nov 2013 20:36:26 -0800] rev 20064
shelve: unshelve using an unfiltered repository
when evolve is enabled and a hidden obsolete changeset exists
in the repository, the strip during unshelve will fail due to
filtered revs. we use an unfiltered repository like to
repair.strip to strip the proper nodes.
Mads Kiilerich <madski@unity3d.com> [Thu, 07 Nov 2013 01:56:40 +0100] rev 20063
largefiles: update in two steps, handle interrupted updates better
An update would try to fetch any missing largefiles after having updated normal
files and standins. That could fail or be interrupted and would leave the
working directory in a state where the largefiles not only were missing but
also were scheduled for remove ... and where the old largefile was left in
place.
Instead we now remove old largefiles before starting to download and update
missing largefiles.
Mads Kiilerich <madski@unity3d.com> [Thu, 07 Nov 2013 01:49:48 +0100] rev 20062
largefiles: inline _updatelfile, prepare for further refactorings
Mads Kiilerich <madski@unity3d.com> [Thu, 07 Nov 2013 01:48:00 +0100] rev 20061
largefiles: cache largefiles for update, also without printmessage
Mads Kiilerich <madski@unity3d.com> [Thu, 07 Nov 2013 01:47:59 +0100] rev 20060
largefiles: cleanup of printmessage handling - the printed flag was redundant
Augie Fackler <raf@durin42.com> [Sun, 17 Nov 2013 18:13:55 -0500] rev 20059
test-module-imports: skip on Python < 2.6, since ast is new in 2.6
Augie Fackler <raf@durin42.com> [Sun, 17 Nov 2013 17:49:48 -0500] rev 20058
Merge with stable.
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 19:56:30 -0500] rev 20057
convert: fix svn crash when svn.ra.get_log calls back with orig_paths=None
get_log started calling back with orig_paths=None on Fedora 20 with
subversion-1.8.3. That broke test-convert-svn-source.t .
There used to be some handling of that situation until e8f4e40f285a apparently
broke it. This patch restores what seems to be the most obvious handling of the
situation.
Brodie Rao <brodie@sf.io> [Sat, 16 Nov 2013 17:30:34 -0500] rev 20056
share: fix unshare calling wrong repo.__init__() method
When running the unshare command, if there's other code that tries to use
the repo after the command is finished, it'll end up with a ui object for
repo.unfiltered(). This change fixes an erroneous call to repo.__init__()
that could be on the repoview proxy class--now it's always done on the
unfiltered repo.
Siddharth Agarwal <sid0@fb.com> [Sun, 17 Nov 2013 13:31:18 -0800] rev 20055
statichttprepo.httprangeheader: implement readlines
bookmarks.readcurrent() requires readlines() on file objects returned from
repo.vfs. It isn't used right now but will be in upcoming patches.
Siddharth Agarwal <sid0@fb.com> [Sun, 17 Nov 2013 13:28:11 -0800] rev 20054
statichttprepo: pass in True to splitlines, not 1
splitlines actually takes a boolean.
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:28 -0500] rev 20053
mq: don't add '* * *' separators when there is no commit message
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20052
bisect: avoid confusing use of variables with same names in nested local scopes
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20051
discovery: make note messages for new heads more readable
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20050
discovery: tweak error message for multiple branch heads
Mads Kiilerich <madski@unity3d.com> [Sat, 16 Nov 2013 15:46:29 -0500] rev 20049
test-obsolete-checkheads.t: remove todo comment that was fixed in be0fcbb1c92f
Mads Kiilerich <madski@unity3d.com> [Sun, 17 Nov 2013 11:18:39 -0500] rev 20048
convert: readability and test of rpairs function
Mads Kiilerich <madski@unity3d.com> [Sun, 17 Nov 2013 11:16:59 -0500] rev 20047
tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com> [Sun, 17 Nov 2013 10:59:35 -0500] rev 20046
tests: python hash seed is only relevant after failures - otherwise keep quiet
Siddharth Agarwal <sid0@fb.com> [Sat, 16 Nov 2013 13:29:39 -0800] rev 20045
scmutil.filecache: support watching over multiple files
Siddharth Agarwal <sid0@fb.com> [Sat, 16 Nov 2013 13:24:26 -0800] rev 20044
scmutil: introduce a filecacheentry that can watch multiple paths
Siddharth Agarwal <sid0@fb.com> [Sat, 16 Nov 2013 13:19:06 -0800] rev 20043
scmutil: rename filecacheentry to filecachesubentry
Upcoming patches will allow the file cache to watch over multiple files, and
call the decorated function again if any of the files change.
The particular use case for this is the bookmark store, which needs to be
invalidated if either .hg/bookmarks or .hg/bookmarks.current changes. (This
doesn't currently happen, which is a bug. This bug will also be fixed in
upcoming patches.)
Siddharth Agarwal <sid0@fb.com> [Sat, 16 Nov 2013 13:33:33 -0800] rev 20042
scmutil.filecacheentry: make stat argument to constructor mandatory
There's no real upside to making stat optional -- this constructor has just two
callers.
Siddharth Agarwal <sid0@fb.com> [Sat, 16 Nov 2013 13:57:35 -0800] rev 20041
test-filecache.py: add markers to the output for each event
Previously it was possible that a different, incorrect set of events might
print out 'creating' the same number of times.
Siddharth Agarwal <sid0@fb.com> [Sat, 16 Nov 2013 14:10:28 -0800] rev 20040
test-filecache.py: make setbeforeget test clearer
'0' and 'None' as outputs tripped me up. Make the distinction between values
set externally and values computed by calling the decorated function clearer.
Augie Fackler <raf@durin42.com> [Sun, 17 Nov 2013 13:38:35 -0500] rev 20039
test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com> [Sun, 17 Nov 2013 13:33:20 -0500] rev 20038
import-checker: try a little harder to show fewer cycles
This makes sure that all cycles begin with the lexicographically first
module, so that we're less likely to show overlapping cycles in the
final analysis.
Augie Fackler <raf@durin42.com> [Sun, 17 Nov 2013 16:58:18 -0500] rev 20037
import-checker: ignore nested imports
Augie Fackler <raf@durin42.com> [Sun, 17 Nov 2013 13:04:18 -0500] rev 20036
contrib: add an import checker
This checks for cycles in the module graph and verifies that imports
of stdlib modules are not on the same line as relative imports of
mercurial modules.
Augie Fackler <raf@durin42.com> [Wed, 06 Nov 2013 22:09:15 -0500] rev 20035
makememctx: move from patch to context to break import cycle
Augie Fackler <raf@durin42.com> [Wed, 06 Nov 2013 16:48:06 -0500] rev 20034
cleanup: move stdlib imports to their own import statement
There are a few warnings still produced by my import checker, but
those are false positives produced by modules that share a name with
stdlib modules.
Augie Fackler <raf@durin42.com> [Wed, 06 Nov 2013 18:19:04 -0500] rev 20033
pathutil: tease out a new library to break an import cycle from canonpath use
Augie Fackler <raf@durin42.com> [Wed, 06 Nov 2013 14:38:34 -0500] rev 20032
subsettable: move from repoview to branchmap, the only place it's used
This is a step towards breaking an import cycle between revset and
repoview. Import cycles happened to work in Python 2 with implicit
relative imports, but breaks on Python 3 when we start using explicit
relative imports via 2to3 rewrite rules.
Augie Fackler <raf@durin42.com> [Sat, 16 Nov 2013 20:12:02 -0500] rev 20031
obsolete: add __eq__ and __hash__ to marker to make set() deduplication work
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 16 Nov 2013 20:31:58 -0500] rev 20030
obsolete: do not accept duplicated marker during exchange
Before this patch, duplicated obsolescence markers could slip into an
obstore if the bookmark was unknown locally and duplicated in the
incoming obsolescence stream.
Existing duplicate markers will not be automatically removed but
they'll stop propagating. Having a few duplicated markers is harmless
and people have been warned evolution is <blink>experimental</blink>
anyway.
Augie Fackler <raf@durin42.com> [Sun, 17 Nov 2013 13:42:24 -0500] rev 20029
Merge with stable.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 16 Nov 2013 20:34:58 -0500] rev 20028
obsolete: stop doing membership test on list
According to the Surgeon General, computer should not use list for membership
testing because of the risk of being slow.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 08 Nov 2013 12:45:52 +0900] rev 20027
bookmarks: rewrite pushing bookmarks in "localrepository.push()" by "compare()"
This patch adds "updateremote()", which uses "compare()" to compare
bookmarks between the local and the remote repositories, to replace
pushing local bookmarks in "localrepository.push()".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 08 Nov 2013 12:45:52 +0900] rev 20026
bookmarks: rewrite pushing local bookmarks in "commands.push()" by "compare()"
This patch adds "pushtoremote()", which uses "compare()" to compare
bookmarks between the local and the remote repositories, to replace
pushing local bookmarks in "commands.push()".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 08 Nov 2013 12:45:52 +0900] rev 20025
bookmarks: rewrite "updatefromremote()" by "compare()"
To update entries in bmstore "localmarks", this patch uses
"bin(changesetid)" instead of "repo[changesetid].node()" used in
original "updatefromremote()" implementation, because the former is
cheaper than the latter.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 08 Nov 2013 12:45:52 +0900] rev 20024
bookmarks: add function to centralize the logic to compare bookmarks
This patch adds "compare()" function to centralize the logic to
compare bookmarks between two repositories.
Alexander Plavin <alexander@plav.in> [Sun, 10 Nov 2013 18:23:29 +0400] rev 20023
hgweb: use semantically suitable filelog.revs in filelog
The functions are equivalent in behaviour, so no behavior change.
Alexander Plavin <alexander@plav.in> [Sun, 10 Nov 2013 18:07:56 +0400] rev 20022
hgweb: always compute all entries and latestentry in filelog
This is the same thing which was done for changelog earlier, and it doesn't
affect performance at all. This change will make it possible to get the first
entry of the next page easily without computing the list twice.
Alexander Plavin <alexander@plav.in> [Sun, 10 Nov 2013 18:05:53 +0400] rev 20021
hgweb: remove unused argument of entries function in filelog
This doesn't change the behavior as the argument wasn't used anyway.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 16 Nov 2013 23:14:20 +0900] rev 20020
transplant: use peer of source repository as "remote" for "repo.pull()"
Before this patch, transplant with "--merge" option fails with
traceback unexpectedly, if it causes pull from the source repository
on the local host.
"discovery.findcommonincoming()" invokes "capable()" method on the
object given from "localrepository.pull()", but it is
"localrepository" object in this case and doesn't have such method.
This patch uses peer object of source repository as "remote" argument
for "localrepository.pull()" invocation like other invocations of it
in transplant.py.
Sean Farley <sean.michael.farley@gmail.com> [Fri, 15 Nov 2013 22:57:11 -0500] rev 20019
run-tests: remove files that we potentially create outside of $TMPDIR
Sean Farley <sean.michael.farley@gmail.com> [Fri, 15 Nov 2013 22:56:08 -0500] rev 20018
run-tests: remove code that creates a dummy 'diffstat'
This was introduced in fb1d7a42663c for an old test that is no longer the same.
Matthew Turk <matthewturk@gmail.com> [Fri, 15 Nov 2013 18:08:50 -0500] rev 20017
template: change extras to use showlist rather than manual templ call.
This enables start_extras and end_extras in template maps.
Matthew Turk <matthewturk@gmail.com> [Fri, 15 Nov 2013 18:09:02 -0500] rev 20016
help: adding example 'extras' printing to 'hg help templates'
Matthew Turk <matthewturk@gmail.com> [Fri, 15 Nov 2013 16:53:54 -0500] rev 20015
help: document about {extras} template keyword
This adds text about the "extras" template keyword, similar to that proposed by
Yuya Nishihara previously.
Simon Heimberg <simohe@besonet.ch> [Sat, 09 Nov 2013 14:50:12 +0100] rev 20014
check-code: document last ignore regexp
For easier remembering to delete when it is not needed anymore.
Simon Heimberg <simohe@besonet.ch> [Sat, 09 Nov 2013 14:49:05 +0100] rev 20013
check-code: drop unneeded ignore patterns
The exceptions seem to have disappeared.
Matt Mackall <mpm@selenic.com> [Sat, 16 Nov 2013 12:44:28 -0500] rev 20012
merge with stable
Matt Mackall <mpm@selenic.com> [Sat, 16 Nov 2013 12:34:05 -0500] rev 20011
merge with i18n
Durham Goode <durham@fb.com> [Fri, 15 Nov 2013 13:20:49 -0800] rev 20010
contrib: add editmerge script for editor conflict prompts
Adds a script that opens the editor to the conflict as part of the merge
process. This way you can fix the merge during the rebase instead of having to
pause the rebase, resolve --mark, rebase --continue.
Only works on unix.
Matt Mackall <mpm@selenic.com> [Thu, 14 Nov 2013 21:37:18 -0600] rev 20009
strip: fix last unprotected mq reference (issue4097)
Matt Mackall <mpm@selenic.com> [Thu, 14 Nov 2013 18:07:43 -0600] rev 20008
tests: skip tests that require not having root (issue4089)
This adds a new root hghave to test against. Almost all of these are a
subset of unix-permissions, but that is also used for checking exec
bit handling.
Matt Mackall <mpm@selenic.com> [Thu, 14 Nov 2013 17:17:44 -0600] rev 20007
make: restrict recursion in make clean
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 12 Nov 2013 00:07:23 +0900] rev 20006
scmutil: skip checks in "casecollisionauditor" if filename is already checked
Before this patch, almost all of check code in
"casecollisionauditor.__call__()" is executed, even if specified
filename is already checked, because "f in self._newfiles" is examined
lastly.
In addition to it, adding "fl" to "self._loweredfiles" and "f" to
"self._newfiles" are also redundant in such case.
This patch checks "f in self._newfiles" first, and returns immediately
to avoid execution of check code for efficiency.
Simon Heimberg <simohe@besonet.ch> [Sat, 09 Nov 2013 10:21:20 +0100] rev 20005
check-code: prepend warning prefix only once, but for each warning
The code adding the prefix is now run once per pattern. It was run once per
file (after the change 3e1e4a8aec1e).
Demonstrate that it is working now by extending the test. Raise two different
warnings, one of them twice.
Wagner Bruna <wbruna@softwareexpress.com.br> [Wed, 13 Nov 2013 16:46:46 -0200] rev 20004
hgweb, i18n: do not translate search mode description
The search mode description can't be translated by itself, since
it's displayed as part of a template phrase (the "Assuming ..."
/ "Use ... instead" bits). Just drop the translation markers for
now, since the templates themselves currently do not support
translations.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 10 Nov 2013 16:48:24 +0900] rev 20003
tests: end output lines including path with "(glob)" to pass on Windows
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 10 Nov 2013 16:48:24 +0900] rev 20002
tests: quote environment variable to extract wildcard on MinGW environment
On MinGW environment, the command line below in test script can't
extract wildcard "*" and remove target files correctly.
$ rm $ENVVAR/foo/bar.*
To extract wildcard, environment variable should be quoted by double
quotation like below:
$ rm "$ENVVAR"/foo/bar.*
This patch also omits "-f" of "rm" to know whether files are removed
or not by exit code of it.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 10 Nov 2013 16:48:24 +0900] rev 20001
tests: choose the path separator in PYTHONPATH suitable for platform
Before this patch, test code introduced by e3a5922e18c3 into
test-extension.t always uses ":" as the path separator in PYTHONPATH.
But ";" should be used on Windows.
This patch chooses the path separator in PYTHONPATH suitable for
platform.
Mads Kiilerich <madski@unity3d.com> [Fri, 08 Nov 2013 12:35:50 +0100] rev 20000
util: warn when adding paths ending with \
Paths ending with \ will fail the verification introduced in 684a977c2ae0 when
checking out on Windows ... and if it didn't fail it would probably not do what
the user expected.
Simon Heimberg <simohe@besonet.ch> [Tue, 05 Nov 2013 09:00:31 +0100] rev 19999
check-code: more replacement characters
for finding '.. note::' (even) more exact by using more characters:
replace '.' with 'p' and ':' with 'q'
Simon Heimberg <simohe@besonet.ch> [Tue, 05 Nov 2013 09:00:31 +0100] rev 19998
check-code: check comment for '.. note::' without two newlines
Because string entries are replaced before matching, we must search for
the transformed pattern. But it seems to be quite unique and does not return
false matches. If it will, they can be listed as 3rd arg in pypats.
Simon Heimberg <simohe@besonet.ch> [Tue, 05 Nov 2013 08:59:55 +0100] rev 19997
documentation: add an extra newline after note directive
Like this no docutils version interprets any line in the following text as
argument of note.
Simon Heimberg <simohe@besonet.ch> [Mon, 04 Nov 2013 10:23:06 +0100] rev 19996
tests: modify minirst test input to new format
Modifying the test input data shows the effects of the last patches.
In text output nothing has changed.
In html output the title has moved on its own line.
Simon Heimberg <simohe@besonet.ch> [Mon, 04 Nov 2013 10:23:06 +0100] rev 19995
minirst: do not add a 2nd empty paragraph
This does not add a separating block after a separated note directive.
.. note::
text
is formatted to
Note:
text
Simon Heimberg <simohe@besonet.ch> [Mon, 04 Nov 2013 10:23:06 +0100] rev 19994
minirst: find admonitions before pruning comments and adding margins
Lines with only a directive are not deleted anymore because they are detected
before comments are deleted by prunecomments().
addmargins() will be adapted later.
Simon Heimberg <simohe@besonet.ch> [Mon, 04 Nov 2013 10:23:06 +0100] rev 19993
minirst: do not fail on an empty admonition block
Simon Heimberg <simohe@besonet.ch> [Mon, 04 Nov 2013 10:23:06 +0100] rev 19992
minirst: do not interpret a directive as a literal block
When a directive was on its own line, it was interpreted as a literal block.
Example of problematic input:
.. note::
a note text
Simon Heimberg <simohe@besonet.ch> [Tue, 05 Nov 2013 09:43:36 +0100] rev 19991
Makefile: do update on a temporary copy of a po file
This avoids having a half completed file (with a new timestamp) when msgmerge
has failed.
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 04 Nov 2013 10:52:41 -0200] rev 19990
i18n-pt_BR: synchronized with d24ee6d7d167
Matt Mackall <mpm@selenic.com> [Thu, 07 Nov 2013 15:24:23 -0600] rev 19989
date: allow %z in format (issue4040)
Matt Mackall <mpm@selenic.com> [Wed, 06 Nov 2013 16:36:07 -0600] rev 19988
merge with stable
Siddharth Agarwal <sid0@fb.com> [Wed, 06 Nov 2013 10:20:18 -0800] rev 19987
merge: move forgets to the beginning of the action list
Forgets need to be in the beginning of the action list, same as removes. This
lets us avoid clashes in the dirstate where a directory is forgotten and a
file with the same name is added, or vice versa.
Durham Goode <durham@fb.com> [Fri, 01 Nov 2013 17:08:06 -0700] rev 19986
rebase: fix working copy location after a --collapse (issue4080)
Rebasing with --collapse would leave the working copy on the parent of the
collapsed commit, instead of on the collapsed commit. This fixes that. Also
fixes a few tests that already covered this area but had bad data.
This also fixes issue3716 where bookmarks are not kept across rebases with
--collapse. I updated the test to cover that case as well.
Augie Fackler <raf@durin42.com> [Wed, 06 Nov 2013 12:53:39 -0500] rev 19985
Merge with stable.
Durham Goode <durham@fb.com> [Mon, 04 Nov 2013 19:59:00 -0800] rev 19984
rebase: fix rebase aborts when 'tip-1' is public (issue4082)
When aborting a rebase where tip-1 is public, rebase would fail to undo the merge
state. This caused unexpected dirstate parents and also caused unshelve to
become unabortable (since it uses rebase under the hood).
The problem was that rebase uses -2 as a marker rev, and when it checked for
immutableness during the abort, -2 got resolved to the second to last entry in
the phase cache.
Adds a test for the fix. Add exception to phase code to prevent this in the
future.
Augie Fackler <raf@durin42.com> [Tue, 05 Nov 2013 13:25:45 -0500] rev 19983
Merge with stable.
Simon Heimberg <simohe@besonet.ch> [Sat, 02 Nov 2013 11:25:04 +0100] rev 19982
check-code: prepend warning prefix for repeated warnings only once
When a warning occured several times in one file, "warning: " was prepended
several times:
examplefile.py:3:
> def a(object):
warning: this looks wrong
examplefile.py:27:
> def x(object):
warning: warning: this looks wrong
Simon Heimberg <simohe@besonet.ch> [Sat, 02 Nov 2013 11:25:33 +0100] rev 19981
check-code: fix an error message
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 05 Nov 2013 10:55:45 +0100] rev 19980
test: do not add .pyc and .orig in test-commit-amend.t (issue4085)
This makes the test fails with disabled byte-compilation
(PYTHONDONTWRITEBYTECODE="1" environmental variable).
Matt Mackall <mpm@selenic.com> [Fri, 01 Nov 2013 17:04:18 -0500] rev 19979
Added signature for changeset d825e4025e39
Matt Mackall <mpm@selenic.com> [Fri, 01 Nov 2013 17:04:14 -0500] rev 19978
Added tag 2.8 for changeset d825e4025e39
Matt Mackall <mpm@selenic.com> [Fri, 01 Nov 2013 17:04:03 -0500] rev 19977
merge with i18n
Wagner Bruna <wbruna@softwareexpress.com.br> [Fri, 01 Nov 2013 11:04:48 -0200] rev 19976
i18n-pt_BR: fix a few missing changes on 95304251c376
Wagner Bruna <wbruna@yahoo.com> [Thu, 31 Oct 2013 00:25:20 -0200] rev 19975
i18n-pt_BR: synchronized with 95304251c376
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 31 Oct 2013 03:05:46 +0900] rev 19974
i18n-ja: synchronized with 1d7a36ff2615
Johan Bjork <jbjoerk@gmail.com> [Sun, 13 Oct 2013 08:38:30 -0400] rev 19973
patch: ensure valid git diffs if source/destination file is missing (issue4046)
This is arguably a workaround, a better fix may be in the repo to
ensure that it won't list a file 'modified' unless there is a file
context for the previous version.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 27 Oct 2013 00:24:25 +0900] rev 19972
histedit: add description about exit code
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 27 Oct 2013 00:24:25 +0900] rev 19971
rebase: add description about exit code when there are unresolved conflicts
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 02 Nov 2013 04:49:42 +0900] rev 19970
shelve: remove unused variable assignment
Fix test-check-pyflakes.t error after 1d7a36ff2615.
This patch replaces "readshelvedfiles()" invocation by
"shelvedfile().exists()" check and aborting, because it is required
only to ensure that shelved changes corresponded to specified name
exist after invocation.
This patch also remove definition of "readshelvedfiles()" itself,
because it is invoked only from the line removed by this patch.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 30 Oct 2013 19:45:14 +0100] rev 19969
rebase: fix selection of base used when rebasing merge (issue4041)
Prior this changeset, rebasing a merge whose first parent was not in
the rebase lead to wrong and highly conflicting merge. See the in-line
comment for details.
Test have been updated with the data provided by the reported.
Pavlos Touboulidis <pav@pav.gr> [Tue, 29 Oct 2013 21:54:49 +0200] rev 19968
doc: fix internal date sample (issue4072)
Mads Kiilerich <madski@unity3d.com> [Mon, 28 Oct 2013 22:34:07 +0100] rev 19967
largefiles: use 'remote'/'local' in merge prompts like in other merge prompts
Prompts like
foo has been turned into a largefile
use (l)argefile or keep as (n)ormal file?
was not as clear as the usual prompts that use 'remote' or 'local' to explain
what happened on which side ... especially not when used to the normal prompts.
"as" could also indicate that it would be possible to take the content of the
largefile and somehow put it into the normal file. It could make it more clear
that it was a choice between one side or the other.
For consistency we will now phrase it like:
remote turned local normal file f into a largefile
use (l)argefile or keep (n)ormal file?
Mads Kiilerich <madski@unity3d.com> [Mon, 28 Oct 2013 22:34:05 +0100] rev 19966
largefiles: systematic testing of merges to/from largefiles
427ce5633c1c fixed one problem with update and added a test case for it. The
test coverage was thus insufficient before that.
To make sure we have good test coverage in this area we add systematic testing
of all cases of merges that may or may not change normal files to largefiles or
vice versa.
The tests shows some annoying extra merge prompts in some cases, but these
prompts are hard to avoid and they are now "safe" - they do not leave the
system in a confused inconsistent state.
Mads Kiilerich <madski@unity3d.com> [Wed, 23 Oct 2013 23:42:13 +0800] rev 19965
check-code: fix no-check-code skip message - obfuscation was too obscure
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 29 Oct 2013 01:03:43 +0900] rev 19964
shelve: remove useless and incorrect code paths for file access
This patch removes code paths in "shelvedfile.opener()", because:
- explicit "vfs.mkdir()" invocation is useless
"vfs.__call__()" for modes other than "read" creates parent
directory of target file automatically by "util.ensuredirs()".
- mode checking in "except IOError" code path is useless
ENOENT occurs only for "read" mode, because target file is
created forcibly for other modes.
- there is no explicit "return" statement in the code path for
"except IOError" if "mode[0] in 'wa'"
this is incorrect, because None may be returnd unexpectedly,
even though it seems the EEXIST case in the directory creation
race for ".hg/shelved" and is very rare.
this directory creation race is also treated in
"util.ensuredirs()".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 29 Oct 2013 01:03:43 +0900] rev 19963
shelve: disallow commit while unshelve is in progress
Before this patch, commit is allowed even while unshelve is in
progress.
In the other hand, "hg unshelve --abort" and "hg unshelve --continue"
check whether parent revisions of the working directory have changed
or not since last "hg unshelve", and abort without clearing state for
unshelve in progress if they have.
This causes that accidental commit makes clearing state for unshelve
difficult in ordinary ways.
This patch disallows commit while unshelve is in progress for
consistency.
Matt Mackall <mpm@selenic.com> [Wed, 30 Oct 2013 16:03:42 -0500] rev 19962
bdiff: avoid a memory error on malloc failure
Durham Goode <durham@fb.com> [Wed, 23 Oct 2013 13:12:48 -0700] rev 19961
shelve: use rebase instead of merge (issue4068)
Previously, shelve used merge to unshelve things. This meant that if you shelved
changes on one branch, then unshelved on another, all the changes from the first
branch would be present in the second branch, and not just the shelved changes.
The fix is to use rebase to pick the shelve commit off the original branch and
place it on top of the new branch. This means only the shelved changes are
brought across.
This has the side effect of fixing several other issues in shelve:
- you can now unshelve into a file that already has pending changes
- unshelve a mv/cp now has the correct dirstate value (A instead of M)
- you can now unshelve to an ancestor of the shelve
- unshelve now no longer deletes untracked .orig files
Updates tests and adds a new one to cover the issue. The test changes fall into
a few categories:
- I removed some excess output
- The --continue/--abort state is a little different, so the parents and
dirstate needed updating
- Removed some untracked files at certain points that cluttered the output
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 25 Oct 2013 01:14:18 +0900] rev 19960
doc: put text into header of 1st column in table to generate page correctly
>From the table without header text of 1st column, docutils generates
the table with fully empty header row.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 25 Oct 2013 01:14:18 +0900] rev 19959
doc: use double quotation mark to quote arguments in examples for Windows users
On Windows, only double quotation mark can quote command line
arguments.
So, this patch uses double quotation mark to quote command line
arguments in all examples of online help document.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 25 Oct 2013 01:14:18 +0900] rev 19958
doc: end line preceding command line example with double colon
Takumi IINO <trot.thunder@gmail.com> [Thu, 24 Oct 2013 21:37:13 +0900] rev 19957
hgweb: add missing semicolon
Mads Kiilerich <madski@unity3d.com> [Wed, 23 Oct 2013 23:42:13 +0800] rev 19956
rebase: improve error message for more than one external parent
Mads Kiilerich <madski@unity3d.com> [Thu, 24 Oct 2013 12:05:22 +0800] rev 19955
rebase: refactor and rename checkexternal - it is a getter more than a setter
Mads Kiilerich <madski@unity3d.com> [Fri, 25 Oct 2013 02:33:59 +0800] rev 19954
largefiles: don't prompt for normal/largefile changes when doing plain updates
We used to get like:
$ hg up -r 2
foo has been turned into a normal file
keep as (l)argefile or use (n)ormal file? l
getting changed largefiles
0 largefiles updated, 0 removed
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ cat foo
cat: foo: No such file or directory
[1]
- which both asked the wrong question and did the wrong thing.
Instead, skip this conflict resolution when the local conflicting file has been
scheduled for removal and there thus is no conflict.
Mads Kiilerich <madski@unity3d.com> [Fri, 25 Oct 2013 02:25:10 +0800] rev 19953
largefiles: remove extra check for file to get - it _is_ by definition in p2
Mads Kiilerich <madski@unity3d.com> [Fri, 25 Oct 2013 01:24:10 +0800] rev 19952
largefiles: don't process merge actions at all when overwriting
Mads Kiilerich <madski@unity3d.com> [Thu, 24 Oct 2013 01:49:56 +0800] rev 19951
spelling: random spell checker fixes
Mads Kiilerich <madski@unity3d.com> [Thu, 17 Oct 2013 16:13:15 +0800] rev 19950
largefiles: hide passwords in URLs in ui messages
Mads Kiilerich <madski@unity3d.com> [Thu, 24 Oct 2013 01:49:56 +0800] rev 19949
largefiles: don't add extra \n when displaying remote messages in putlfile
Mads Kiilerich <madski@unity3d.com> [Mon, 21 Oct 2013 11:22:54 +0800] rev 19948
largefiles: add missing \n in ui.warn messages
Mads Kiilerich <madski@unity3d.com> [Thu, 24 Oct 2013 01:49:56 +0800] rev 19947
largefiles: fix 'unexpected response' warning newlines
Warnings should always end with \n. The warning message might contain or end
with \n, so better show it with repr encoding.
Pascal Quantin <pascal.quantin@gmail.com> [Mon, 21 Oct 2013 23:40:56 +0200] rev 19946
win32: add shelve extension to mercurial.ini
Javi Merino <cibervicho@gmail.com> [Mon, 21 Oct 2013 22:23:36 +0100] rev 19945
strip: fix spelling: "allows to" -> "allows you to"
Yuya Nishihara <yuya@tcha.org> [Tue, 22 Oct 2013 23:38:58 +0900] rev 19944
cmdutil: fix makefileobj not to clobber default modemap dict
Problem occurs if "hg cat -o" is invoked more than once in the same process.
The output of "hg cat" will be appended because of modemap[fn] = 'ab'.
Takumi IINO <trot.thunder@gmail.com> [Tue, 22 Oct 2013 12:41:05 +0900] rev 19943
shelve: make unshelve work even if it don't run in repository root
revertfiles are relative to the repository root. not paths relative to the cwd.
Matt Mackall <mpm@selenic.com> [Mon, 21 Oct 2013 10:50:58 -0700] rev 19942
tests: move generaldelta test to inline python (issue4064)
Matt Mackall <mpm@selenic.com> [Mon, 21 Oct 2013 10:26:38 -0700] rev 19941
help: minor tweak to push help
David Soria Parra <dsp@experimentalworks.net> [Sat, 12 Oct 2013 18:51:34 -0700] rev 19940
pager: honour internal aliases
If paging is configured for a command all it's internal defined aliases
will be paged as well. This will make attend=log cause 'hg history'
to run the pager. However custom aliases will not be paged by default.
Matt Mackall <mpm@selenic.com> [Sun, 20 Oct 2013 16:45:04 -0700] rev 19939
Added signature for changeset 1596f2d8f242
Matt Mackall <mpm@selenic.com> [Sun, 20 Oct 2013 16:44:58 -0700] rev 19938
Added tag 2.8-rc for changeset 1596f2d8f242
Matt Mackall <mpm@selenic.com> [Sun, 20 Oct 2013 16:43:11 -0700] rev 19937
merge default into stable for 2.8 freeze
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 03 Oct 2013 23:16:07 +0900] rev 19936
discovery: revise hint message introduced by changeset b00ba31313c3
This patch revises hint message from "for detail about" introduced by
changeset b00ba31313c3 to "for details about", to unify it with the
hint message introduced by proceeding patch.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 03 Oct 2013 23:16:06 +0900] rev 19935
push: add more detailed explanation about "--force" to online help document
This patch adds more detailed explanation about "--force" to online
help document of "hg push" to prevent novice users to execute "push
--force" easily without understanding about problems of multiple
branch heads in the repository.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 03 Oct 2013 23:16:06 +0900] rev 19934
push: hide description about "-f" in the hint to prevent from using it easily
"use push -f to force" in the hint at abortion of "hg push" may cause
novice users to execute "push -f" easily without understanding about
problems of multiple branch heads in the repository.
This patch hides description about "-f" in the hint, and leads into
seeing "hg help push" for details about pushing new heads.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 05 Oct 2013 01:02:22 +0900] rev 19933
demandimport: allow extensions to import own modules by absolute name
Before this patch, python modules of each extensions can't import
another one in own extension by absolute name, because root modules of
each extensions are loaded with "hgext_" prefix.
For example, "import extroot.bar" in "extroot/foo.py" of "extroot"
extension fails, even though "import bar" in it succeeds.
Installing extensions into site-packages of python library path can
avoid this problem, but this solution is not reasonable in some cases:
using binary package of Mercurial on Windows, for example.
This patch retries to import with "hgext_" prefix after ImportError,
if the module in the extension may try to import another one in own
extension.
This patch doesn't change some "_import()"/"_origimport()" invocations
below, because ordinary extensions shouldn't cause such invocations.
- invocation of "_import()" when root module imports sub-module by
absolute path without "fromlist"
for example, "import a.b" in "a.__init__.py".
extensions are loaded with "hgext_" prefix, and this causes
execution of another (= fixed by this patch) code path.
- invocation of "_origimport()" when "level != -1" with "fromlist"
for example, importing after "from __future__ import
absolute_import" (level == 0), or "from . import b" or "from .a
import b" (0 < level),
for portability between python versions and environments,
extensions shouldn't cause "level != -1".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 05 Oct 2013 01:02:22 +0900] rev 19932
demandimport: support "absolute_import" for external libraries (issue4029)
Before this patch, demandimport of Mercurial may fail to load external
libraries using "from __future__ import absolute_import": for example,
importing "foo" in "bar.baz" module will load "bar.foo" if it exists,
even though "absolute_import" is enabled in "bar.baz" module.
So, extensions for Mercurial can't use such external libraries.
This patch saves "level" of import request for on-demand module
loading in the future: default value of level is -1, and level is 0
when "absolute_import" is enabled.
"level" value is passed to built-in import function in
"_demandmod._load()" and it should load target module correctly.
This patch changes only one "_demandmod" construction case other than
cases below:
- construction in "_demandmod._load()"
this code path should be used only in relative sub-module
loading case
- constructions other than patched one in"_demandimport()"
these code paths shouldn't be used in "level != -1" case
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 05 Oct 2013 01:02:22 +0900] rev 19931
hghave: add "py3k" feature to check whether test runs with Python 3.x
This patch adds "py3k" feature to check whether test runs with Python
3.x.
This check is needed for portability of test code: for example, in the
default, modules are imported relatively first with python 2.x, but
imported absolutely with Python 3.x.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 05 Oct 2013 01:02:22 +0900] rev 19930
hghave: add "absimport" feature to check "absolute_import" in __future__
This patch adds "absimport" feature to check whether "absolute_import"
exists in __future__, which means supporting module loading by
absolute name.
This check is needed for portability of test code using
"absolute_import", because Python earlier than 2.5 doesn't support it.
Siddharth Agarwal <sid0@fb.com> [Tue, 01 Oct 2013 17:43:54 -0700] rev 19929
merge: exit early during a no-op update (BC)
hg update . (or equivalents) are effectively no-ops in just about all
circumstances. These sorts of updates can be especially common in a
bookmark-oriented workflow. This saves us a status check and a manifest
decompression, which means that on a repo with over 210,000 files, this brings
hg update . down from 2.5 seconds to 0.15.
There is one change in behavior: a file that was added, not committed, and then
deleted but not removed used to be removed from the dirstate. With this patch
it isn't. This is what causes the change in test-mq-qpush-exact.t. This seems
like it's enough of an edge case to not be worth handling.
The output of test-empty.t changes because those files are not yet created.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 17 Oct 2013 21:45:17 +0900] rev 19928
localrepo: invoke only feature setup functions for enabled extensions
Before this patch, each feature setup functions for localrepository
class should examine whether corresponding extension is enabled or not
by themselves.
This patch invokes only feature setup functions defined in module of
enabled extensions, and it makes implementation of feature setup
functions easier and simpler.
Yuya Nishihara <yuya@tcha.org> [Wed, 02 Oct 2013 21:16:40 +0900] rev 19927
lock: handle race in trylock/testlock on Windows
readlock may raise IOError if the system does not support symlink.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 14 Oct 2013 17:12:59 +0200] rev 19926
rebase: preserve active bookmark when not at head (issue3813)
Now that the working directory parent is preserved, we can preserve the active
bookmark too.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 14 Oct 2013 16:12:29 +0200] rev 19925
rebase: preserve working directory parent (BC)
Prior to this changeset, rebase always left the working directory as a parent of
the last rebased changeset. The is dubious when, before the rebase, the working
directory was not a parent of the tip most rebased changeset.
With this changeset, we move the working directory back to its original parent.
If the original parent was rebased, we use it's successors.
This is a step toward solving issue3813 (rebase loses active bookmark if it's
not on a head)
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 14 Oct 2013 16:49:54 +0200] rev 19924
tests: prepare rebase test for wc parent preservation
In the way to solving issue3813 we'll preserve the working directory parent
after the rebase. Multiple rebases test expect the working directory parent to
be tip after rebase. We patches them before the actual change to prevent
confusion.
Simon Heimberg <simohe@besonet.ch> [Fri, 18 Oct 2013 18:56:52 +0200] rev 19923
tests: test-gendoc.t checks if anything was translated
This would triggered when the variable would be set wrong again.
Simon Heimberg <simohe@besonet.ch> [Fri, 18 Oct 2013 18:49:45 +0200] rev 19922
tests: really test translations for rst syntax errors (issue4003)
The variable LC_ALL did not work, use LANGUAGE instead. Before this patch, the
original language C was generated (and tested) in every run.
Simon Heimberg <simohe@besonet.ch> [Fri, 18 Oct 2013 18:49:32 +0200] rev 19921
i18n: fix wrong rst syntax
Fix syntax errors like wrong indentation and invalid quotation.
All errors preventing to generate valid html documentation (by gendoc.py) are
fixed.
Matt Mackall <mpm@selenic.com> [Sat, 19 Oct 2013 17:26:34 -0700] rev 19920
i18n-ru: fix the language team field
Having this at the default value caused some versions of msgfmt to
give fatal errors.
Mads Kiilerich <madski@unity3d.com> [Thu, 10 Oct 2013 04:32:36 +0200] rev 19919
commands: refactor 'serve', extract the http service class
Mads Kiilerich <madski@unity3d.com> [Thu, 10 Oct 2013 04:28:44 +0200] rev 19918
largefiles: refactor basestore, extract _gethash method
Mads Kiilerich <madski@unity3d.com> [Thu, 10 Oct 2013 04:28:39 +0200] rev 19917
largefiles: make the protocol hack for replacing heads with lheads more precise
Before the hack would replace 'heads' with 'lheads' no matter where it occured
in a batch command string.
Instead we will use a regexp to more carefully only match the 'heads' commands.
Brodie Rao <brodie@sf.io> [Mon, 01 Apr 2013 20:01:16 -0700] rev 19916
mq: refactor usage of repo.branchmap().iteritems() with itervalues()
Matt Mackall <mpm@selenic.com> [Sat, 19 Oct 2013 14:21:05 -0700] rev 19915
merge with stable
Matt Mackall <mpm@selenic.com> [Sat, 19 Oct 2013 14:20:31 -0700] rev 19914
merge with i18n
Alexander Sauta <demosito@gmail.com> [Thu, 10 Oct 2013 13:38:13 +0100] rev 19913
i18n-ru: synchronized with 1aaefba2a3a9
Vladimir Zakharov <zakharov.vv@gmail.com> [Tue, 27 Aug 2013 16:03:16 +0400] rev 19912
i18n-ru: fix misprints
Augie Fackler <raf@durin42.com> [Wed, 16 Oct 2013 10:36:58 -0400] rev 19911
shelve: some docstring cleanups
Siddharth Agarwal <sid0@fb.com> [Mon, 14 Oct 2013 00:25:29 -0400] rev 19910
dirstate.status: return explicit unknown files even when not asked
dirstate.walk will return unknown files that were explicitly requested, even
if listunknown is false. There's no point in dropping these files on the
floor in dirstate.status.
This has no effect on any current callers, because all of them assume the
unknown list is empty and ignore it. Future callers may find it useful,
though.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 14 Oct 2013 18:29:56 +0200] rev 19909
shelve: add minimal documentation to all functions
There is a lot of functions in this extension. We had a small documentation help
people getting started.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 14 Oct 2013 17:46:47 +0200] rev 19908
shelve: use the class constant in the clear method
This class attribut is used everywhere else. Not using it in clear will get us
in trouble sooner or later.
Alexander Plavin <alexander@plav.in> [Sat, 12 Oct 2013 11:29:28 +0400] rev 19907
hgweb: fix unstoppable loading of graph when no more results
When a user reaches the end of repo history with graph view, it (unsuccessfully)
tried to load more entries. This patch disables further loading attempts.
Alexander Plavin <alexander@plav.in> [Wed, 24 Jul 2013 03:20:26 +0400] rev 19906
hgweb: remove now unnecessary explicit header() and footer()
They became unnecessary after allowing custom-named entries in templates.
Alexander Plavin <alexander@plav.in> [Fri, 16 Aug 2013 21:41:19 +0400] rev 19905
hgweb: replace 'shortlog' with 'changelog' in raw changelog template
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 14 Oct 2013 18:59:12 +0200] rev 19904
shelve: drop pickle usage
Pickle was used to the `shelvedstate` file. However the content of the file is
very simple and we can handle serialisation ourself. Not using pickle is a net
win.
Note incrementing the format version as no releases have been done so far.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 15 Oct 2013 00:51:05 +0900] rev 19903
store: use "vfs.exists()" instead of "os.path.exists()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 15 Oct 2013 00:51:05 +0900] rev 19902
context: use "vfs.lstat()" to examine target path instead of "os.path.*"
This patch gets stat object of target path by "vfs.lstat()", and
examines stat object to know the type of it. This follows the way in
"workingctx.add()".
This should be cheaper than original implementation invoking
"lexists()", "isfile()" and "islink()".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 15 Oct 2013 00:51:04 +0900] rev 19901
context: use "vfs.lstat()" instead of "os.lstat()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 15 Oct 2013 00:51:04 +0900] rev 19900
context: use "vfs.lstat()" instead of "os.lstat()"
This patch also changes paths added to "rejected" list from full path
(referred by "p") to relative one (referred by "f"), when type of
target path is neither file nor symlink.
This change should be reasonable, because the path added to "rejected"
list is relative one, when "OSError" is raised at "lstat()".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 15 Oct 2013 00:51:04 +0900] rev 19899
changelog: use "vfs.fstat()" instead of "util.fstat()"
Just invoking "os.fstat()" with "file.fileno()" doesn't require non
ANSI file API, because filename is not used for invocation of
"os.fstat()".
But "util.fstat()" should invoke "os.stat()" with "fp.name", if file
object doesn't have "fileno()" method for portability, and "fp.name"
may cause invocation of non ANSI file API.
So, this patch makes the constructor of appender class invoke
"util.fstat()" via vfs, to encapsulate filename handling.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 15 Oct 2013 00:51:04 +0900] rev 19898
changelog: use "vfs.rename()" instead of "util.rename()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 15 Oct 2013 00:51:04 +0900] rev 19897
vfs: add "open()" for newly added code paths which open files via vfs
This patch replaces "open()" by own "__call__()" defined in derived
classes at the first invocation, for efficiency of succeeding
invocations.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 15 Oct 2013 00:51:04 +0900] rev 19896
bookmarks: use "vfs.utime()" instead of "os.utime()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 15 Oct 2013 00:51:04 +0900] rev 19895
bookmarks: use "vfs.unlink()" instead of "util.unlink()"
Mads Kiilerich <madski@unity3d.com> [Thu, 03 Oct 2013 18:01:21 +0200] rev 19894
cmdutil: use None as default value for "function pointer" instead of False
Less type confusion.
Mads Kiilerich <madski@unity3d.com> [Thu, 03 Oct 2013 18:01:21 +0200] rev 19893
graft: make skip messages more helpful
This makes it possible for the user to understand and accept or work around
what is happening.
Mads Kiilerich <madski@unity3d.com> [Thu, 03 Oct 2013 18:01:21 +0200] rev 19892
convert: update source shamap when using filemap, just as when not using filemap
The reverse mapping was introduced in 2147a734dcf9 to make roundtrip
conversions possible ... but it did not work when using filemap.
Roundtrips with filemaps will of course only work flawlessly if inverse
mappings are used.
Especially, if a lossy convert mapping is used in one direction, then only
linear lines of development can be converted in the other direction. With this
constraint convert will do the right thing by assuming that excluded files
haven't been changed.)
A test case with general coverage of hg-hg roundtrips with filemap is added.
(There a cases where adding records of converted revisions to the shamap in the
source repository doesn't work - especially when converting the same repo to
several other repos and back. It would arguably be better if convert only
updated the shamaps in the target repo but read shamaps from both the source
and and target repo ... but that is a different story. Making the stuff we have
work consistently is step forward no matter what.)
Mads Kiilerich <madski@unity3d.com> [Sat, 20 Jul 2013 00:43:08 +0200] rev 19891
convert: introduce hg.revs to replace hg.startrev and --rev with a revset
The existing knobs for controlling which revisions to convert were often
insufficient. Revsets is a shiny hammer that provides a better solution.
Revsets has been introduced in --rev handling in a lot of other places while
being more or less backwards compatible. Doing the same here would be a much
more elegant ... but that would unfortunately not work in this case. "--rev 7"
used to mean revision 0 to 7 - it would be an unacceptable change if it
suddenly just meant revision 7.
Instead we introduce a new configuration setting. It will only work for
Mercurial repositories so adding a new commandline option for it would not be a
nice solution.
There is no way to use the fancy deprecation markup for configuration settings
so we just remove the documentation of hg.startrev.
Mads Kiilerich <madski@unity3d.com> [Thu, 03 Oct 2013 18:01:21 +0200] rev 19890
convert: refactor head calculation for hg sources
Mads Kiilerich <madski@unity3d.com> [Fri, 19 Jul 2013 14:20:11 +0200] rev 19889
convert: remove unused and incorrect default handling for revmapfile
destc is not a string and can thus not be os.path.join'ed. Convert would crash
if we ended up there ... but we wouldn't because both the sinks (hg and
subversion) sinks implement .revmapfile and "never" throws exceptions.
Wojciech Lopata <lopek@fb.com> [Mon, 30 Sep 2013 18:27:42 -0700] rev 19888
generaldelta: fix test
Durham Goode <durham@fb.com> [Fri, 11 Oct 2013 17:19:40 -0700] rev 19887
shelve: fix dirstate corruption during unshelve (issue4055)
If you shelved on top of commit A, then rebased A to @ and unshelved, any file
changed in A would appear as modified in hg status despite the contents not having
changed.
The fix is to use dirstate.setparents() instead of doing it manually. This will
be a little slower since it has to iterate through everything in the dirstate
instead of only what's in the mergestate, but this will be more correct since
the mergestate did not include files which were merged but had no conflict.
The tests also had several bad dirstate's hardcoded in them. This change updates
the tests appropriately and adds a new test to cover this specific rebase case.
Matt Mackall <mpm@selenic.com> [Wed, 09 Oct 2013 14:15:34 -0700] rev 19886
merge with stable
Sean Farley <sean.michael.farley@gmail.com> [Wed, 09 Oct 2013 14:15:20 -0700] rev 19885
shelve: only save mq state if enabled
Test coverage has been added.
Durham Goode <durham@fb.com> [Mon, 07 Oct 2013 11:45:01 -0700] rev 19884
changegroup: don't run changegroup hooks if nodes are gone
The changegroup hook runs when the repo lock is released, but it's possible that
multiple transactions have happened during that single lock and therefore the
commits the hook was for may be gone. This is the case in the shelve extension
where it adds a commit and strips it in the same lock but different
transactions (which results in warning messages during unshelve on hgsubversion
repos).
A real fix would be to attach the hook to the transaction instead, but that
might have unknown consequences. Since we're this close to code-freeze, this fix
just prevents the hook from running if the commit disappeared.
Matt Mackall <mpm@selenic.com> [Wed, 09 Oct 2013 12:02:32 -0700] rev 19883
hgweb: add escaping of tags and bookmarks in graph view
Matt Mackall <mpm@selenic.com> [Wed, 09 Oct 2013 11:50:19 -0700] rev 19882
json: add more paranoid escaping
David Soria Parra <dsp@experimentalworks.net> [Wed, 02 Oct 2013 09:50:21 +0200] rev 19881
shelve: make no_backup parameter passing python 2.4 compatible
Python 2.4 doesn't allow passing named parameter after an list unpack,
but allows to unpack a dict.
Matt Mackall <mpm@selenic.com> [Wed, 09 Oct 2013 11:27:59 -0700] rev 19880
ui: send password prompts to stderr again (issue4056)
Matt Mackall <mpm@selenic.com> [Mon, 07 Oct 2013 15:21:17 -0700] rev 19879
hgweb: escape branch names in graph view
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 02 Oct 2013 11:16:03 +0200] rev 19878
test: make test-propertycache.py python2.4 compatible
The subprocess module have not `check_call` method in python2.4. Fall back to
calling `check` with return code verification.
David Soria Parra <dsp@experimentalworks.net> [Tue, 01 Oct 2013 09:54:46 +0200] rev 19877
hgweb: log headers only if headers were successfully parsed
The headers attribute is not initialized in certain error situations
(e.g. http 400 bad request). Check for self.headers before we attempt
to access it.
Augie Fackler <raf@durin42.com> [Mon, 07 Oct 2013 17:47:55 -0400] rev 19876
merge with stable
Johan Bjork <jbjoerk@gmail.com> [Mon, 07 Oct 2013 17:47:19 -0400] rev 19875
patch: Fix nullid for binary git diffs (issue4054)
The index for an empty file in git is not 0, but sha-1("blobl 0\0").
David Soria Parra <dsp@experimentalworks.net> [Thu, 03 Oct 2013 19:41:25 +0200] rev 19874
shelve: copy bookmarks and restore them after a commit
cmdutil.commit() will advance the bookmarks. Therefore we have to restore
them afterwards. We have to use update() to ensure we preserve the bmstore
object.
Mads Kiilerich <madski@unity3d.com> [Thu, 03 Oct 2013 14:50:47 +0200] rev 19873
check-code: check that '>' is used for continued lines
Continued lines do not get the SALT mangling.
Mads Kiilerich <madski@unity3d.com> [Thu, 03 Oct 2013 14:50:47 +0200] rev 19872
check-code: check for spaces around = for named parameters
Mads Kiilerich <madski@unity3d.com> [Thu, 03 Oct 2013 14:50:47 +0200] rev 19871
run-tests: place the .t shell script next to $TESTTMP and with a useful name
--keep can thus keep it around - very convenient for debugging.
Mads Kiilerich <madski@unity3d.com> [Thu, 03 Oct 2013 14:50:46 +0200] rev 19870
tests: fix void and invalid test in test-archive.t
An echo statement was missed in the .t-ification in afe19a1bf9d3 so we ended up
with invalid sh syntax. But at the same time a continuation line was marked as
$ instead of > and we thus added the salt that made the expression valid again.
Siddharth Agarwal <sid0@fb.com> [Wed, 02 Oct 2013 14:24:25 -0700] rev 19869
inotify: don't pass pidfile option to child
The child no longer needs it.
Siddharth Agarwal <sid0@fb.com> [Wed, 02 Oct 2013 15:20:49 -0700] rev 19868
cmdutil.service: move pidfile writing to the parent in daemon mode
There is a potential race here, which I suspect I've spotted in the wild, where
something reads the pid file after the parent exits but before the child has
had a chance to write to it. Moving writing the file to the parent causes this
to no longer be an issue.
Siddharth Agarwal <sid0@fb.com> [Wed, 02 Oct 2013 15:17:50 -0700] rev 19867
cmdutil.service: move pidfile writing to a local function
An upcoming patch will reuse this code.
Siddharth Agarwal <sid0@fb.com> [Wed, 02 Oct 2013 14:20:26 -0700] rev 19866
inotify: add pidfile to parent options
An upcoming patch will move pidfile writing from the parent to the child. This
means that if the pid file isn't specified on the command-line but is specified
as a config option, it needs to be added to the parent's opts dict.
Javi Merino <cibervicho@gmail.com> [Wed, 02 Oct 2013 22:46:32 +0100] rev 19865
get-with-headers: don't block indefinitely if the server had an internal error
If the server had an internal error and returned 500, there's nothing
to read, so "response.read()" blocks indefinitely. Only output the
response if there's really a response.
Mads Kiilerich <madski@unity3d.com> [Fri, 19 Jul 2013 02:32:36 +0200] rev 19864
convert: fix description of 'convert --rev'
Mads Kiilerich <madski@unity3d.com> [Wed, 02 Oct 2013 19:46:48 +0200] rev 19863
convert: fix crash when existing converted revision didn't come from source
This case can happen when converting from multiple repositories with filemap.
Mads Kiilerich <madski@unity3d.com> [Wed, 02 Oct 2013 19:46:47 +0200] rev 19862
convert: fix crash when filemap filtering is changed
Augie Fackler <raf@durin42.com> [Tue, 01 Oct 2013 14:48:53 -0400] rev 19861
rebase: preserve metadata from grafts of changes (issue4001)
Augie Fackler <raf@durin42.com> [Tue, 01 Oct 2013 14:28:18 -0400] rev 19860
rebase: rework extrafn handling to support multiple extrafns
This makes it possible to pass keepbranches and extrafn to rebase at
the same time, although nobody uses that functionality presently. This
is a precursor to keeping graft metadata.
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:58 +0400] rev 19859
hgweb: call process_dates with a specified selector in ajax scroll
Now this function processes only newly added entries, and not old ones,
the amount of which can be much bigger.
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:58 +0400] rev 19858
hgweb: add parentSelector argument to process_dates
Allow specifying parent selector of elements to process, useful for
incremental page updates.
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:58 +0400] rev 19857
hgweb: optimize process_dates function
This function looped over every node due to getElementsByTagName('*'), instead
of using selectors. In this patch we use querySelectorAll('.age') and process
only these nodes, which is much faster and also doesn't require extra condition.
Browser compatibility isn't sacrificed: IE 8+, FF 3.5+, Opera 10+.
David Soria Parra <dsp@experimentalworks.net> [Thu, 29 Aug 2013 09:22:15 -0700] rev 19856
shelve: allow shelving of a change with an mq patch applied
We allow shelving of of changes on top of a MQ repository. MQ will
not allow repository changes on top of applied patches. We introduce
checkapplied in MQ to bypass this check.
David Soria Parra <dsp@experimentalworks.net> [Tue, 01 Oct 2013 12:20:31 +0200] rev 19855
shelve: new output format for shelve listings
Use a more condensed and mercurial-like output format for shelve listing.
We don't prefix the message with 'shelved from...' anymore as our default
name contains the branch name or the user used his own name. To avoid
just printing the last commit message, we drop writing the description
to stdout.
old output:
default [1s ago] shelved from default (01ba9745): create conflict
new output:
default (1s ago) create conflict
David Soria Parra <dsp@experimentalworks.net> [Thu, 29 Aug 2013 09:22:13 -0700] rev 19854
shelve: add a shelve extension to save/restore working changes
This extension saves shelved changes using a temporary draft commit,
and bundles the temporary commit and its draft ancestors, then
strips them.
This strategy makes it possible to use Mercurial's bundle and merge
machinery to resolve conflicts if necessary when unshelving, even
when the destination commit or its ancestors have been amended,
squashed, or evolved. (Once a change has been unshelved, its
associated unbundled commits are either rolled back or stripped.)
Storing the shelved change as a bundle also avoids the difficulty
that hidden commits would cause, of making it impossible to amend
the parent if it is a draft commits (a common scenario).
Although this extension shares its name and some functionality with
the third party hgshelve extension, it has little else in common.
Notably, the hgshelve extension shelves changes as unified diffs,
which makes conflict resolution a matter of finding .rej files and
conflict markers, and cleaning up the mess by hand.
We do not yet allow hunk-level choosing of changes to record.
Compared to the hgshelve extension, this is a small regression in
usability, but we hope to integrate that at a later point, once the
record machinery becomes more reusable and robust.
David Soria Parra <dsp@experimentalworks.net> [Tue, 01 Oct 2013 12:20:29 +0200] rev 19853
localrepo: make report level in repo.transaction configurable
repo.transaction always writes to stderr when a transaction aborts. In order to
be able to abort a transaction quietly (e.g shelve needs a temporary view on
the repo) we need to make the report level configurable.
Matt Mackall <mpm@selenic.com> [Tue, 01 Oct 2013 17:00:03 -0700] rev 19852
merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Oct 2013 16:55:20 -0700] rev 19851
Added signature for changeset e7fa36d2ad3a
Matt Mackall <mpm@selenic.com> [Tue, 01 Oct 2013 16:55:14 -0700] rev 19850
Added tag 2.7.2 for changeset e7fa36d2ad3a
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 01 Oct 2013 00:35:07 +0900] rev 19849
rebase: catch RepoLookupError at restoring rebase state for summary
Before this patch, "hg summary" may fail, when there is inconsistent
rebase state: for example, the root of rebase destination revisions
recorded in rebase state file is already stripped manually.
Mercurial earlier than 2.7 allows users to do anything other than
starting new rebase, even though current rebase is not finished or
aborted yet. So, such inconsistent rebase states may be left and
forgotten in repositories.
This patch catches RepoLookupError at restoring rebase state for
summary hook, and treat such state as "broken".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 01 Oct 2013 00:35:07 +0900] rev 19848
rebase: catch RepoLookupError at restoring rebase state for abort/continue
Before this patch, "rebase --abort"/"--continue" may fail, when rebase
state is inconsistent: for example, the root of rebase destination
revisions recorded in rebase state file is already stripped manually.
Mercurial earlier than 2.7 allows users to do anything other than
starting new rebase, even though current rebase is not finished or
aborted yet. So, such inconsistent rebase states may be left and
forgotten in repositories.
This patch catches RepoLookupError at restoring rebase state for
abort/continue, and treat such state as "broken".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 01 Oct 2013 00:35:07 +0900] rev 19847
histedit: suggest "histedit --abort" for inconsistent histedit state
Mercurial earlier than 2.7 allows users to do anything other than
starting new histedit, even though current histedit is not finished or
aborted yet. So, unfinished (and maybe inconsistent now) histedit
states may be left and forgotten in repositories.
Before this patch, histedit extension shows the message below, when it
detects such inconsistent state:
abort: REV is not an ancestor of working directory
(update to REV or descendant and run "hg histedit --continue" again)
But this message is incorrect, unless old Mercurial is re-installed,
because Mercurial 2.7 or later disallows users to update the working
directory to another revision.
This patch changes the hint message to suggest "hg histedit --abort".
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 30 Sep 2013 14:23:14 +0200] rev 19846
repoview: have unfilteredpropertycache using the underlying cache
A `unfilteredpropertycache` is a kind of `propertycache` used on `localrepo` to
unsure it will always be run against unfiltered repo and stored only once.
As the cached value is never stored in the repoview instance, the descriptor
will always be called. Before this patch such calls always result in a call to
the `__get__` method of the `propertycache` on the unfiltered repo. That was
recomputing a new value on every access through a repoview.
We can't prevent the repoview's `unfilteredpropertycache` to get called on every
access. In that case the new code makes a standard attribute access to the
property. If a value is cached it will be used.
The `propertycache` test file have been augmented with test about this issue.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 30 Sep 2013 14:36:11 +0200] rev 19845
repoview: make propertycache.setcache compatible with repoview
Propertycache used standard attribute assignment. In the repoview case, this
assignment was forwarded to the unfiltered repo. This result in:
(1) unfiltered repo got a potentially wrong cache value,
(2) repoview never reused the cached value.
This patch replaces the standard attribute assignment by an assignment to
`objc.__dict__` which will bypass the `repoview.__setattr__`. This will not
affects other `propertycache` users and it is actually closer to the semantic we
need.
The interaction of `propertycache` and `repoview` are now tested in a python
test file.
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 01 Oct 2013 16:41:04 -0300] rev 19844
i18n-pt_BR: synchronized with 1aaefba2a3a9
Matt Mackall <mpm@selenic.com> [Tue, 01 Oct 2013 10:44:59 -0700] rev 19843
merge with stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 01 Oct 2013 00:12:34 +0900] rev 19842
histedit: add more detailed help about "--outgoing"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 01 Oct 2013 00:12:34 +0900] rev 19841
histedit: abort if there are multiple roots in "--outgoing" revisions
Before this patch, if there are multiple roots in "--outgoing"
revisions, result of "histedit --outgoing" depends on the parent of
the working directory. It succeeds only when the parent of the working
directory is a descendant of the oldest root in "--outgoing"
revisions, and fails otherwise.
It seems to be ambiguous and difficult for users.
This patch makes "histedit --outgoing" abort if there are multiple
roots in "--outgoing" revisions always.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 01 Oct 2013 00:26:22 +0900] rev 19840
discovery: abort also when pushing multiple headed new branch
Before this patch, pushing with --new-branch permits to create
multiple headed branch on the destination repository.
But permitting to create new branch should be different from
permitting to create multiple heads on branch.
This patch prevents from careless pushing multiple headed new branch,
and requires --force to push such branch forcibly.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 30 Sep 2013 17:42:38 +0200] rev 19839
branchmap: stop looking for stripped branch
Since repoview in 2.5 we do not make special call to `branchmap` when stripping.
We just recompute the branchmap from a lower subset that still has valid
branchmap. So I'm dropping this dead code.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 30 Sep 2013 17:31:39 +0200] rev 19838
branchmap: remove the droppednodes logic
It was unused. note how it is only extended if the list is empty. So it's always
empty at the end.
We could try to fix that, however this would part of the code is to be removed
in the next changeset as we do not run `branchmap` on truncated repo since
`repoview` in 2.5.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 30 Sep 2013 15:52:37 +0200] rev 19837
branchmap: fix blank line position
The blank line was after was after the `if` condition instead of before.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 01 Oct 2013 00:12:34 +0900] rev 19836
histedit: add more detailed help about "--outgoing"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 01 Oct 2013 00:12:34 +0900] rev 19835
histedit: abort if there are multiple roots in "--outgoing" revisions
Before this patch, if there are multiple roots in "--outgoing"
revisions, result of "histedit --outgoing" depends on the parent of
the working directory. It succeeds only when the parent of the working
directory is a descendant of the oldest root in "--outgoing"
revisions, and fails otherwise.
It seems to be ambiguous and difficult for users.
This patch makes "histedit --outgoing" abort if there are multiple
roots in "--outgoing" revisions always.
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:58 +0400] rev 19834
hgweb: eliminate extra complexity in process_dates definition
There was an extra anonymous outer function, called immediately. It is removed
in this patch.
Siddharth Agarwal <sid0@fb.com> [Mon, 30 Sep 2013 12:36:26 -0700] rev 19833
util.h: backout 06badf7d10dc and 2c9645c0a582 for big-endian breakage
getbe32 and putbe32 need to behave differently on big-endian and little-endian
systems. On big-endian ones, they should be roughly equivalent to the identity
function with a cast, but on little-endian ones they should reverse the order
of the bytes. That is achieved by the original definition, but
__builtin_bswap32 and _byteswap_ulong, as the names suggest, swap bytes around
unconditionally.
There was no measurable performance improvement, so there's no point adding
extra complexity with even more ifdefs for endianncess.
Matt Mackall <mpm@selenic.com> [Mon, 30 Sep 2013 12:38:08 -0700] rev 19832
merge with stable
Martin Schröder <martin.schroeder@nerdluecht.de> [Mon, 30 Sep 2013 20:54:39 +0200] rev 19831
i18n-de: fix record prompt (issue4044)
Martin Schröder <martin.schroeder@nerdluecht.de> [Mon, 30 Sep 2013 20:04:03 +0200] rev 19830
i18n-de: synchronized with bd5c1b49d106
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 24 Sep 2013 13:34:12 -0300] rev 19829
i18n-pt_BR: synchronized with bd5c1b49d106
Kevin Bullock <kbullock@ringworld.org> [Fri, 27 Sep 2013 21:54:53 -0500] rev 19828
strip: bring extension description in line with style and copy-edit
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 26 Sep 2013 11:11:39 +0200] rev 19827
strip: rename test-mq-strip into test-strip
And makes it use the strip extension only (except for the part testing mq
interaction)
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 26 Sep 2013 23:57:21 +0200] rev 19826
mq: extract strip function as its standalone extension (issue3824)
Strip now lives in its own extension
reminder: The extension is surprisingly called `strip`. The `mq` extension
force the use of the strip extension when its enabled. This is both necessary
for backward compatibility (people expect `mq` to comes with strip) and become
some utility function used by `mq` are now in the strip extension.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 26 Sep 2013 23:43:00 +0200] rev 19825
strip: move the strip helper function for mq to strip
The next patch finally move the command. No joke! (hey, this is for issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 26 Sep 2013 23:32:52 +0200] rev 19824
strip: move checklocalchanges from mq to strip
One more step for issue3824.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 26 Sep 2013 23:12:43 +0200] rev 19823
strip: move checksubstate from mq to strip
One more step for issue3824
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 26 Sep 2013 23:10:11 +0200] rev 19822
mq: prepare a strip extension for extraction
Strip will lives in its own extension. The extension is surprisingly called
`strip`. (as discussed in issue3824) The `mq` extension force the use of the
strip extension when its enabled. This will both necessary for backward
compatibility (people expect `mq` to comes with strip) and become some utility
function used by `mq` will move in the strip extension.
David Soria Parra <dsp@experimentalworks.net> [Thu, 26 Sep 2013 14:47:19 +0200] rev 19821
histedit: remove unused parents() call
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 25 Sep 2013 14:16:51 +0200] rev 19820
mq: have the strip command functionnal on repo without mq
This is the last step before being able to extract `strip` in its own extension.
The changes are made in mq to allow a move only extraction without touching a
line of code.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 25 Sep 2013 14:07:37 +0200] rev 19819
mq: extract `mq.queue.strip`
It does not depend on `mq.queue` anymore.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 25 Sep 2013 13:41:43 +0200] rev 19818
mq: drop the use of mq.queue.qparent in mq.queue.strip
Same as in the previous changeset, rev is never `None`. We can just copy the two
relevant lines in in `queue.strip`. This help having `queue.strip` independent
from `queue`. One further step toward the extraction of `strip` in an independent
extension. (As discussed in issue3824).
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 25 Sep 2013 14:10:34 +0200] rev 19817
mq: drop the use of mq.queue.qparent in mq.strip
In this case, rev is never `None`. We can just copy the two relevant lines in
in `strip`. This help having `strip` independent from `queue` one
further step toward its extraction in an independent extension. (As
discussed in issue3824).
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 25 Sep 2013 19:34:45 +0200] rev 19816
mq: document repo.mq.qparents
The function is not very complex but writing this doc helped me to check if
I got everything right.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 25 Sep 2013 19:32:53 +0200] rev 19815
mq: use the new checklocalchange in the strip command
The strip command never use the `refresh` argument. So we can use the function
we just extracted.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 25 Sep 2013 12:43:14 +0200] rev 19814
mq: extract checklocalchanges from `mq.queue`
The core part of `checklocalchanges` is now mq independent. We can extract it in
a standalone function to help the extraction of `strip` as discussed in issue3824.
A `checklocalchanges` function stay in `mq.queue` with the part related to
"refresh first" messages.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 25 Sep 2013 11:24:43 +0200] rev 19813
mq: extract checksubstate from the queue class
This function does not need any of the the `mq.queue` method or attributes. It
is indirectly used by the `strip` command. We are trying to extract this command
in a standalone extension as discussed in issue issue3824.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 25 Sep 2013 12:28:40 +0200] rev 19812
mq: simplifies the refresh hint in checklocalchanges
The `checklocalchanges` function in the `mq.queue` class takes a `refresh` argument that
changes the error message of raised exception. When refresh is
`True` the exception message is "local changes found, refresh first" otherwise,
the message is just "local changes found".
This changeset is the first of a series that extract `strip` into a standalone
extension (as discussed in issue3824). This `checklocalchanges` function is
indirectly used by the strip command. But in a standalone strip extension the
concept of "refresh first" has no sense. In practice, When used in the context
of the strip commands `refresh`'s value is always `False`.
So my final goal is a be able to extract the `checklocalchanges` logic in a
standalone extension but to keep the part related to "refresh first" in the mq
extension. However the refresh handling is deeply entangled into the
`checklocalchanges` code. It is handled as low a possible at the point we raise
the exception.
So we moves handling of refresh upper in the `checklocalchanges` code. This will
allow the extraction of a simple version in the strip extension while mq can
still inject its logic when needed.
Two helper functions `localchangesfound` and `localchangedsubreposfound` died in
the process they are replaced by simple raise lines.
Angel Ezquerra <angel.ezquerra@gmail.com> [Fri, 06 Sep 2013 00:38:28 +0200] rev 19811
merge: let the user choose to merge, keep local or keep remote subrepo revisions
When a subrepo has changed on the local and remote revisions, prompt the user
whether it wants to merge those subrepo revisions, keep the local revision or
keep the remote revision.
Up until now mercurial would always perform a merge on a subrepo that had
changed on the local and the remote revisions. This is often inconvenient. For
example:
- You may want to perform the actual subrepo merge after you have merged the
parent subrepo files.
- Some subrepos may be considered "read only", in the sense that you are not
supposed to add new revisions to them. In those cases "merging a subrepo" means
choosing which _existing_ revision you want to use on the merged revision. This
is often the case for subrepos that contain binary dependencies (such as DLLs,
etc).
This new prompt makes mercurial better cope with those common scenarios.
Notes:
- The default behavior (which is the one that is used when ui is not
interactive) remains unchanged (i.e. merge is the default action).
- This prompt will be shown even if the ui --tool flag is set.
- I don't know of a way to test the "keep local" and "keep remote" options (i.e.
to force the test to choose those options).
# HG changeset patch
# User Angel Ezquerra <angel.ezquerra@gmail.com>
# Date 1378420708 -7200
# Fri Sep 06 00:38:28 2013 +0200
# Node ID 2fb9cb0c7b26303ac3178b7739975e663075857d
# Parent 50d721553198cea51c30f53b76d41dc919280097
merge: let the user choose to merge, keep local or keep remote subrepo revisions
When a subrepo has changed on the local and remote revisions, prompt the user
whether it wants to merge those subrepo revisions, keep the local revision or
keep the remote revision.
Up until now mercurial would always perform a merge on a subrepo that had
changed on the local and the remote revisions. This is often inconvenient. For
example:
- You may want to perform the actual subrepo merge after you have merged the
parent subrepo files.
- Some subrepos may be considered "read only", in the sense that you are not
supposed to add new revisions to them. In those cases "merging a subrepo" means
choosing which _existing_ revision you want to use on the merged revision. This
is often the case for subrepos that contain binary dependencies (such as DLLs,
etc).
This new prompt makes mercurial better cope with those common scenarios.
Notes:
- The default behavior (which is the one that is used when ui is not
interactive) remains unchanged (i.e. merge is the default action).
- This prompt will be shown even if the ui --tool flag is set.
- I don't know of a way to test the "keep local" and "keep remote" options (i.e.
to force the test to choose those options).
Augie Fackler <raf@durin42.com> [Tue, 24 Sep 2013 15:10:32 -0400] rev 19810
python2.4: fix imports of sub-packages of the email package
These all have an obvious comment so if/when we finally ditch Python
2.4 we can eradicate them easily.
Augie Fackler <raf@durin42.com> [Fri, 20 Sep 2013 09:16:07 -0400] rev 19809
httpconnection: properly inject ssl_wrap_socket into httpclient (issue4038)
This causes httpclient to use the same SSL settings as the rest of
Mercurial, and adds an easy extension point for later modifications to
our ssl handling.
Augie Fackler <raf@durin42.com> [Fri, 20 Sep 2013 09:15:43 -0400] rev 19808
sslutil: make keyfile and certfile arguments consistent between 2.6+ and 2.5-
Augie Fackler <raf@durin42.com> [Fri, 20 Sep 2013 09:15:09 -0400] rev 19807
httpclient: import 4bb625347d4a to provide SSL wrapper injection
This lets us inject our own ssl.wrap_socket equivalent into
httpclient, which means that any changes we make to our ssl handling
can be *entirely* on our side without having to muck with httpclient,
which sounds appealing. For example, an extension could wrap
sslutil.ssl_wrap_socket with an api-compatible wrapper and then tweak
SSL settings more precisely or use GnuTLS instead of OpenSSL.
Augie Fackler <raf@durin42.com> [Thu, 19 Sep 2013 16:29:00 -0400] rev 19806
sslutil: add a config knob to support TLS (default) or SSLv23 (bc) (issue4038)
Prior to this change, we default to SSLv23, which is insecure because
it allows use of SSLv2. Unfortunately, there's no constant for OpenSSL
to let us use SSLv3 or TLS - we have to pick one or the other. We
expose a knob to revert to pre-TLS SSL for the user that has an
ancient server that lacks proper TLS support.
Siddharth Agarwal <sid0@fb.com> [Mon, 23 Sep 2013 21:41:01 -0700] rev 19805
largefiles: standardize error message for dirty working dir
Siddharth Agarwal <sid0@fb.com> [Mon, 23 Sep 2013 21:31:37 -0700] rev 19804
cmdutil.bailifchanged: standardize error message for dirty working dir
This affects rebase, graft, histedit, and other similar commands.
Siddharth Agarwal <sid0@fb.com> [Mon, 23 Sep 2013 20:53:14 -0700] rev 19803
merge: standardize error message for dirty subrepo
Siddharth Agarwal <sid0@fb.com> [Mon, 23 Sep 2013 20:50:51 -0700] rev 19802
merge: standardize error message for dirty working dir
Siddharth Agarwal <sid0@fb.com> [Mon, 23 Sep 2013 20:33:02 -0700] rev 19801
update: standardize error message for dirty update --check
This and following patches will standardize the error message for dirty working
directories to "uncommitted changes".
Siddharth Agarwal <sid0@fb.com> [Mon, 23 Sep 2013 20:08:52 -0700] rev 19800
update: improve error message for dirty non-linear update with rev
Siddharth Agarwal <sid0@fb.com> [Mon, 23 Sep 2013 20:07:30 -0700] rev 19799
update: add error message for dirty non-linear update with no rev
Previously, the error message for a dirty non-linear update was the same (and
relatively unhelpful) whether or not a rev was specified. This patch and an
upcoming one will introduce separate, more helpful hints.
Siddharth Agarwal <sid0@fb.com> [Mon, 23 Sep 2013 17:43:33 -0700] rev 19798
update: improve error message for clean non-linear update
Siddharth Agarwal <sid0@fb.com> [Mon, 23 Sep 2013 19:02:32 -0700] rev 19797
pull: for pull --update with failed update, print hint if any
An upcoming patch will add a hint to the abort message, and we don't want to
lose that here.
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:57 +0400] rev 19796
paper: edit search hint to include new feature description
Alexander Plavin <alexander@plav.in> [Thu, 25 Jul 2013 01:12:25 +0400] rev 19795
paper: define searchhint message in map file and use it in other templates
Matt Mackall <mpm@selenic.com> [Mon, 23 Sep 2013 14:28:01 -0700] rev 19794
debugshell: appease pyflakes
Augie Fackler <raf@durin42.com> [Fri, 20 Sep 2013 10:18:09 -0400] rev 19793
check-code: new rule to forbid imports of a.b on the same line as other imports
This style of import can trip up 2to3 and cause it to produce invalid
files if one of the imports is supposed to be a relative import. This
prevents that behavior, and in the process exposed a lot of silly
import errors related to the email module.
Augie Fackler <raf@durin42.com> [Fri, 20 Sep 2013 10:16:55 -0400] rev 19792
notify: correct import of email module, sort stdlib modules to top
Augie Fackler <raf@durin42.com> [Fri, 20 Sep 2013 10:16:35 -0400] rev 19791
patchbomb: correct import of email module
Augie Fackler <raf@durin42.com> [Fri, 20 Sep 2013 10:16:02 -0400] rev 19790
mail: correct import of email module
Augie Fackler <raf@durin42.com> [Fri, 20 Sep 2013 10:15:51 -0400] rev 19789
patch: correct import of email module
Augie Fackler <raf@durin42.com> [Fri, 20 Sep 2013 10:15:37 -0400] rev 19788
subrepo: move import of xml.minidom.dom to its own line for check-code
Augie Fackler <raf@durin42.com> [Fri, 20 Sep 2013 10:15:23 -0400] rev 19787
convert: move import of xml.minidom.dom to its own line for check-code
Augie Fackler <raf@durin42.com> [Fri, 20 Sep 2013 10:14:59 -0400] rev 19786
perf: rearrange imports of changelong and manifest to appease check-code
Matt Mackall <mpm@selenic.com> [Mon, 23 Sep 2013 13:26:11 -0700] rev 19785
merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 23 Sep 2013 13:22:28 -0700] rev 19784
tests: fix check-code breakage
Alexander Plavin <alexander@plav.in> [Sun, 22 Sep 2013 14:19:57 +0400] rev 19783
paper: add infinite scrolling to graph by calling ajaxScrollInit at the page
Alexander Plavin <alexander@plav.in> [Fri, 20 Sep 2013 00:42:13 +0400] rev 19782
hgweb: add graph mode of ajax response processing
While the default mode appends all the new entries to a container on the page,
the graph mode resizes canvas correctly, and repaints the graph to include
newly received data.
Alexander Plavin <alexander@plav.in> [Sun, 22 Sep 2013 14:18:23 +0400] rev 19781
hgweb: make infinite scroll handling more generic and extensible
Namely, this allows the next page pointer to be not only revision hash given
in page code, but also any value computed from the value for previous page.
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:59 +0400] rev 19780
hgweb: add reset javascript function to Graph
It makes the Graph object to be in the same state as just after
the initialization. This will help to add infinite scrolling to graph view.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 21 Sep 2013 21:33:29 +0900] rev 19779
largefiles: setup "largefiles" feature in each repositories individually
Before this patch, if largefiles extension is enabled once in any of
target repositories, commands handling multiple repositories at a time
like below misunderstand that "largefiles" feature is supported also
in all other local repositories:
- clone/pull from or push to localhost
- recursive execution in subrepo tree
This patch registers "featuresetup()" into "featuresetupfuncs" of
"localrepository" to support "largefiles" features only in
repositories enabling largefiles extension, instead of adding
"largefiles" feature to class variable "_basesupported" of
"localrepository".
This patch also adds checking below to the largefiles specific class
derived from "localrepository":
- push to localhost: whether features supported in the local(= dst)
repository satisfies ones required in the remote(= src)
This can prevent useless looking up in the remote repository, when
supported and required features are mismatched: "push()" of
"localrepository" also checks it, but it is executed after looking up
in the remote.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 21 Sep 2013 21:33:29 +0900] rev 19778
localrepo: make supported features manageable in each repositories individually
Before this patch, all localrepositories support same features,
because supported features are managed by the class variable
"supported" of "localrepository".
For example, "largefiles" feature provided by largefiles extension is
recognized as supported, by adding the feature name to "supported" of
"localrepository".
So, commands handling multiple repositories at a time like below
misunderstand that such features are supported also in repositories
not enabling corresponded extensions:
- clone/pull from or push to localhost
- recursive execution in subrepo tree
"reposetup()" can't be used to fix this problem, because it is invoked
after checking whether supported features satisfy ones required in the
target repository.
So, this patch adds the set object named as "featuresetupfuncs" to
"localrepository" to manage hook functions to setup supported features
of each repositories.
If any functions are added to "featuresetupfuncs", they are invoked,
and information about supported features is managed in each
repositories individually.
This patch also adds checking below:
- pull from localhost: whether features supported in the local(= dst)
repository satisfies ones required in the remote(= src)
- push to localhost: whether features supported in the remote(= dst)
repository satisfies ones required in the local(= src)
Managing supported features by the class variable means that there is
no difference of supported features between each instances of
"localrepository" in the same Python process, so such checking is not
needed before this patch.
Even with this patch, if intermediate bundlefile is used as pulling
source, pulling indirectly from the remote repository, which requires
features more than ones supported in the local, can't be prevented,
because bundlefile has no information about "required features" in it.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 21 Sep 2013 21:33:29 +0900] rev 19777
extensions: list up only enabled extensions, if "ui" is specified
Before this patch, "extensions.extensions()" always lists up all
loaded extensions. So, commands handling multiple repositories at a
time like below enable extensions unexpectedly.
- clone from or push to localhost: extensions enabled only in the
source are enabled also in the destination
- pull from localhost: extensions enabled only in the destination
are enabled also in the source
- recursive execution in subrepo tree: extensions enabled only in
the parent or some of siblings in the tree are enabled also in
others
In addition to it, extensions disabled locally may be enabled
unexpectedly.
This patch checks whether each of extensions should be listed up or
not, if "ui" is specified to "extensions.extensions()", and invokes
"reposetup()" of each extensions only for repositories enabling it.
Matt Mackall <mpm@selenic.com> [Mon, 23 Sep 2013 11:37:06 -0700] rev 19776
merge with stable
Siddharth Agarwal <sid0@fb.com> [Fri, 20 Sep 2013 15:26:30 -0700] rev 19775
largefiles: remove bailifchanged check from overridepull (BC)
This brings pull --rebase with largefiles in line with pull --rebase without.
Siddharth Agarwal <sid0@fb.com> [Fri, 20 Sep 2013 16:32:05 -0700] rev 19774
rebase: remove bailifchanged check from pullrebase (BC)
This saves us a relatively superfluous status check for pull --rebase (if
rebase runs, it'll check for a clean working directory anyway), and brings hg
pull --rebase closer to hg pull && hg rebase.
This is a behavior change because pull --rebase with a dirty working directory
will now abort after performing the pull rather than before.
Sean Farley <sean.michael.farley@gmail.com> [Sun, 14 Jul 2013 12:16:40 -0500] rev 19773
debugshell: check ui.debugger for which debugger to use
Sean Farley <sean.michael.farley@gmail.com> [Sun, 14 Jul 2013 12:02:36 -0500] rev 19772
debugshell: add function to embed ipython
Sean Farley <sean.michael.farley@gmail.com> [Sun, 14 Jul 2013 12:10:52 -0500] rev 19771
debugshell: abstract out pdb code.interact
Alexander Plavin <alexander@plav.in> [Sun, 22 Sep 2013 13:52:18 +0400] rev 19770
templater: support using templates with non-standard names from map file
Allow to add arbitrarily-named entries to a template map file and then
reference them, to make it possible to deduplicate and simplify
templates code.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 23 Sep 2013 20:23:25 +0900] rev 19769
help: use full name of extensions to look up them for keyword search
Before this patch, "hg help -k KEYWORD" fails, if there is the
extension of which name includes ".", because "extensions.load()"
invoked from "help.topicmatch()" fails to look such extension up, even
though it is already loaded in.
"help.topicmatch()" invokes "extensions.load()" with the name gotten
from "extensions.enabled()". The former expects full name of extension
(= key in '[extensions]' section), but the latter returns names
shortened by "split('.')[-1]". This difference causes failure of
looking extension up.
This patch adds "shortname" argument to "extensions.enabled()" to make
it return shortened names only if it is True. "help.topicmatch()"
turns it off to get full name of extensions.
Then, this patch shortens full name of extensions by "split('.')[-1]"
for showing them in the list of extensions.
Shortening is also applied on names gotten from
"extensions.disabled()" but harmless, because it returns only
extensions directly under "hgext" and their names should not include
".".
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:56 +0400] rev 19768
hgweb: add link to force literal keyword search
This makes it possible to make keyword search in case the search query also
specifies an exact revision (like '1234' or 'abcdef'), or a revset expression.
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:56 +0400] rev 19767
raw: show current search mode name at search results
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:56 +0400] rev 19766
paper: show current search mode name at search results
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:56 +0400] rev 19765
hgweb: pass variable with current search mode name to the search template
Wojciech Lopata <lopek@fb.com> [Fri, 20 Sep 2013 10:45:51 -0700] rev 19764
generaldelta: initialize basecache properly
Previously basecache was incorrectly initialized before adding the first
revision from a changegroup. Basecache value influences when full revisions are
stored in revlog (when using generaldelta). As a result it was possible to
generate a generaldelta-revlog that could be bigger by arbitrary factor than its
non-generaldelta equivalent.
Matt Mackall <mpm@selenic.com> [Fri, 20 Sep 2013 11:47:03 -0500] rev 19763
merge with stable
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:58 +0400] rev 19762
paper: add reddish background to ajax error message
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:58 +0400] rev 19761
paper: add simple animation to the loading indicator
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:58 +0400] rev 19760
hgweb: add CSS class to the last entry on a page
The entry which was last before an ajax load now has a specific CSS class
for easier styling.
Augie Fackler <raf@durin42.com> [Thu, 19 Sep 2013 15:29:28 -0400] rev 19759
run-tests: find mercurial path with syntax valid on both py2 and py3
Augie Fackler <raf@durin42.com> [Thu, 19 Sep 2013 15:29:04 -0400] rev 19758
run-tests: if run by python3, execute setup.py with --c2to3
Augie Fackler <raf@durin42.com> [Thu, 19 Sep 2013 15:28:26 -0400] rev 19757
commands: import hgweb.server in a way that 2to3 can rewrite
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:58 +0400] rev 19756
hgweb: show message when an error occured during ajax loading
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:58 +0400] rev 19755
hgweb: show loading indicator while an ajax request is in process
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:58 +0400] rev 19754
hgweb: show a message when there are no more entries in the list
Siddharth Agarwal <sid0@fb.com> [Thu, 19 Sep 2013 09:45:00 -0700] rev 19753
util.h: fix gcc version checking
gcc doesn't have a predefined GCC_VERSION macro.
Brodie Rao <brodie@sf.io> [Mon, 16 Sep 2013 01:08:29 -0700] rev 19752
mq: remove unused repo._committingpatch-related code
This was introduced in 20ad8f0512a2 but its usage was removed in
46cc3b74e1c5.
Sean Farley <sean.michael.farley@gmail.com> [Sat, 07 Sep 2013 15:07:10 -0500] rev 19751
strip: set current bookmark to None if stripped
Matt Mackall <mpm@selenic.com> [Wed, 18 Sep 2013 14:52:16 -0500] rev 19750
merge with stable
Augie Fackler <raf@durin42.com> [Wed, 18 Sep 2013 14:40:17 -0400] rev 19749
sslutil: backed out changeset 074bd02352c0 (issue4038)
Python docs are a little unclear, but mpm reports reading the OpenSSL
source code shows that PROTOCOL_SSLv23 allows TLS whereas
PROTOCOL_SSLv3 does not.
Augie Fackler <raf@durin42.com> [Wed, 18 Sep 2013 14:45:28 -0400] rev 19748
httpclient: apply upstream revision da7579b034a4 to fix SSL problems (issue4038)
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:57 +0400] rev 19747
paper: call ajaxScrollInit in shortlog
This just calls ajaxScrollInit at the shortlog page template with all needed
agruments. So, infinite scrolling is working now there.
Alexander Plavin <alexander@plav.in> [Wed, 18 Sep 2013 22:44:12 +0400] rev 19746
hgweb: add ajaxScrollInit function, which does the ajax requests and processing
This function should be correctly called on a page, otherwise there is
no effect.
When called, it makes ajax requests for the next portion of changesets when the
user scrolls to the end. Also, when the monitor is high so that the
default amount of changesets isn't enough to fill it, multiple portions are
loaded if needed after the page load.
Matt Mackall <mpm@selenic.com> [Wed, 18 Sep 2013 14:36:19 -0500] rev 19745
check-code: add bracket style check
Wei, Elson <elson.wei@gmail.com> [Sat, 14 Sep 2013 11:22:34 +0800] rev 19744
util.h: getbe32() and putbe32() use intrinsic function to improve performance
Refer to https://bugzilla.mozilla.org/show_bug.cgi?id=351557. It can improve
byte-swapping performance by intrinsic function.
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:58 +0400] rev 19743
hgweb: add appendFormatHTML javascript function
This is a convenient helper function to append some formatted HTML markup to a
DOM element.
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:58 +0400] rev 19742
hgweb: add removeByClassName javascript function
It removes all elements with specified class name from the document.
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:57 +0400] rev 19741
hgweb: add docFromHTML javascript function
It takes a string with HTML markup and creates DOM document from it.
The implementation is a part of code from
https://developer.mozilla.org/en-US/docs/Web/API/DOMParser#DOMParser_HTML_extension_for_other_browsers
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:57 +0400] rev 19740
hgweb: add makeRequest javascript function
This function performs an asynchronous HTTP request and calls provided
callbacks:
- onstart: request is sent
- onsuccess: response is received
- onerror: some error occured
- oncomplete: response is fully processed and all other callbacks finished
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:57 +0400] rev 19739
hgweb: add format javascript function
It replaces placeholders like '%key%' with replacement values given.
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:57 +0400] rev 19738
hgweb: add nextentry variable for easy pagination in changelog
nextentry always contains the first entry not shown on current page (if there is
such entry)
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:57 +0400] rev 19737
hgweb: always compute all entries and latestentry in changelog
Get the whole list of entries before rendering instead of using lazy evaluation.
This doesn't affect the performance for usual case when the entries are shown
anyway. When both entries and latestentry are used, this performs unnoticeably
faster, and for pages which use only latestentry (quite uncommon case) it
would be a bit slower.
This change will make it possible to get the first entry of the next page easily
without computing the list twice.
David Soria Parra <dsp@experimentalworks.net> [Tue, 17 Sep 2013 17:42:13 +0200] rev 19736
templatefilters: add short format for age formatting
Implements a short output format for ages e.g. "1 second ago" is
abbrevated as "1s ago".
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:57 +0400] rev 19735
hgweb: remove unused argument of changelist function in changelog
This doesn't change the behavior as the argument isn't used anyway, and
it's a preparation to the next patches,
Sean Farley <sean.michael.farley@gmail.com> [Tue, 17 Sep 2013 23:34:57 -0500] rev 19734
context: move evolution functions from changectx to basectx
This is just a code move and corrects an overlook from my previous patch series
that assumed only a changectx would want this functionality.
Sean Farley <sean.michael.farley@gmail.com> [Tue, 17 Sep 2013 18:34:45 -0500] rev 19733
context: use correct spelling of committable
Matt Mackall <mpm@selenic.com> [Tue, 17 Sep 2013 18:19:04 -0500] rev 19732
check-code: check C patterns against .h files
Matt Mackall <mpm@selenic.com> [Tue, 17 Sep 2013 18:13:54 -0500] rev 19731
check-code: make casting style check more precise
Durham Goode <durham@fb.com> [Tue, 10 Sep 2013 19:49:34 -0700] rev 19730
log: make file log slow path usable on large repos
Running "hg log <pattern or directory>" on large repos took a very, very long
time because it first read ctx.files() for every commit before even starting to
process the results.
This change makes the ctx.files() check lazy, which makes the command start
producing results immediately.
Jeff Sickel <jas@corpus-callosum.com> [Fri, 13 Sep 2013 15:40:04 -0500] rev 19729
plan9: update util.py for cpython 2.7 build
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Sep 2013 23:47:59 -0700] rev 19728
parse_manifest: rewrite to use memchr
memchr is usually smarter than a simple for loop. With gcc 4.4.6 and glibc 2.12
on x86-64, for a 20 MB, 200,000 file manifest, parse_manifest goes from 0.116
seconds to 0.095 seconds.
Bryan O'Sullivan <bryano@fb.com> [Mon, 16 Sep 2013 12:17:55 -0700] rev 19727
parsers: correctly handle a failed allocation
Bryan O'Sullivan <bryano@fb.com> [Mon, 16 Sep 2013 12:12:37 -0700] rev 19726
parsers: use Py_INCREF safely
Bryan O'Sullivan <bryano@fb.com> [Mon, 16 Sep 2013 12:10:28 -0700] rev 19725
parsers: state is a char, not an int
Wei, Elson <elson.wei@gmail.com> [Fri, 13 Sep 2013 10:00:57 +0800] rev 19724
setup: check if mercurial/util.h has been modified
Before, if mercurial/util.h was modified but *.c wasn't, no extension
was rebuilt.
Wei, Elson <elson.wei@gmail.com> [Fri, 13 Sep 2013 09:54:43 +0800] rev 19723
util.h: add stdint basic type definitions
MS C compiler v15 doesn't have stdint.h. Add basic int types those are defined
in stdint.h.
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:56 +0400] rev 19722
hgweb: add revset syntax support to search
This mode is used when all the conditions are met:
- 'reverse(%s)' % query string can be parsed to a revset tree
- this tree has depth more than two, i.e. the query has some part of
revset syntax used
- the repo can be actually matched against this tree, i.e. it has only existent
function/operators and revisions/tags/bookmarks specified are correct
- no revset regexes are used in the query (strings which start with 're:')
- only functions explicitly marked as safe in revset.py are used in the query
Add several new tests for different parsing conditions and exception handling.
Alexander Plavin <alexander@plav.in> [Fri, 06 Sep 2013 13:30:56 +0400] rev 19721
revset: add a whitelist of DoS-safe symbols
'Safe' here means that they can't be used for a DoS attack for any given input.
Alexander Plavin <alexander@plav.in> [Wed, 07 Aug 2013 01:21:31 +0400] rev 19720
revset: add helper function to get functions used in a revset parse tree
Will be used to determine whether all functions used in a hgweb search query
are allowed there.
Alexander Plavin <alexander@plav.in> [Fri, 09 Aug 2013 22:52:58 +0400] rev 19719
revset: add helper function to get revset parse tree depth
Will be used to determine if a hgweb search query actually uses
any revset syntax.
Siddharth Agarwal <sid0@fb.com> [Sat, 07 Sep 2013 00:59:24 -0700] rev 19718
parsers: use a lookup table to convert hex to binary
This is a hotspot for parse_manifest. With this patch, for a 20 MB, 200,000
file manifest, parse_manifest goes down from 0.153 seconds to 0.116.
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Sep 2013 23:05:33 -0700] rev 19717
revlog: remove _chunkbase since it is no longer used
This was introduced in 2011 for the lwcopy feature but never actually got used.
A similar hook can easily be reintroduced if needed in the future.
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Sep 2013 23:05:11 -0700] rev 19716
revlog: move chunk cache preload from revision to _chunks
In case we don't have a cached text already, add the base rev to the list
passed to _chunks. In the cached case this also avoids unnecessarily preloading
the chunk for the cached rev.
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Sep 2013 22:57:51 -0700] rev 19715
revlog._chunks: inline getchunk
We do this in a somewhat hacky way, relying on the fact that our sole caller
preloads the cache right before calling us. An upcoming patch will make this
more sensible.
For a 20 MB manifest with a delta chain of > 40k, perfmanifest goes from 0.49
seconds to 0.46.
Siddharth Agarwal <sid0@fb.com> [Sat, 07 Sep 2013 12:42:46 -0700] rev 19714
revlog.revision: fix cache preload for inline revlogs
Previously the length of data preloaded did not account for the interleaved io
contents. This meant that we'd sometimes have cache misses in _chunks despite
the preloading.
Having a correctly filled out cache will become essential in an upcoming patch.
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Sep 2013 16:31:35 -0700] rev 19713
revlog: add a fast method for getting a list of chunks
This moves _chunkraw into the loop. Doing that improves revlog decompression --
in particular, manifest decompression -- significantly. For a 20 MB manifest
which is the result of a > 40k delta chain, hg perfmanifest improves from 0.55
seconds to 0.49 seconds.
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Sep 2013 13:35:29 -0700] rev 19712
perfmanifest: allow and require passing in a rev
Previously perfmanifest would only test tip.
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Sep 2013 13:20:07 -0700] rev 19711
perfmanifest: fix cache invalidation
The manifest cache is now stored in _mancache. The revlog cache is still stored
in _cache.
Siddharth Agarwal <sid0@fb.com> [Fri, 06 Sep 2013 13:16:21 -0700] rev 19710
lrucachedict: implement clear()
Kevin Bullock <kbullock@ringworld.org> [Sat, 07 Sep 2013 16:08:11 -0500] rev 19709
merge with stable
Antoine Pitrou <solipsis@pitrou.net> [Sat, 07 Sep 2013 21:20:00 +0200] rev 19708
bundle: fix performance regression when bundling file changes (issue4031)
Somewhere before 2.7, a change [ec896f9e8894] was committed that
entailed a large performance regression when bundling (and therefore
remote cloning) repositories. For each file in the repository, it would
recompute the set of needed changesets even though it is the same for
all files. This computation would dominate bundle runtimes according to
profiler output (by 10x or more).
Kevin Bullock <kbullock@ringworld.org> [Sat, 07 Sep 2013 00:08:36 -0500] rev 19707
merge with stable
Alexander Plavin <alexander@plav.in> [Tue, 06 Aug 2013 00:52:06 +0400] rev 19706
revset: fix wrong keyword() behaviour for strings with spaces
Some changesets can be wrongly reported as matched by this predicate
due to searching in a string joined with spaces and not individually.
A test case added, which fails without this fix.
Sean Farley <sean.michael.farley@gmail.com> [Thu, 15 Aug 2013 13:42:56 -0500] rev 19705
commitablefilectx: move children from workingfilectx
Sean Farley <sean.michael.farley@gmail.com> [Thu, 15 Aug 2013 13:42:33 -0500] rev 19704
commitablefilectx: move parents from workingfilectx
Sean Farley <sean.michael.farley@gmail.com> [Thu, 15 Aug 2013 13:23:06 -0500] rev 19703
commitablefilectx: move __nonzero__ from workingfilectx
Sean Farley <sean.michael.farley@gmail.com> [Thu, 15 Aug 2013 13:12:50 -0500] rev 19702
commitablefilectx: move __init__ from workingfilectx
Sean Farley <sean.michael.farley@gmail.com> [Thu, 15 Aug 2013 13:11:51 -0500] rev 19701
commitablefilectx: add a class that will be used for mutable file contexts
Just like commitablectx, this will serve as a common place for code that will
be shared between workingfilectx and memfilectx.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:40:34 -0500] rev 19700
commitablectx: move dirs from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:40:27 -0500] rev 19699
commitablectx: move markcommitted from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:37:59 -0500] rev 19698
commitablectx: move ancestors from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:37:11 -0500] rev 19697
commitablectx: move walk from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:37:01 -0500] rev 19696
commitablectx: move ancestor from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:25:43 -0500] rev 19695
commitablectx: move flags from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:25:26 -0500] rev 19694
commitablectx: move children from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:25:17 -0500] rev 19693
commitablectx: move hidden from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:24:59 -0500] rev 19692
commitablectx: move phase from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:24:33 -0500] rev 19691
commitablectx: move bookmarks from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:24:16 -0500] rev 19690
commitablectx: move tags from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:23:28 -0500] rev 19689
commitablectx: move extra from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:23:16 -0500] rev 19688
commitablectx: move closesbranch from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:23:02 -0500] rev 19687
commitablectx: move branch from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:22:42 -0500] rev 19686
commitablectx: move clean from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:22:32 -0500] rev 19685
commitablectx: move ignored from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:22:20 -0500] rev 19684
commitablectx: move unknown from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:21:55 -0500] rev 19683
commitablectx: move deleted from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:15:29 -0500] rev 19682
commitablectx: move removed from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:15:18 -0500] rev 19681
commitablectx: move added from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:14:58 -0500] rev 19680
commitablectx: move modified from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:09:45 -0500] rev 19679
commitablectx: move files from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:09:30 -0500] rev 19678
commitablectx: move description from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 16:03:32 -0500] rev 19677
commitablectx: move date from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Thu, 15 Aug 2013 10:57:43 -0500] rev 19676
commitablectx: move _date from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 15:57:24 -0500] rev 19675
commitablectx: move user from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Thu, 15 Aug 2013 10:51:53 -0500] rev 19674
commitablectx: move _user from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 15:55:56 -0500] rev 19673
commitablectx: move status from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 15:41:22 -0500] rev 19672
commitablectx: move _status from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 15:34:18 -0500] rev 19671
commitablectx: move _manifest from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 15:30:17 -0500] rev 19670
commitablectx: move _flagfunc from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 15:29:48 -0500] rev 19669
commitablectx: move _buildflagfunc from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 15:29:09 -0500] rev 19668
commitablectx: move __contains__ from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 15:28:43 -0500] rev 19667
commitablectx: move __nonzero__ from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 15:25:14 -0500] rev 19666
commitablectx: move __str__ from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 15:24:58 -0500] rev 19665
commitablectx: move __init__ from workingctx
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 15:02:08 -0500] rev 19664
commitablectx: add a class that will be used as a parent of mutable contexts
Currently, we have basectx that serves as a common ancestor of all contexts. We
will now add a new class commitablectx that will inherit from basectx and will
serve as a common place for code that will be shared between mutable contexts,
e.g. workingctx and memctx.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 13:32:56 -0500] rev 19663
workingfilectx: remove unneeded __repr__ since it is now inherited
Sean Farley <sean.michael.farley@gmail.com> [Thu, 15 Aug 2013 13:09:34 -0500] rev 19662
workingfilectx: remove bogus comment
Sean Farley <sean.michael.farley@gmail.com> [Thu, 15 Aug 2013 13:32:07 -0500] rev 19661
workingfilectx: remove __str__ manifest since it is now inherited
Sean Farley <sean.michael.farley@gmail.com> [Thu, 15 Aug 2013 13:31:17 -0500] rev 19660
basefilectx: use basectx __str__ instead of duplicating logic
This change allows us to only rely on one place to convert a context to a
string which will help eliminate duplicate code in context.py
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 13:41:09 -0500] rev 19659
workingctx: remove unneeded manifest since it is now inherited
Sean Farley <sean.michael.farley@gmail.com> [Wed, 14 Aug 2013 13:32:44 -0500] rev 19658
workingctx: remove unneeded __repr__ since it is now inherited
Alexander Plavin <alexander@plav.in> [Tue, 03 Sep 2013 20:02:53 +0400] rev 19657
hgweb: import the whole util module in webcommands instead of just one function
This is to allow using other functions from this module easily.
Alexander Plavin <alexander@plav.in> [Wed, 04 Sep 2013 19:40:04 +0400] rev 19656
hgweb: add string constants for search mode names
It helps detecting mistakes in the mode names.
Siddharth Agarwal <sid0@fb.com> [Wed, 04 Sep 2013 18:42:55 -0700] rev 19655
addremove: don't do full walks
Full walks are only necessary when the caller needs the list of clean files.
addremove by definition doesn't need them.
With this patch and an extension that produces a subset of results for
dirstate.walk when full is False, on a repository with over 200,000 files, hg
addremove drops from 2.8 seconds to 0.5.
Augie Fackler <raf@durin42.com> [Thu, 05 Sep 2013 11:45:27 -0400] rev 19654
merge with mpm
Augie Fackler <raf@durin42.com> [Tue, 03 Sep 2013 17:06:19 -0400] rev 19653
merge with mpm
Siddharth Agarwal <sid0@fb.com> [Sat, 17 Aug 2013 20:48:49 -0700] rev 19652
pack_dirstate: only invalidate mtime for files written in the last second
Previously we'd place files written in the last second in the lookup set. This
can lead to pathological cases where a file always remains in the lookup set if
it gets modified before the next time status is run.
With this patch, only the mtime of those files is invalidated. This means that
if a file's size or mode changes, we can immediately declare it as modified
without needing to compare file contents.
Siddharth Agarwal <sid0@fb.com> [Sat, 31 Aug 2013 10:20:15 -0700] rev 19651
dirstate.status: don't ignore symlink placeholders in the normal set
On Windows, there are two ways symlinks can manifest themselves:
1. As placeholders: text files containing the symlink's target. This is what
usually happens with fresh clones on Windows.
2. With their dereferenced contents. This happens with clones accessed over NFS
or Samba.
In order to handle case 2, ca6cebd8734e made dirstate.status ignore all symlink
placeholders on Windows. It doesn't ignore symlinks in the lookup set, though,
since those don't have the link bit set. This is problematic because it
violates the invariant that `hg status` with every file in the normal set
produces the same output as `hg status` with every file in the lookup set.
With this change, symlink placeholders in the normal set are no longer ignored.
We instead rely on code in localrepo.status that uses heuristics to look for
suspect placeholders.
An upcoming patch will test this out by no longer adding files written in the
last second of an update to the lookup set.
Siddharth Agarwal <sid0@fb.com> [Sat, 31 Aug 2013 10:16:06 -0700] rev 19650
localrepo.status: ignore empty symlink placeholders
A symlink's target should never be empty in normal use. Solaris and some BSDs
do allow empty symlinks to be created (with varying semantics on dereference),
but a symlink placeholder that started off as empty is either
- going to be empty, in which case ignoring it is fine, since it's unchanged, or
- going to not be empty, in which case this check is irrelevant.
Matt Mackall <mpm@selenic.com> [Tue, 03 Sep 2013 18:08:27 -0500] rev 19649
merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 03 Sep 2013 18:05:11 -0500] rev 19648
Added signature for changeset 335a558f81dc
Matt Mackall <mpm@selenic.com> [Tue, 03 Sep 2013 18:05:06 -0500] rev 19647
Added tag 2.7.1 for changeset 335a558f81dc
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 28 Aug 2013 22:09:53 +0900] rev 19646
tags: write tag overwriting history also into tag cache file (issue3911)
Before this patch, tag overwriting history is not written into tag
cache file ".hg/cache/tags".
This may give higher priority to local tag than global one, even if
the former is overwritten by the latter, because tag overwriting
history is used to compare priorities of them (as "rank").
In such cases, "hg tags" invocations using tag cache file shows
incorrect tag information.
This patch writes tag overwriting history also into tag cache file.
Matt Mackall <mpm@selenic.com> [Tue, 03 Sep 2013 15:50:59 -0500] rev 19645
merge with stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 26 Aug 2013 16:11:21 +0900] rev 19644
histedit: add description about "histedit --outgoing" to command help
Before this patch, there is no explicit description that argument is
treated as the URL of the destination repository when "--outgoing" is
specified.
This patch adds description about "histedit --outgoing" to command
help of it.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 26 Aug 2013 16:11:21 +0900] rev 19643
histedit: add description about basic histedit function to command help
Before this patch, there is no explicit description that histedit
edits changesets between specified ancestor and the parent of the
working directory: users may notice it by error message "REV is not an
ancestor of working directory".
This patch adds description about basic histedit function to command
help of it.
This patch uses term "ancestor" instead of "parent", because it seems
to be more suitable, and almost all (error) messages already use it.
Bryan O'Sullivan <bryano@fb.com> [Tue, 03 Sep 2013 15:12:35 -0400] rev 19642
rebase: handle bookmarks matching revset function names (issue3950)
We handled these correctly with all rev-specifying options except,
somehow, -r/--rev.
Bryan O'Sullivan <bryano@fb.com> [Tue, 03 Sep 2013 15:12:35 -0400] rev 19641
rebase: handle bookmarks matching revset function names (issue3950)
We handled these correctly with all rev-specifying options except,
somehow, -r/--rev.
Sean Farley <sean.michael.farley@gmail.com> [Thu, 25 Jul 2013 22:28:34 -0500] rev 19640
dispatch: add ability to specify a custom pdb module as a debugger
This adds the ability to specify a config option, ui.debugger, to a custom pdb
module, such as ipdb, and have mercurial use that as its debugger. As long as
the value of ui.debugger is a loadable module with the set_trace and
post_mortem functions, then dispatch will be able to use the custom module.
Debugging _parseconfig is still available in the case of an error since it will
be caught with a default the value of pdb.post_mortem.
Sean Farley <sean.michael.farley@gmail.com> [Sat, 13 Jul 2013 16:33:07 -0500] rev 19639
dispatch: move command line --config argument parsing to _runcatch()
Previously, command line parsing of --config arguments was done in
_dispatch. This means that it takes place after activating the debugger. In an
upcoming patch, we will add a ui.debugger setting so we need to have this
parsing done before _runcatch.
Angel Ezquerra <angel.ezquerra@gmail.com> [Tue, 13 Aug 2013 01:38:30 +0200] rev 19638
mq: update subrepos when applying / unapplying patches that change .hgsubstate
Up until now applying or unapplying a patch that modified .hgsubstate would not
work as expected because it would not update the subrepos according to the
.hgsubstate change. This made it very easy to lose subrepo changes when using
mq.
This revision also changes the test-mq-subrepo test so that on the qpop / qpush
tests. We no longer use the debugsub command to check the state of the subrepos
after the qpop and qpush operations. Instead we directly run the id command on
the subrepos that we want to check. The reason is that using the debugsub
command is misleading because it does not really check the state of the subrepos
on the working directory (it just returns what the change that is specified on a
given revision). Because of this the tests did not detect the problem that this
revision fixes (i.e. that applying a patch did not update the subrepos to the
corresponding revisions).
# HG changeset patch
# User Angel Ezquerra <angel.ezquerra@gmail.com>
# Date 1376350710 -7200
# Tue Aug 13 01:38:30 2013 +0200
# Node ID 60897e264858cdcd46f89e27a702086f08adca02
# Parent 2defb5453f223c3027eb2f7788fbddd52bbb3352
mq: update subrepos when applying / unapplying patches that change .hgsubstate
Up until now applying or unapplying a patch that modified .hgsubstate would not
work as expected because it would not update the subrepos according to the
.hgsubstate change. This made it very easy to lose subrepo changes when using
mq.
This revision also changes the test-mq-subrepo test so that on the qpop / qpush
tests. We no longer use the debugsub command to check the state of the subrepos
after the qpop and qpush operations. Instead we directly run the id command on
the subrepos that we want to check. The reason is that using the debugsub
command is misleading because it does not really check the state of the subrepos
on the working directory (it just returns what the change that is specified on a
given revision). Because of this the tests did not detect the problem that this
revision fixes (i.e. that applying a patch did not update the subrepos to the
corresponding revisions).
Angel Ezquerra <angel.ezquerra@gmail.com> [Wed, 21 Aug 2013 22:34:04 +0200] rev 19637
subrepo: make submerge() return the merged substate
This will be useful when reusing submerge() to improve the handling of subrepos
on mq.
# HG changeset patch
# User Angel Ezquerra <angel.ezquerra@gmail.com>
# Date 1377117244 -7200
# Wed Aug 21 22:34:04 2013 +0200
# Node ID 2defb5453f223c3027eb2f7788fbddd52bbb3352
# Parent a5c90acff5e61aae714ba6c9457d766c54b4f124
subrepo: make submerge() return the merged substate
This will be useful when reusing submerge() to improve the handling of subrepos
on mq.
Angel Ezquerra <angel.ezquerra@gmail.com> [Tue, 06 Aug 2013 00:49:39 +0200] rev 19636
mq: look for modified subrepos when checking for local changes
It was possible to apply, unapply, fold, patches (etc) with modified subrepos,
which resulted in surprising behavior. For example it was easy to apply a patch
with a modified subrepo, and then the refresh it and accidentally end up
including the modified subrepo on the refreshed patch.
A test has been added to verify this new check.
# HG changeset patch
# User Angel Ezquerra <angel.ezquerra@gmail.com>
# Date 1375742979 -7200
# Tue Aug 06 00:49:39 2013 +0200
# Node ID a5c90acff5e61aae714ba6c9457d766c54b4f124
# Parent 6ac206fb6f27492a98f46bbff090407ee1b1de72
mq: look for modified subrepos when checking for local changes
It was possible to apply, unapply, fold, patches (etc) with modified subrepos,
which resulted in surprising behavior. For example it was easy to apply a patch
with a modified subrepo, and then the refresh it and accidentally end up
including the modified subrepo on the refreshed patch.
A test has been added to verify this new check.
Wei, Elson <elson.wei@gmail.com> [Wed, 07 Aug 2013 09:59:45 +0800] rev 19635
localrepo: get value from the unfiltered caches should check if the attribute existed.
If the attribute existed already, it should be returned by getattr().
Otherwise, it will be evaluated again.
Alexander Plavin <alexander@plav.in> [Fri, 19 Jul 2013 02:09:13 +0400] rev 19634
hgweb: always run search when a query is entered (bc)
This changes the behavior for queries which point at a revision directly,
now the output is consistent to other cases: it results in only this matched
revision shown, not the log starting with it.
A new test checks this behaviour and fails for the old one.
Alexander Plavin <alexander@plav.in> [Fri, 19 Jul 2013 02:41:11 +0400] rev 19633
hgweb: search() function supports direct pointing to revision
This doesn't change the behavior, as queries directly pointing to revisions
are not delegated to the search() function now.
Alexander Plavin <alexander@plav.in> [Thu, 22 Aug 2013 16:42:10 +0400] rev 19632
hgweb: pass arguments which a function depends on explicitly in search
This changes makes clearer which arguments can a function depend on. Now all
the modified functions depend on the 'query' argument only, but future additions
will change it.
Alexander Plavin <alexander@plav.in> [Thu, 22 Aug 2013 16:45:23 +0400] rev 19631
hgweb: add dynamic search function selection, depending on the query
This allows adding other specific search functions, in addition to current
keyword search.
Wojciech Lopata <lopek@fb.com> [Mon, 26 Aug 2013 17:11:01 -0700] rev 19630
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
This makes possible to use unionrevlog class with subclasses of revlog that
override revlog's 'revision' and 'revdiff' methods. In particular this change
is necessary to implement manifest compression, as it allows extension to
replace manifest class and override 'revision' amd 'revdiff' methods there.
Wojciech Lopata <lopek@fb.com> [Mon, 26 Aug 2013 16:50:31 -0700] rev 19629
bundlerevlog: extract 'baserevision' method
This makes possible to use bundlerevlog class with subclasses of revlog
that override revlog's 'revision' method. In particular this change is necessary
to implement manifest compression, as it allows extension to replace manifest
class and override 'revision' method there.
Danek Duvall <danek.duvall@oracle.com> [Mon, 26 Aug 2013 15:20:44 -0700] rev 19628
solaris: tests can't use tail -n
Solaris tail doesn't recognize the -n option. Replace the one use of it
with some inline python code, and add a test case to check-code.py.
Danek Duvall <danek.duvall@oracle.com> [Fri, 23 Aug 2013 16:05:38 -0700] rev 19627
solaris: sed doesn't recognize a line without a newline
Danek Duvall <danek.duvall@oracle.com> [Fri, 23 Aug 2013 14:31:42 -0700] rev 19626
solaris: test cases can't use grep -a
The -a option to GNU grep isn't available when using Solaris grep. Replace
the one use of grep -a in the testsuite with some in-line Python that does
the equivalent, and add a check for grep -a in check-code.py.
Wojciech Lopata <lopek@fb.com> [Mon, 19 Aug 2013 11:25:23 -0700] rev 19625
revlog: pass node as an argument of addrevision
This change will allow revlog subclasses that override 'checkhash' method
to use custom strategy of computing nodeids without overriding 'addrevision'
method. In particular this change is necessary to implement manifest
compression.
Wojciech Lopata <lopek@fb.com> [Mon, 19 Aug 2013 11:06:38 -0700] rev 19624
revlog: extract 'checkhash' method
Extract method that decides whether nodeid is correct for paricular revision
text and parent nodes. Having this method extracted will allow revlog
subclasses to implement custom way of computing nodes. In particular this
change is necessary to implement manifest compression.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 26 Aug 2013 16:11:21 +0900] rev 19623
histedit: discard meaningless comment about 'hexlify node'
Refactoring in 26b41a902195 made this comment meaningless. The node
gotten by "discovery.findcommonoutgoing()" is hexlified in "between()"
by "repo.set('%n::%n', old, new)".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 26 Aug 2013 16:11:21 +0900] rev 19622
histedit: add description about "histedit --outgoing" to command help
Before this patch, there is no explicit description that argument is
treated as the URL of the destination repository when "--outgoing" is
specified.
This patch adds description about "histedit --outgoing" to command
help of it.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 26 Aug 2013 16:11:21 +0900] rev 19621
histedit: add description about basic histedit function to command help
Before this patch, there is no explicit description that histedit
edits changesets between specified ancestor and the parent of the
working directory: users may notice it by error message "REV is not an
ancestor of working directory".
This patch adds description about basic histedit function to command
help of it.
This patch uses term "ancestor" instead of "parent", because it seems
to be more suitable, and almost all (error) messages already use it.
Augie Fackler <raf@durin42.com> [Fri, 23 Aug 2013 16:16:22 -0400] rev 19620
httpclient: import 0d1b0a8bc549 to fix bug involving late-arriving RST after a response
After a day of hunting this defect, I'm now unable to reproduce the
bug without this patch applied. Regardless, this should fix the
problem I was observing with wireshark. Hopefully this fixes any
flakiness in the buildbot from http2.
Augie Fackler <raf@durin42.com> [Fri, 23 Aug 2013 13:28:18 -0400] rev 19619
progress: stop getting stuck in a nested topic during a long inner step
Convert, for example, has loops like this:
for revision in source_repo:
progress(revisions)
for file in revision:
progresss(file)
Prior to this change, we would start showing the file-level progress
when we encountered a big revision, and then we'd get stuck in showing
file-progress instead of revision progress, often producing many many
instantly-completing progress bars rather than the actually-helpful
top-level revisions bar.
Augie Fackler <raf@durin42.com> [Thu, 15 Aug 2013 21:36:53 -0400] rev 19618
Backed out changeset 77d434760857
Jeff Sickel <jas@corpus-callosum.com> [Thu, 15 Aug 2013 21:35:56 -0400] rev 19617
hgrc.d: separate namespace for mercurial scripts 9diff and 9mail
Matt Mackall <mpm@selenic.com> [Wed, 14 Aug 2013 12:42:22 -0500] rev 19616
debugfs: add hardlink support reporting
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Sun, 04 Aug 2013 13:43:39 +0200] rev 19615
obsolete: allow passing a revision to successorssets()
Jeff Sickel <jas@corpus-callosum.com> [Mon, 12 Aug 2013 17:44:31 -0500] rev 19614
factotum: clean up keychain for multiple hg repository authentication
Jeff Sickel <jas@corpus-callosum.com> [Mon, 12 Aug 2013 17:36:49 -0500] rev 19613
9mail: new script to add support for Plan 9 upas/marshal email wrapper
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 23:50:32 -0500] rev 19612
workingfilectx: inherit from basefilectx instead of filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 23:06:10 -0500] rev 19611
basefilectx: move copies from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 23:05:50 -0500] rev 19610
basefilectx: move ancestors from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 23:05:08 -0500] rev 19609
basefilectx: move ancestor from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 23:03:33 -0500] rev 19608
basefilectx: move annotate from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 23:00:11 -0500] rev 19607
basefilectx: move p2 from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:59:10 -0500] rev 19606
basefilectx: move p1 from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:57:21 -0500] rev 19605
basefilectx: move parents from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:56:53 -0500] rev 19604
basefilectx: move cmp from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:56:30 -0500] rev 19603
basefilectx: move isbinary from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:56:18 -0500] rev 19602
basefilectx: move path from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:56:02 -0500] rev 19601
basefilectx: move changectx from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:55:09 -0500] rev 19600
basefilectx: move manifest from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:54:58 -0500] rev 19599
basefilectx: move phasestr from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:54:48 -0500] rev 19598
basefilectx: move phase from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:54:39 -0500] rev 19597
basefilectx: move extra from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:54:31 -0500] rev 19596
basefilectx: move branch from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:54:22 -0500] rev 19595
basefilectx: move description from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:54:12 -0500] rev 19594
basefilectx: move files from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:53:56 -0500] rev 19593
basefilectx: move date from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:53:47 -0500] rev 19592
basefilectx: move user from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:53:23 -0500] rev 19591
basefilectx: move hex from filectx
We also change the function call to use the hex method of its change context
so that it mirrors other such method calls.
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:51:53 -0500] rev 19590
basefilectx: move node from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:51:41 -0500] rev 19589
basefilectx: move linkrev from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:51:30 -0500] rev 19588
basefilectx: move rev from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:51:18 -0500] rev 19587
basefilectx: move filelog from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:51:04 -0500] rev 19586
basefilectx: move flags from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:50:37 -0500] rev 19585
basefilectx: move filenode from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:50:15 -0500] rev 19584
basefilectx: move filerev from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:49:40 -0500] rev 19583
basefilectx: move __ne__ from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:49:03 -0500] rev 19582
basefilectx: move __eq__ from filectx
We also add type checking for extra protection.
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:47:39 -0500] rev 19581
basefilectx: move __hash__ from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:46:54 -0500] rev 19580
basefilectx: move __repr__ from filectx
We change the hardcoded 'filectx' to instead use type(self).__name__ so that objects that
inherit from basefilectx in the future will be able to use the same representation.
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:45:30 -0500] rev 19579
basefilectx: move __str__ from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:45:13 -0500] rev 19578
basefilectx: move __nonzero__ from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:44:51 -0500] rev 19577
basefilectx: move _repopath from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:44:36 -0500] rev 19576
basefilectx: move _filerev from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:44:19 -0500] rev 19575
basefilectx: move _filenode from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:44:06 -0500] rev 19574
basefilectx: move _changeid from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sun, 11 Aug 2013 22:40:59 -0500] rev 19573
basefilectx: move _filelog from filectx
Sean Farley <sean.michael.farley@gmail.com> [Sat, 10 Aug 2013 15:10:26 -0500] rev 19572
basefilectx: add an empty class that will be used as a parent of file contexts
Similar to the refactoring of context, we split common logic from filectx to a
parent class called basefilectx that will be inherited by filectx,
workingfilectx, and memfilectx. This will allow a clear disinction of all the
file contexts:
- filectx: read-only access to a filerevision that is already present in the repo,
- workingfilectx: a filecontext that represents files from the working directory,
- memfilectx: a filecontext that represents files in-memory
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 18:44:18 -0500] rev 19571
workingctx: inherit from basectx instead of changectx
Sean Farley <sean.michael.farley@gmail.com> [Tue, 06 Aug 2013 15:10:09 -0500] rev 19570
largefiles: remove unnecessary check of instance
The refactoring of all the context objects allows us to simply pass a basectx
to the __new__ constructor and have it return the same object without
allocating new memory.
This also removes the need to import the context module.
Sean Farley <sean.michael.farley@gmail.com> [Tue, 06 Aug 2013 15:11:42 -0500] rev 19569
localrepo: remove unnecessary check of instance
The refactoring of all the context objects allows us to simply pass a basectx
to the __new__ constructor and have it return the same object without
allocating new memory.
Sean Farley <sean.michael.farley@gmail.com> [Tue, 06 Aug 2013 15:11:31 -0500] rev 19568
basectx: remove unnecessary check of instance
The refactoring of all the context objects allows us to simply pass a basectx
to the __new__ constructor and have it return the same object without
allocating new memory.
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 18:42:41 -0500] rev 19567
basectx: move dirty from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 18:41:56 -0500] rev 19566
basectx: move dirs from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 18:41:43 -0500] rev 19565
basectx: move _dirs from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 18:41:12 -0500] rev 19564
basectx: move diff from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 18:41:00 -0500] rev 19563
basectx: move match from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 18:40:36 -0500] rev 19562
basectx: move sub from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 18:28:54 -0500] rev 19561
basectx: move flags from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 18:28:40 -0500] rev 19560
basectx: move filenode from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 18:28:23 -0500] rev 19559
basectx: move _fileinfo from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 18:26:54 -0500] rev 19558
basectx: move p2 from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 18:26:15 -0500] rev 19557
basectx: move p1 from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 18:19:38 -0500] rev 19556
basectx: move parents from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 18:19:19 -0500] rev 19555
basectx: move mutable from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 18:19:04 -0500] rev 19554
basectx: move phasestr from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 17:22:49 -0500] rev 19553
basectx: move manifest from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 17:22:18 -0500] rev 19552
basectx: move __iter__ from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 17:22:05 -0500] rev 19551
basectx: move __getitem__ from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 17:21:38 -0500] rev 19550
basectx: move __contains__ from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 17:21:23 -0500] rev 19549
basectx: move substate from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 17:00:32 -0500] rev 19548
basectx: move __ne__ from changectx
Sean Farley <sean.michael.farley@gmail.com> [Mon, 05 Aug 2013 17:00:09 -0500] rev 19547
basectx: move __eq__ from changectx
We also add type checking for extra protection.
Sean Farley <sean.michael.farley@gmail.com> [Fri, 02 Aug 2013 18:24:08 -0500] rev 19546
basectx: move __repr__ from changectx
We change the hardcoded 'changectx' to instead use type(self).__name__ so that
objects that inherit from basectx in the future will be able to use the same
representation.
Sean Farley <sean.michael.farley@gmail.com> [Fri, 02 Aug 2013 16:52:13 -0500] rev 19545
basectx: move __int__ from changectx
Sean Farley <sean.michael.farley@gmail.com> [Fri, 02 Aug 2013 16:50:13 -0500] rev 19544
basectx: change _node to node() in hex
This allows a child class to overload the node() function and still share the
same code for hex().
Sean Farley <sean.michael.farley@gmail.com> [Fri, 02 Aug 2013 16:49:01 -0500] rev 19543
basectx: move hex from changectx
Sean Farley <sean.michael.farley@gmail.com> [Fri, 02 Aug 2013 16:48:19 -0500] rev 19542
basectx: move node from changectx
Sean Farley <sean.michael.farley@gmail.com> [Fri, 02 Aug 2013 19:09:06 -0500] rev 19541
basectx: move rev from changectx
Sean Farley <sean.michael.farley@gmail.com> [Fri, 02 Aug 2013 16:46:23 -0500] rev 19540
basectx: move __str__ from changectx
Sean Farley <sean.michael.farley@gmail.com> [Tue, 06 Aug 2013 16:42:41 -0500] rev 19539
changectx: if passing a basectx then exit __init__ immediately
Sean Farley <sean.michael.farley@gmail.com> [Tue, 06 Aug 2013 15:50:28 -0500] rev 19538
basectx: return a copied context if changeid is already a basectx
This implements a copy constructor so that we can pass a basectx-derived object
in future refactorings.
Sean Farley <sean.michael.farley@gmail.com> [Sat, 13 Jul 2013 19:59:21 -0500] rev 19537
basectx: add an empty class that will be used as a parent of all contexts
At the moment, there is no simple way to check if an object is a context
because there is no common parent class. If there were, we could use
'isinstance' everywhere. Simply having memctx inherit from workingctx or
changectx would allow the use of 'isinstance' but that could lead to some
confusing situations of reading the code since we have three distinct concepts
of a context:
- changectx represents a changeset *already* in the repo, and is therefore immutable
- workingctx represents changes on disk in the working directory
- memctx represents changes solely in memory which may or may not be on disk
Therefore, I propose refactoring context.py to have all three contexts inherit
from a parent class 'basectx'.
Augie Fackler <durin42@gmail.com> [Wed, 24 Jul 2013 19:13:39 -0400] rev 19536
ui.config: fix bug in config alternatives from cc669e4fec95
Matt Mackall <mpm@selenic.com> [Sat, 03 Aug 2013 13:23:48 -0500] rev 19535
proxy: allow wildcards in the no proxy list (issue1821)
Alexander Plavin <alexander@plav.in> [Fri, 19 Jul 2013 02:08:19 +0400] rev 19534
hgweb: cleaner if conditions in changelog() function
This removes unneeded extra nesting level and extra variable, which makes
the code easier to understand.
Alexander Plavin <alexander@plav.in> [Mon, 15 Jul 2013 01:10:22 +0400] rev 19533
hgweb: separate search itself and template generation
This will make it simpler to add other search modes.
Alexander Plavin <alexander@plav.in> [Sat, 03 Aug 2013 00:34:56 +0400] rev 19532
paper: remove unused occurence of changelogtag in views
This variably isn't passed to these views and it always renders to empty string
for this reason. Other themes don't have this issue.
Alexander Plavin <alexander@plav.in> [Sun, 30 Jun 2013 11:48:21 +0400] rev 19531
hgweb: show full date in rfc822 format in tooltips at shortlog page
The absolute date was not shown anywhere in the log view for users with
enabled JavaScript.
Kevin Bullock <kbullock@ringworld.org> [Sun, 04 Aug 2013 16:19:12 -0500] rev 19530
hgweb: remove trailing whitespace in mercurial.js
Alexander Plavin <alexander@plav.in> [Mon, 22 Jul 2013 17:07:19 +0400] rev 19529
paper: get rid of changelogtag template duplication
Augie Fackler <raf@durin42.com> [Fri, 26 Jul 2013 15:59:16 -0400] rev 19528
obsolete: clean up a couple of docstrings for correctness
Simon Heimberg <simohe@besonet.ch> [Fri, 26 Jul 2013 21:18:40 -0400] rev 19527
run-tests: only check the common criteria once per test
Matt Mackall <mpm@selenic.com> [Thu, 01 Aug 2013 22:52:05 -0500] rev 19526
merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 01 Aug 2013 22:37:44 -0500] rev 19525
Added signature for changeset f37b5a17e6a0
Matt Mackall <mpm@selenic.com> [Thu, 01 Aug 2013 22:37:41 -0500] rev 19524
Added tag 2.7 for changeset f37b5a17e6a0
Kevin Bullock <kbullock@ringworld.org> [Thu, 01 Aug 2013 21:43:14 -0500] rev 19523
bookmarks: pull --update updates to active bookmark if it moved (issue4007)
This makes `hg pull --update` behave the same wrt the active bookmark as
`hg pull && hg update` does as of 2096e025a728. A helper function,
bookmarks.calculateupdate, is added to prevent code duplication between
postincoming and update.
Matt Mackall <mpm@selenic.com> [Thu, 01 Aug 2013 20:06:00 -0500] rev 19522
merge with i18n
Wagner Bruna <wbruna@yahoo.com> [Thu, 01 Aug 2013 02:36:59 -0300] rev 19521
i18n-pt_BR: synchronized with 7b815e38022a
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 01 Aug 2013 04:32:29 +0900] rev 19520
i18n-ja: synchronized with cfdae231ba78
Matt Mackall <mpm@selenic.com> [Thu, 01 Aug 2013 19:55:02 -0500] rev 19519
histedit: don't clobber working copy on --abort if not on histedit cset
Similar to issue4009, 2.7 will force people to abort histedits before
doing interesting things. Without this fix, people with histedit
sessions they wandered away from before upgrading to 2.7 could clobber
their working copy for no reason.
Matt Mackall <mpm@selenic.com> [Thu, 01 Aug 2013 17:54:12 -0500] rev 19518
rebase: allow aborting when descendants detected
With this, all aborts will succeed in removing the state, rather than
leaving the user in 'what do I do now?' limbo.
Matt Mackall <mpm@selenic.com> [Thu, 01 Aug 2013 17:45:13 -0500] rev 19517
rebase: continue abort without strip for immutable csets (issue3997)
This causes us to simply discard the rebase state.
Matt Mackall <mpm@selenic.com> [Thu, 01 Aug 2013 17:33:09 -0500] rev 19516
rebase: don't clobber wd on --abort when we've updated away (issue4009)
Wojciech Lopata <lopek@fb.com> [Fri, 26 Jul 2013 13:34:51 -0700] rev 19515
bookmarks: update only proper bookmarks on push -r/-B (issue 3973)
Make push -r/-B update only these bookmarks that point to pushed revisions
or their ancestors, so we can be sure that commit pointed by bookmark is
present in the remote reposiory. Previously push tried to update all shared
bookmarks.
Matt Mackall <mpm@selenic.com> [Sun, 28 Jul 2013 15:02:32 -0500] rev 19514
checklink: work around sshfs brain-damage (issue3636)
With the follow_symlinks option, sshfs will successfully create links
while claiming it encountered an I/O error. In addition, depending on
the type of link, it may subsequently be impossible to delete the link
via sshfs. Our existing link to '.' will cause sshfs to think the link
is a directory, and thus cause unlink to give EISDIR. Links to
non-existent names or circular links will cause the created link to not even
be visible.
Thus, we need to create a new temporary file and link to that. We'll
still get a failure, but we'll be able to remove the link.
Matt Mackall <mpm@selenic.com> [Sat, 27 Jul 2013 19:31:14 -0500] rev 19513
import: cut commit messages at --- unconditionally (issue2148)
We used to do this based on X-mailer: mentioning git, but git doesn't
put X-mailer in its git-format-patch output.
Pascal Quantin <pascal.quantin@gmail.com> [Sat, 27 Jul 2013 21:16:12 +0200] rev 19512
win32: update Inno Setup installer script and extensions list
Matt Mackall <mpm@selenic.com> [Fri, 26 Jul 2013 21:03:25 -0500] rev 19511
revert: fix largefiles breakage
Matt Mackall <mpm@selenic.com> [Fri, 26 Jul 2013 17:08:05 -0500] rev 19510
revert: make backup when unforgetting a file (issue3423)
This skips the backup if it would be a duplicate.
Matt Mackall <mpm@selenic.com> [Fri, 26 Jul 2013 15:42:10 -0500] rev 19509
revsingle: fix silly API issue (issue2992)
Matt Mackall <mpm@selenic.com> [Fri, 26 Jul 2013 15:05:48 -0500] rev 19508
Added signature for changeset f0d7721d7322
Matt Mackall <mpm@selenic.com> [Fri, 26 Jul 2013 15:05:46 -0500] rev 19507
Added tag 2.7-rc for changeset f0d7721d7322
Simon Heimberg <simohe@besonet.ch> [Thu, 25 Jul 2013 21:00:03 +0200] rev 19506
i18n-it: do not translate rst syntax
".. container::" and ".. note::" are rst syntax and therefore must not be
translated.
Frank Kingswood <frank@kingswood-consulting.co.uk> [Fri, 26 Jul 2013 14:44:13 +0100] rev 19505
convert: handle changeset sorting errors without traceback (issue3961)
Siddharth Agarwal <sid0@fb.com> [Thu, 25 Jul 2013 14:43:15 -0700] rev 19504
ancestor.deepest: ignore ninteresting while building result (issue3984)
ninteresting indicates the number of non-zero elements in the interesting
array, not the number of elements in the final list. Since elements in
interesting can stand for more than one gca, limiting the number of results to
ninteresting is an error.
Tests for issue3984 are included.
Wei, Elson <elson.wei@gmail.com> [Thu, 25 Jul 2013 17:35:53 +0800] rev 19503
ancestor.deepest: decrement ninteresting correctly (issue3984)
The invariant this code tries to hold is that ninteresting is the number of
non-zero elements in the interesting array. interesting[nsp] is incremented at
the same time as interesting[sp] is decremented. So if interesting[nsp] was
previously 0, ninteresting shouldn't be decremented.
Siddharth Agarwal <sid0@fb.com> [Thu, 25 Jul 2013 14:20:37 -0700] rev 19502
ancestor.deepest: sort revs in C version
This isn't strictly necessary, but it makes the code more consistent with the
Python version.
Augie Fackler <raf@durin42.com> [Thu, 25 Jul 2013 10:44:51 -0400] rev 19501
check-code: add a check for the next() builtin, which was new in 2.6
Augie Fackler <raf@durin42.com> [Thu, 25 Jul 2013 10:42:36 -0400] rev 19500
mq: rename next() to nextpatch() to avoid confusing a future check-code patch
next() is a builtin starting in 2.6, so it's also nice to avoid
shadowing the builtin.
Alexander Plavin <me@aplavin.ru> [Thu, 25 Jul 2013 15:27:41 +0400] rev 19499
hgweb: replace next(revs) to revs.next() to fix compatibility with Python 2.5-
Matt Mackall <mpm@selenic.com> [Thu, 25 Jul 2013 02:44:27 -0500] rev 19498
tests: glob out exception type for directory collision
Got three different results on buildbot.
Matt Mackall <mpm@selenic.com> [Thu, 25 Jul 2013 02:34:09 -0500] rev 19497
record: add checkunfinished support (issue3955)
Matt Mackall <mpm@selenic.com> [Thu, 25 Jul 2013 02:17:52 -0500] rev 19496
checkunfinished: accommodate histedit quirk
Turns out histedit actually intends for commits (but not other
operations like update) to be possible during its operation.
Simon Heimberg <simohe@besonet.ch> [Mon, 22 Jul 2013 10:04:53 +0200] rev 19495
tests: test-check-code-hg.t works for all files to check
with xargs, backslashes are eaten up. Convert them to slashes therefore.
This is only a problem with ls (on windows). hg manifest returns slashes.
The pipe char is moved before the line end for telling check-code.py that sed
does not modify the output.
Simon Heimberg <simohe@besonet.ch> [Mon, 22 Jul 2013 10:04:45 +0200] rev 19494
check-code: do not abort on an unreadable file, only report this
Matt Mackall <mpm@selenic.com> [Thu, 25 Jul 2013 00:54:49 -0500] rev 19493
heads: fix children/descendants in doc (issue3992)
Alexander Plavin <me@aplavin.ru> [Sun, 21 Jul 2013 18:50:54 +0400] rev 19492
paper: fix rendering of the first tab in a line in Webkit (issue3990)
This fixes issue3990 for Webkit-browsers, and also older Opera versions.
Rendering in firefox is not changed.
Alexander Plavin <me@aplavin.ru> [Sun, 21 Jul 2013 01:38:04 +0400] rev 19491
hgweb: fix duplication for some search queries
Given that N is maximum revision number in a repo, than if a revision with
number N-100n or N-100n+1 (for any integer n) is found with a hgweb search,
this revision is duplicated in search results.
Augie Fackler <raf@durin42.com> [Wed, 24 Jul 2013 14:51:13 -0400] rev 19490
sslutil: force SSLv3 on Python 2.6 and later (issue3905)
We can't (easily) force SSL version on older Pythons, but on 2.6 and
later we can force SSLv3, which is safer and widely supported. This
also appears to work around a bug in IIS detailed in issue 3905.
Augie Fackler <raf@durin42.com> [Wed, 24 Jul 2013 14:45:29 -0400] rev 19489
httpclient: update to revision 9517a2b56fe9 of httpplus (issue3905)
Includes upstream change "socketutil: force SSLv3 by default, as it is
safer" which should fix issue 3905.
Augie Fackler <raf@durin42.com> [Sat, 11 May 2013 20:40:15 -0500] rev 19488
hgweb: force connection close on early response
Not all WSGI servers close the socket when an early response is sent
to a large POST request, which can cause the server to interpret the
already-sent request body as an incoming (but hopelessly invalid)
request.
Alexander Plavin <me@aplavin.ru> [Thu, 25 Jul 2013 02:41:22 +0400] rev 19487
hgweb: fix incorrect revisions count in graph (issue3977)
Actual amount of revisions is used now instead of their numbers in the repo
before to deal with skipped numbers correctly.
Alexander Plavin <me@aplavin.ru> [Thu, 25 Jul 2013 02:22:39 +0400] rev 19486
hgweb: fix incorrect way to count revisions in log (issue3977)
Actual amount of revisions is used now instead of their numbers in the repo
before to deal with skipped numbers correctly.
This iterates starting from the newest revision (which is shown on top)
yielding up to the specified count, instead of the reversed order used before.
Effect of this change on efficiency is negligible, when the same changesets are
returned.
Alexander Plavin <me@aplavin.ru> [Thu, 25 Jul 2013 02:48:21 +0400] rev 19485
hgweb: always start graph with the revision in url
It is the same fix for graph command, as was recently for log. This makes the
specified revision be always on top of the graph view.
Before the patch, for example with repo having revisions 0, 1, 2, 3 and revision
in url being '2', all revisions were shown and the specified one wasn't
the first.
Matt Mackall <mpm@selenic.com> [Thu, 25 Jul 2013 00:44:00 -0500] rev 19484
merge with i18n
Wagner Bruna <wbruna@yahoo.com> [Wed, 24 Jul 2013 09:43:32 -0300] rev 19483
i18n-pt_BR: synchronized with bf6bc4681383
Matt Mackall <mpm@selenic.com> [Thu, 25 Jul 2013 00:33:28 -0500] rev 19482
update: add tracking of interrupted updates (issue3113)
This takes advantage of the new checkunfinished infrastructure
Matt Mackall <mpm@selenic.com> [Thu, 25 Jul 2013 00:00:47 -0500] rev 19481
mq: add checkunfinished support (issue3955)
Matt Mackall <mpm@selenic.com> [Wed, 24 Jul 2013 23:51:44 -0500] rev 19480
transplant: add checkunfinished (issue3955)
Nobody loves transplant anymore, but it was the first command to have
a --continue flag.
Matt Mackall <mpm@selenic.com> [Wed, 24 Jul 2013 23:51:44 -0500] rev 19479
histedit: add checkunfinished support (issue3955)
The tests contain a couple corner cases where workarounds are now
required. Strictly speaking, these are behavior regressions, but of an
extremely obscure and marginal sort. Commits or updates in the middle
of a histedit would have almost always been fairly serious user error.
Matt Mackall <mpm@selenic.com> [Wed, 24 Jul 2013 23:51:44 -0500] rev 19478
rebase: add checkunfinished support (issue3955)
Matt Mackall <mpm@selenic.com> [Wed, 24 Jul 2013 23:51:44 -0500] rev 19477
rebase: reorder parent check and state storage
This could cause a rebase to be 'in progress' even though it aborted.
Matt Mackall <mpm@selenic.com> [Wed, 24 Jul 2013 23:51:40 -0500] rev 19476
commands: add checks for unfinished operations (issue3955)
commands checked:
backout
bisect
commit
graft
import
Matt Mackall <mpm@selenic.com> [Wed, 24 Jul 2013 23:30:24 -0500] rev 19475
update: clear any clearable unfinished operations (issue3955)
Unclearable operations will cause an abort.
Matt Mackall <mpm@selenic.com> [Wed, 24 Jul 2013 23:27:30 -0500] rev 19474
cmdutil: core functionality to block during multistep commands (issue3955)
This adds a registration point and check functions that will allow
commands to check if multistep operations like an interrupted graft or
rebase are in progress before proceeding.
Augie Fackler <raf@durin42.com> [Wed, 24 Jul 2013 17:39:29 -0400] rev 19473
histedit: refuse to edit history that contains merges (issue3962)
Wei, Elson <elson.wei@gmail.com> [Wed, 24 Jul 2013 13:20:44 +0800] rev 19472
largefiles: overridematch() should replace the file path instead of extending (issue3934)
Matt Mackall <mpm@selenic.com> [Tue, 23 Jul 2013 17:28:12 -0500] rev 19471
revlog: handle hidden revs in _partialmatch (issue3979)
Looking up hidden prefixes could cause a no node exception
Looking up unique non-hidden prefixes could be ambiguous
Matt Mackall <mpm@selenic.com> [Tue, 23 Jul 2013 14:18:56 -0500] rev 19470
fileset: handle underbar in symbols
This was documented, but not implemented.
Matt Mackall <mpm@selenic.com> [Sun, 21 Jul 2013 18:45:42 -0500] rev 19469
heads: modernize documentation (issue3992)
The old docs emphasized topological heads rather than branch heads and
incorrectly defined branch heads as not having children rather than
descendants.
Matt Mackall <mpm@selenic.com> [Fri, 19 Jul 2013 16:45:44 -0500] rev 19468
convert: catch empty origpaths in svn gettags (issue3941)
Matt Mackall <mpm@selenic.com> [Fri, 19 Jul 2013 12:58:30 -0500] rev 19467
template: fix tabindent docstring (issue2880)
Matt Mackall <mpm@selenic.com> [Fri, 19 Jul 2013 00:20:53 -0500] rev 19466
merge default into stable for 2.7 code freeze
Shun-ichi GOTO <shunichi.goto@gmail.com> [Fri, 12 Jul 2013 11:14:42 +0900] rev 19465
osutil: consider WindowsError's behaviour to support python 2.4 on Windows
This change treat the ESRCH error as ENOENT like WindowsError class
does in python 2.5 or later. Without this change, some try..execpt
code which expects errno is ENOENT may fail. Actually hg command does
not work with python 2.4 on Windows.
CreateFile() will fail with error code ESRCH
when parent directory of specified path is not exist,
or ENOENT when parent directory exist but file is not exist.
Two errors are same in the mean of "file is not exist".
So WindowsError class treats error code ESRCH as ENOENT
in python 2.5 or later, but python 2.4 does not.
Actual results with python 2.4:
>>> errno.ENOENT
2
>>> errno.ESRCH
3
>>> WindowsError(3, 'msg').errno
3
>>> WindowsError(3, 'msg').args
(3, 'msg')
And with python 2.5 (or later):
>>> errno.ENOENT
2
>>> errno.ESRCH
3
>>> WindowsError(3, 'msg').errno
2
>>> WindowsError(3, 'msg').args
(3, 'msg')
Note that there is no need to fix osutil.c because it never be used
with python 2.4.
Matthew Turk <matthewturk@gmail.com> [Wed, 17 Jul 2013 10:40:40 -0400] rev 19464
churn: split email aliases from the right
This splits churn email aliases from the right, to enable incorrectly-specified
addresses that include equal signs to be mapped to correct addresses. This
will enable aliasing of bad addresses (typically typos) such as:
sername=myusername
that appear in the churn output through a churn alias such as:
sername=myusername = myusername
whereas previously splitting from the left would not enable this behavior.
Alexander Plavin <me@aplavin.ru> [Sun, 14 Jul 2013 05:35:04 +0400] rev 19463
hgweb: highlight line which is linked to at annotate view
Alexander Plavin <me@aplavin.ru> [Sat, 13 Jul 2013 02:36:29 +0400] rev 19462
hgweb: always start log with searched revision
This makes the specified revision be always on top of the list.
Before the patch, for example with repo having revisions 0, 1, 2, 3 and user
searching for '2', all revisions were shown and the specified one wasn't
the first.
Simon Heimberg <simohe@besonet.ch> [Mon, 01 Jul 2013 06:50:58 +0200] rev 19461
util: check if re2 works before using it (issue 3964)
Matt Mackall <mpm@selenic.com> [Thu, 18 Jul 2013 23:22:59 -0500] rev 19460
run-tests: backout 4f32747879d1 line endings change
It made the windows buildbot sad.
Alexander Plavin <me@aplavin.ru> [Sat, 13 Jul 2013 17:32:54 +0400] rev 19459
hgweb: highlight line which is linked to at comparison view
Alexander Plavin <me@aplavin.ru> [Sat, 13 Jul 2013 17:31:53 +0400] rev 19458
hgweb: change highlighted line color to be different from 'inserted' color
This changes line highlight color from a fain yellow (#ffff99) to
a faint blue (#bfdfff), because yellow color is used in comparison view for
inserted lines.
This new color is okay for people with different forms of color blindness
(tested with a simulator):
a) this color looks quite different from other used backgrounds
b) text doesn't lose distinction on this color
Mads Kiilerich <madski@unity3d.com> [Fri, 19 Jul 2013 01:40:57 +0200] rev 19457
convert: fix bad conversion of copies when hg.startrev is specified
The 'copynode' was looked up in self.keep as if it was a changeset node. It is
however a filelog node, and self.keep would thus fail if it actually looked at
its parameter ... which it only did if a startrev was specified.
Instead we now don't check the copy node - we don't have to. It must have been
copied from one of the parents, and we already check whether one of the parents
have the copy source.
We could perhaps use linkrev to see if the corresponding changeset was
converted ... but that would sometimes be wrong.
The existing test of this was wrong - now it is better, but it seems like it
exposes a 'log' issue.
Mads Kiilerich <madski@unity3d.com> [Fri, 19 Jul 2013 01:18:15 +0200] rev 19456
test-convert-hg-startrev: fix test for copy removal on missing parent
The test assumed that 'b' was missing just because the changeset that
introduced 'b' wasn't converted ... but 'b' was also not removed before the
start revision, and the parent was thus not missing at all.
Instead we introduce a file 'f' in rev 0 and remove it in rev 1 so the copy
source really doesn't exist in the repo that is converted from rev 1.
Alexander Plavin <me@aplavin.ru> [Sat, 13 Jul 2013 18:06:57 +0400] rev 19455
hgweb: make stripes in diffstat with CSS
Alexander Plavin <me@aplavin.ru> [Sat, 13 Jul 2013 18:03:35 +0400] rev 19454
hgweb: make stripes in file log with CSS
Alexander Plavin <me@aplavin.ru> [Sat, 13 Jul 2013 18:02:34 +0400] rev 19453
hgweb: make stripes in graph with CSS
Alexander Plavin <me@aplavin.ru> [Sat, 13 Jul 2013 17:59:00 +0400] rev 19452
hgweb: make stripes in log and search with CSS
Alexander Plavin <me@aplavin.ru> [Sat, 13 Jul 2013 17:51:43 +0400] rev 19451
hgweb: make stripes in branch list with CSS
Alexander Plavin <me@aplavin.ru> [Sat, 13 Jul 2013 17:49:20 +0400] rev 19450
hgweb: make stripes in repo list with CSS
Alexander Plavin <me@aplavin.ru> [Sat, 13 Jul 2013 17:43:45 +0400] rev 19449
hgweb: make stripes in file annotate view with CSS
Alexander Plavin <me@aplavin.ru> [Sat, 13 Jul 2013 17:44:57 +0400] rev 19448
hgweb: make stripes in tag list with CSS
Alexander Plavin <me@aplavin.ru> [Sat, 13 Jul 2013 17:44:46 +0400] rev 19447
hgweb: make stripes in directory view with CSS
Alexander Plavin <me@aplavin.ru> [Sat, 13 Jul 2013 17:43:19 +0400] rev 19446
hgweb: make stripes in bookmark list with CSS
Matt Mackall <mpm@selenic.com> [Thu, 18 Jul 2013 16:29:05 -0500] rev 19445
tests: update for commit --secret
Wei, Elson <elson.wei@gmail.com> [Sun, 14 Jul 2013 21:50:52 +0800] rev 19444
gpg: show "Unknown key ID xxxxxxxx" when the status is ERRSIG
Wei, Elson <elson.wei@gmail.com> [Sun, 14 Jul 2013 21:50:45 +0800] rev 19443
gpg: add shortkey() to convert from long id to short
Wei, Elson <elson.wei@gmail.com> [Fri, 12 Jul 2013 10:10:46 +0800] rev 19442
gpg: getkeys() removes unused returning value "err"
Wei, Elson <elson.wei@gmail.com> [Fri, 12 Jul 2013 10:05:11 +0800] rev 19441
gpg: treat "ERRSIG" as a valid key id but no fingerprint
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 11 Jul 2013 13:11:41 -0400] rev 19440
commit: enable --secret option
At the moment, creating secret commits is slightly cumbersome. They
can either be created by changing the default commit phase to secret
or by doing `hg phase --secret --force`. Both of these make secret
commits appear to be like some kind of advanced feature.
Secret commits, however, should be a convenient feature for people who
want to work on a private branch without affecting anyone else. There
should therefore be a prominent and convenient method for creating
secret commits.
Since the default phase is draft and there is no need to use --force
to go from a secret phase to any other phase, this patch
intentionally does not add --draft and --public options.
Florence Laguzet <florence.laguzet@gmail.com> [Wed, 17 Jul 2013 23:58:04 +0200] rev 19439
merge: deprecate the --force option
The --force option in merge does not make what people think it does so
it may not be visible to everyone.
I have local changes and want to pull one's changes which made 2 heads.
The --force option in help says
-f --force force a merge with outstanding changes
so I can expect that I can use it to force the merge and commit it in my
local repository without taking my local changes into account. But
merging with -f keeps local changes and "add" them: they must be
committed or reverted before doing the merge commit. The merge -f cannot
be reverted so it leads my repository in a bad state: cannot commit
merge and don't want to revert/commit local changes yet.
Message in help have been updated to emphasize the fact that local
changes are included in the merge.
Brendan Cully <brendan@kublai.com> [Thu, 18 Jul 2013 09:42:44 -0700] rev 19438
run-tests: revert previous commit, run() waits after a timeout
Brendan Cully <brendan@kublai.com> [Thu, 18 Jul 2013 09:39:01 -0700] rev 19437
run-tests: reap timed-out zombies
Alexander Plavin <me@aplavin.ru> [Fri, 12 Jul 2013 01:58:48 +0400] rev 19436
hgweb: run search instead of showing wrong error for ambigious identifier
Before this when multiple changesets hashes in the repos started with the
search query string, error was given that the revision isn't found, and it
was misleading. Now a simple keyword search runs in this case.
Siddharth Agarwal <sid0@fb.com> [Wed, 17 Jul 2013 17:34:47 -0700] rev 19435
doc: bump copyright year
Siddharth Agarwal <sid0@fb.com> [Wed, 17 Jul 2013 17:34:30 -0700] rev 19434
version: bump copyright year
Alexander Plavin <me@aplavin.ru> [Sat, 13 Jul 2013 00:57:56 +0400] rev 19433
hgweb: add line wrapping switch to file diff and changeset views
Alexander Plavin <me@aplavin.ru> [Sat, 13 Jul 2013 00:57:10 +0400] rev 19432
hgweb: file diff and changesets views behave like file source view
This gives all the benefits introduced before for file source view, namely
code selection without line numbers and correct indents, highlighting line
which is linked to, long lines wrapping.
Implementation strategy is also the same as for file source view: all the
lines are put in a sigle pre tag with span's for each line. Correct line
numbering (same as before this patch) is achieved with nested CSS counters.
Alexander Plavin <me@aplavin.ru> [Fri, 12 Jul 2013 23:47:56 +0400] rev 19431
hgweb: introduce separate classes for stripey background
Introduce stripes2 and stripes4 classes to support different structure.
They will be useful to implement stripes with pure CSS everywhere instead
of current server-side implementation.
Alexander Plavin <me@aplavin.ru> [Fri, 12 Jul 2013 15:58:13 +0400] rev 19430
hgweb: add line wrapping switch to file source view
This uses classList property, which is well-supported now: both Chromium 8.0+,
Firefox 3.6+ and Opera 11.5+ support it, as well as relatively modern versions
of other browsers.
Alexander Plavin <me@aplavin.ru> [Tue, 09 Jul 2013 02:08:24 +0400] rev 19429
hgweb: add changelog and search templates to raw style
This will make testing hgweb search and other things simpler and more concise,
as there is no extra HTML code in the raw style.
Alexander Plavin <me@aplavin.ru> [Fri, 12 Jul 2013 16:01:11 +0400] rev 19428
hgweb: toggleDiffstat function instead of showDiffstat and hideDiffstat
This eliminates the need of two almost equal functions, makes the code cleaner.
Takumi IINO <trot.thunder@gmail.com> [Wed, 03 Jul 2013 21:50:20 +0900] rev 19427
doc: make i18n man and html
Allow overwrite LANGUAGE and LC_ALL make variables, for make i18n man and html.
After this patch, we can make i18n man and html by following command:
$ make clean all LANGUAGE=ja
Takumi IINO <trot.thunder@gmail.com> [Wed, 03 Jul 2013 21:49:43 +0900] rev 19426
doc: make man and html from translated documents
Before this patch, man and html are english only, and there sources are not
translatable.
This patch make translatable all documents.
Takumi IINO <trot.thunder@gmail.com> [Wed, 03 Jul 2013 21:49:41 +0900] rev 19425
gendoc: dispatch print document content by commandline arguments
Before this patch, gendoc.py only prints hg.1.gendoc.txt content.
This adds any content print function.
Takumi IINO <trot.thunder@gmail.com> [Wed, 03 Jul 2013 21:49:39 +0900] rev 19424
gendoc: add showtopic
This function prints any topic.
Takumi IINO <trot.thunder@gmail.com> [Wed, 03 Jul 2013 21:49:37 +0900] rev 19423
gendoc: rename to showdoc from show_doc
This function prints hg.1.gendoc.txt content.
Simon Heimberg <simohe@besonet.ch> [Tue, 16 Jul 2013 01:29:14 +0200] rev 19422
check-code: automatically preppend "warning: " to all warning messages
Some warnings had "warning: " at the beginning of their message. Now this
is done consistent for all messages.
Especially in test-check-code-hg.t it is an advantage to see warnings at once
because only exceptions to them are tolerated. It is (almost) as obvious as
before a6180647ea.
The prefix will not remain when a warning is changed to a failure. A change
like a91387a37f will not be necessary anymore.
Martin Geisler <martin@geisler.net> [Wed, 17 Jul 2013 10:49:34 +0200] rev 19421
rollback: add reference to "hg commit --amend"
Now that rollback is deprecated (yay!) users might need a pointer to
the alternative for 99% of the cases where I used rollback.
Simon Heimberg <simohe@besonet.ch> [Sat, 13 Jul 2013 23:58:01 +0200] rev 19420
run-tests: generally handle line endings on windows by re
Recently this regexp was only appended when running a python test. When running
a tsttest there was a separate handling for each line type. Simplify and unify
this.
Simon Heimberg <simohe@besonet.ch> [Sat, 13 Jul 2013 23:57:55 +0200] rev 19419
run-tests: test for os.altsep instead of os.name when checking \ for /
This tells more explicitly what it is about
Alexander Plavin <me@aplavin.ru> [Mon, 15 Jul 2013 01:05:42 +0400] rev 19418
hgweb: move local changelist function to the beginning of the parent one
Alexander Plavin <me@aplavin.ru> [Sat, 13 Jul 2013 17:51:24 +0400] rev 19417
hgweb: get rid of branchentry template duplication
Matt Mackall <mpm@selenic.com> [Wed, 17 Jul 2013 14:25:35 -0500] rev 19416
merge with stable
Brendan Cully <brendan@kublai.com> [Wed, 17 Jul 2013 13:42:08 -0700] rev 19415
run-tests: replace popen locking with a noop _cleanup handler on py24
This also avoids the race condition, and isn't detrimental to job scheduling.
Brendan Cully <brendan@kublai.com> [Wed, 17 Jul 2013 13:02:12 -0700] rev 19414
run-tests: only lock Popen wait/poll on python 2.4
It can cause scheduling bubbles and is not necessary on newer pythons.
Brendan Cully <brendan@kublai.com> [Wed, 17 Jul 2013 12:45:12 -0700] rev 19413
run-tests: lock popen wait/poll
In python2.4, any call to Popen() may attempt to wait on any active
process, and wait is not thread-safe. Make it thread-safe.
See http://bugs.python.org/issue1731717 for details.
Matt Mackall <mpm@selenic.com> [Wed, 17 Jul 2013 14:20:35 -0500] rev 19412
merge with i18n
Martin Schröder <martin.schroeder@nerdluecht.de> [Sun, 14 Jul 2013 21:20:02 +0200] rev 19411
i18n-de: fixed some strings about stripping
Martin Schröder <martin.schroeder@nerdluecht.de> [Sun, 14 Jul 2013 21:07:44 +0200] rev 19410
i18n-de: synchronized with fbdac607bff3
Matt Mackall <mpm@selenic.com> [Tue, 16 Jul 2013 17:10:26 -0500] rev 19409
rollback: mark as deprecated
Matt Mackall <mpm@selenic.com> [Tue, 16 Jul 2013 15:18:12 -0500] rev 19408
worker: properly report errors from worker processes (issue3982)
Matt Mackall <mpm@selenic.com> [Tue, 16 Jul 2013 12:44:11 -0500] rev 19407
run-tests: patch over py2.4 proc.wait() race
Matt Mackall <mpm@selenic.com> [Tue, 16 Jul 2013 11:53:53 -0500] rev 19406
worker: check problem state correctly (issue3982)
If a large update triggered an abort, it was possible for the main
thread to still update the dirstate.
This fix is incomplete, as the failing worker now doesn't generate a
proper error message. This is difficult in the fork-based framework,
which relies on exceptions propagating to the top of the dispatcher
for formatting.
Matt Mackall <mpm@selenic.com> [Tue, 16 Jul 2013 11:18:16 -0500] rev 19405
sshpeer: mark _validrepo internal
Matt Mackall <mpm@selenic.com> [Tue, 16 Jul 2013 11:17:01 -0500] rev 19404
progress: respect HGPLAIN
Matt Mackall <mpm@selenic.com> [Thu, 11 Jul 2013 19:29:23 -0500] rev 19403
tip: deprecate the tip command
Matt Mackall <mpm@selenic.com> [Thu, 11 Jul 2013 19:28:54 -0500] rev 19402
tag: remove incorrect reference to tip
Matt Mackall <mpm@selenic.com> [Thu, 11 Jul 2013 19:28:26 -0500] rev 19401
log: remove tip from example
Matt Mackall <mpm@selenic.com> [Thu, 11 Jul 2013 19:28:01 -0500] rev 19400
cat: remove incorrect reference to tip
Matt Mackall <mpm@selenic.com> [Thu, 11 Jul 2013 19:26:53 -0500] rev 19399
share: remove reference to tip
Matt Mackall <mpm@selenic.com> [Thu, 11 Jul 2013 19:26:34 -0500] rev 19398
rebase: simplify references to branch tips
Matt Mackall <mpm@selenic.com> [Thu, 11 Jul 2013 19:25:44 -0500] rev 19397
mq: remove reference to tip
Alexander Plavin <me@aplavin.ru> [Thu, 11 Jul 2013 17:01:54 +0400] rev 19396
hgweb: show current search query in the input field
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 14 Jul 2013 17:23:07 +0200] rev 19395
mq: use an unfiltered property cache for the queue object
The same `queue` object should be used in all situations. This allows to store
global states on the object (like the reworked shelve extension plans to). The
queue object does not need to be distinct for all possible views (no reference
to the repo/view used at creation time) it's even a bit surprising that mq still
works with the current code.
Siddharth Agarwal <sid0@fb.com> [Mon, 15 Jul 2013 15:19:43 -0700] rev 19394
summary: use missing ancestors algorithm to find new commits
For a repository with around 520,000 commits and 190,000 files, this reduces
the time hg summary takes from 5.5 seconds to 2.75.
Augie Fackler <raf@durin42.com> [Tue, 16 Jul 2013 11:13:18 -0500] rev 19393
Merge histedit fixes from stable.
Martin Geisler <martin@geisler.net> [Mon, 15 Jul 2013 15:04:42 +0200] rev 19392
histedit: use base for computing renames when folding (issue3729)
When a file was renamed in the very first changeset being histedited,
the rename was not detected. Consider a history like this:
0 base: add a.txt
1 first: rename a.txt to b.txt
2 last: edit b.txt
When 1 and 2 are edited, copies.pathcopies(first, last) correctly
returns that nothing was renamed. We must instead use
copies.pathcopies(first, last) to detect the initial rename.
Martin Geisler <martin@geisler.net> [Mon, 15 Jul 2013 13:20:39 +0200] rev 19391
test-histedit-fold: remove unnecessary --template
The template is already set by the logt alias.
Alexander Plavin <me@aplavin.ru> [Sat, 29 Jun 2013 14:27:53 +0400] rev 19390
templater: sort functions alphabetically, as filters are
Alexander Plavin <me@aplavin.ru> [Thu, 04 Jul 2013 14:19:43 +0400] rev 19389
hgweb: color line which is linked to in file source view
Browser compatibility (':target' selector used): IE 8+, FF 3.5+, Safari 3.1+,
Opera 9.5+, Chromium 4+, all popular mobile browsers.
Alexander Plavin <me@aplavin.ru> [Thu, 04 Jul 2013 14:19:13 +0400] rev 19388
hgweb: wrap lines in file source view
Alexander Plavin <me@aplavin.ru> [Thu, 04 Jul 2013 14:18:44 +0400] rev 19387
hgweb: code selection without line numbers in file source view
All the source lines are put in a <pre> tag, which gives correct display and
copy&paste in both Chromium (WebKit) and FireFox: line numbers are not copied,
all the tabs and spaces are kept. This doesn't change the visual appearance
of the view compared to current hgweb version and doesn't use any JS code.
Also, stripes in this view are now generated clientside with CSS.
This implementation is chosen because other variants have important issues:
Strategy FF Chrome
current D,LT,E,T,L D,L
pre S,NW S,NW
pre/div/nbsp LT,E,T,TS,NW TS,NW
pre/div/br LT,E,T,NW NW
ol/li/nbsp LT,E,T,TS,AJ TS,AJ
ol/li/br LT,E,T,AJ AJ
pre/span LV LV
Legend
Strategies:
- current: implemented in hgweb before this patch, i.e. divs for each line,
and line numbers links in the div too
- pre: the whole code in one pre tag with newlines, all line numbers
in another one with 'float: left'
- pre/div/{nbsp,br}: same as just 'pre', but separate divs for each line and
or <br> instead of empty lines (otherwise they are not copied at all)
- ol/li/{nbsp,br}: a single ol with li's and divs for each line,
or <br> same as in previous strategy
- pre/span: this patch
Problems:
D = (very minor) display problems, like wrong width of leading tabs
LT = loses leading/trailing whitespace
E = loses embedded whitespace
B = loses blank lines
T = loses tabs
L = selects line numbers
LV = (only) visually selects line numbers
LVE = (only) visually selects line numbers at empty lines
S = no stripes (and no ability to easily highlight
lines-which-are-linked-at in the future)
TS = space copied instead of empty line
AJ = get anchor links only with JS (they work even without)
NW = no linewrap easily possible (in future)
As for browser versions compatibility, the CSS tricks used are supported in
(according to caniuse.com):
a) line numbers generation with 'content:' property and CSS counters:
IE 8+, all other popular browsers (in pre-WebKit Opera numbers are being copied)
b) stripes ('nth-child' selector):
IE 8+, FF 3.5+, Safari 3.2+, Opera 9.5+, all other popular browsers
c) line numbers are not visually selected ('user-select:' property):
IE 10+, Opera 15.0+, all other popular browsers
This patch is based on a demo implementation by
Martin Geisler <martin@geisler.net>.
Simon Heimberg <simohe@besonet.ch> [Sat, 06 Jul 2013 21:48:07 +0200] rev 19386
tests: print line numbers when checking code
When an exception will be listed the line numbers can be replaced with glob
as it is done in test-check-pyflakes.t
Simon Heimberg <simohe@besonet.ch> [Sat, 06 Jul 2013 21:48:01 +0200] rev 19385
tests: rename files to py extension instead of copying a 2nd time
Simon Heimberg <simohe@besonet.ch> [Sat, 06 Jul 2013 21:47:56 +0200] rev 19384
tests: check-code all python files in one run
Shun-ichi GOTO <shunichi.goto@gmail.com> [Thu, 04 Jul 2013 23:05:59 +0900] rev 19383
win32mbcs: wrap util.split()
util.split() should be wrapped because it is an alias of unsafe
os.path.split().
Simon Heimberg <simohe@besonet.ch> [Mon, 01 Jul 2013 06:50:58 +0200] rev 19382
check-code: concatenate "check-code" on compile time
The python compiler concatenates two string constants. Use this instead of
doing it on run time or instruct the user how to do it.
The strings "no-check-code" and "check-code-ignore" has to be specially written
for not skipping some checking of the code of this file.
Simon Heimberg <simohe@besonet.ch> [Mon, 01 Jul 2013 06:50:58 +0200] rev 19381
tests: do not skip code-checking on some whole files
In filterpyflakes the term no-check-code was probably by accident.
In the test the intention was not to skip the entire file but only one
line. But any skipping seems to be unnecessary since a longer time.
Simon Heimberg <simohe@besonet.ch> [Mon, 01 Jul 2013 06:50:58 +0200] rev 19380
check-code: do not warn on printf \\x or \\[1-9]
When there is a double backslash the following char does not have any special
meaning. So do not warn on this.
Remove the now obsolete no-check-code statement. (It was used wrongly anyway, it
skipped checking the entire file.)
Simon Heimberg <simohe@besonet.ch> [Tue, 06 Nov 2012 00:22:56 +0100] rev 19379
summary: remove passing of rev because summary does not have this
The command summary does not have a rev argument, so passing this results
is None always. Therefore pass None explicitly.
Simon Heimberg <simohe@besonet.ch> [Mon, 01 Jul 2013 20:48:56 +0200] rev 19378
cleanup: drop unused variables and an unused import
Simon Heimberg <simohe@besonet.ch> [Mon, 01 Jul 2013 20:48:55 +0200] rev 19377
tests: run pyflakes on files from manifest which could be python files
Skip a binary file because pyflakes 0.4.0 aborts on it.
Augie Fackler <raf@durin42.com> [Tue, 09 Jul 2013 13:43:09 -0500] rev 19376
Merge with stable.
Matt Mackall <mpm@selenic.com> [Mon, 01 Jul 2013 18:07:33 -0500] rev 19375
Added signature for changeset 009794acc6e3
Matt Mackall <mpm@selenic.com> [Mon, 01 Jul 2013 18:07:29 -0500] rev 19374
Added tag 2.6.3 for changeset 009794acc6e3
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 01 Jul 2013 11:09:29 -0300] rev 19373
merge with i18n
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 01 Jul 2013 05:25:53 +0900] rev 19372
i18n-ja: synchronized with ec17ddecdf64
Matt Mackall <mpm@selenic.com> [Sun, 30 Jun 2013 15:19:39 -0500] rev 19371
merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 30 Jun 2013 15:06:22 -0500] rev 19370
merge with i18n
Martin Geisler <martin@geisler.net> [Tue, 25 Jun 2013 18:45:33 -0400] rev 19369
i18n-fr: remove duplicate paragraphs
The paragraphs were added as part of the automatic conversion in
42b46d3cb366. Thanks to Timeless for the initial patch.
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:33 -0400] rev 19368
i18n-fr: remove extra empty line at end of msgtr
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:33 -0400] rev 19367
i18n-fr: fix malformed literal blocks
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:33 -0400] rev 19366
i18n-fr: remove extra trailing newline
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:33 -0400] rev 19365
i18n-it: remove extra trailing newlines
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:33 -0400] rev 19364
i18n-sv: fix malformed literal block
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:33 -0400] rev 19363
i18n-de: remove extra format character
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:33 -0400] rev 19362
i18n-de: add missing format character
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:33 -0400] rev 19361
i18n-de: add missing newline
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:33 -0400] rev 19360
i18n-de: add missing heading underline
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:33 -0400] rev 19359
i18n-de: use same format character as in msgid
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:32 -0400] rev 19358
i18n-de: remove duplicate paragraph
It was added in the automatic conversion done in f837e7ea0e73.
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:32 -0400] rev 19357
i18n-de: fix malformed note directive
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:32 -0400] rev 19356
i18n-de: remove extra format character
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:32 -0400] rev 19355
i18n-de: add missing literal block
Martin Geisler <martin@geisler.net> [Tue, 25 Jun 2013 18:45:32 -0400] rev 19354
i18n-it: remove extra trailing newline and fix translation
Thanks to Timeless for flagging the extra newline.
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:32 -0400] rev 19353
i18n-de: remove bad fuzzy translations
These were flagged because they had the wrong number of format
characters.
Reviewed by Martin Geisler to ensure that the translation couldn't be
easily updated to the correct number of format characters.
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:32 -0400] rev 19352
i18n-da: remove bad fuzzy translation
Reviewed by Martin Geisler.
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:32 -0400] rev 19351
i18n-da: remove extra trailing newline
timeless@mozdev.org [Tue, 25 Jun 2013 18:45:32 -0400] rev 19350
i18n-da: add missing newline
Martin Geisler <martin@geisler.net> [Tue, 25 Jun 2013 18:45:32 -0400] rev 19349
i18n-da: remove extra trailing newline and fix translation
Thanks to Timeless for flagging the extra newline.
Martin Geisler <martin@geisler.net> [Tue, 25 Jun 2013 18:45:32 -0400] rev 19348
i18n-da: add missing format character and fix translation
Thanks to Timeless for flagging the missing format character.
timeless@mozdev.org [Mon, 24 Jun 2013 00:39:34 -0400] rev 19347
i18n-da: add missing heading underline
timeless@mozdev.org [Mon, 24 Jun 2013 00:34:56 -0400] rev 19346
i18n-da: remove bad fuzzy translation
Martin Geisler <martin@geisler.net> [Mon, 24 Jun 2013 00:32:52 -0400] rev 19345
i18n-da: add missing format character and fix translation
Thanks to Timeless for flagging the missing format character.
Martin Geisler <martin@geisler.net> [Sat, 29 Jun 2013 19:11:24 +0200] rev 19344
i18n-el: add missing indention for literal block
Thanks to Timeless for flagging this.
timeless@mozdev.org [Mon, 24 Jun 2013 00:00:53 -0400] rev 19343
i18n-el: remove extra newline
timeless@mozdev.org [Sun, 23 Jun 2013 14:19:37 -0400] rev 19342
i18n-el: remove duplicate paragraphs
They were added in the conversion done in 8ef2cd109dc6.
timeless@mozdev.org [Mon, 24 Jun 2013 00:11:28 -0400] rev 19341
i18n-zh_CN: remove duplicate paragraphs
They are added in the automatic conversion in e5b7841e0008.
timeless@mozdev.org [Sun, 23 Jun 2013 18:30:10 -0400] rev 19340
i18n-zh_CN: add missing literal blocks
timeless@mozdev.org [Sun, 23 Jun 2013 18:27:17 -0400] rev 19339
i18n-zh_CN: remove duplicate paragraphs
timeless@mozdev.org [Sun, 23 Jun 2013 18:10:02 -0400] rev 19338
i18n-ru: spell "ElementTree" correctly
timeless@mozdev.org [Sun, 23 Jun 2013 17:40:03 -0400] rev 19337
i18n-ru: fix translated config section
Matt Mackall <mpm@selenic.com> [Sun, 30 Jun 2013 14:56:04 -0500] rev 19336
merge with crew
Simon Heimberg <simohe@besonet.ch> [Wed, 26 Jun 2013 23:12:55 +0200] rev 19335
tests: simplify and document the sorting of pyflake messages
The pyflake messages are simply ordered by message type, path, line no (and
message text).
The message type is taken from the order of the filters.
The previous ordering looks complicated and illogically.
It was the following order (r'\3:\5:\4:\1:\2:' + line):
message (\3 and \5)
var name (\4)
path (\1)
line no (\2)
line reference
Ordering by var name before path looks illogically for me.
Durham Goode <durham@fb.com> [Tue, 25 Jun 2013 13:23:12 -0700] rev 19334
bundle: move file chunk generation to it's own function
Moves the file chunk generation part of bundle creation to it's own function.
This allows extensions to customize the filelog part of bundle generation.
Durham Goode <durham@fb.com> [Tue, 18 Jun 2013 13:05:16 -0700] rev 19333
parents: change parents command to use filectx
Changes the parents command to use filectx to look up the change node
instead of doing it manually. This allows extensions to modify the
file-to-commit relationship behind the filectx api.
Siddharth Agarwal <sid0@fb.com> [Fri, 28 Jun 2013 16:58:31 -0700] rev 19332
update: remove .hg/graftstate on clean (issue3970)
e078ea9b4ce4 introduced a check for interrupted grafts while committing. This
exposed a bug where hg update --clean didn't remove that file.
Wagner Bruna <wbruna@softwareexpress.com.br> [Wed, 26 Jun 2013 12:04:57 -0300] rev 19331
i18n-pt_BR: synchronized with b500a663a2c7
Alexander Plavin <me@aplavin.ru> [Tue, 25 Jun 2013 21:02:22 +0400] rev 19330
templater: add strip function with chars as an extra argument
This allows specifying characters to strip, like the Python strip function.
Augie Fackler <raf@durin42.com> [Mon, 24 Jun 2013 14:02:01 -0400] rev 19329
Merge with main.
Durham Goode <durham@fb.com> [Mon, 17 Jun 2013 19:44:00 -0700] rev 19328
revlog: add exception when linkrev == nullrev
When we deployed the latest crew mercurial to our users, a few of them
had issues where a filelog would have an entry with a -1 linkrev. This
caused operations like rebase and amend to create a bundle containing the
entire repository, which took a long time.
I don't know what the issue is, but adding this check should prevent repos
from getting in this state, and should help us pinpoint the issue next time
it happens.
Matt Mackall <mpm@selenic.com> [Fri, 21 Jun 2013 15:31:40 -0500] rev 19327
merge with stable
Durham Goode <durham@fb.com> [Mon, 17 Jun 2013 19:44:00 -0700] rev 19326
revlog: add exception when linkrev == nullrev
When we deployed the latest crew mercurial to our users, a few of them
had issues where a filelog would have an entry with a -1 linkrev. This
caused operations like rebase and amend to create a bundle containing the
entire repository, which took a long time.
I don't know what the issue is, but adding this check should prevent repos
from getting in this state, and should help us pinpoint the issue next time
it happens.
Matt Mackall <mpm@selenic.com> [Wed, 19 Jun 2013 14:17:03 -0500] rev 19325
changegroup: fix fastpath during commit
Change 627cd7842e5d dropped the 'revset' variable which kept track of
which changesets were being bundled. Instead, it used "not in
commonset" to decide which changesets were outgoing.. which ran into
trouble when a commit was in progress.
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Jun 2013 22:41:53 +0200] rev 19324
tests: do not print hgrc in test
This lets test-rebase-cache.t pass also when --inotify or --extra-config-opt is
specified.
Simon Heimberg <simohe@besonet.ch> [Thu, 13 Jun 2013 01:37:02 +0200] rev 19323
contrib: delete setup3k in favor of setup --c2to3
setup3k was merged into setup in 7a7a1c594d. Now finally get rid of it.
Simon Heimberg <simohe@besonet.ch> [Thu, 13 Jun 2013 01:36:58 +0200] rev 19322
cleanup: remove unused imports
detected by pyflakes
simon@laptop-tosh [Thu, 13 Jun 2013 01:44:02 +0200] rev 19321
tests: check-code more python files without py extension
files found by running
$ hg manifest | grep -v "\." | xargs file | grep python
Augie Fackler <raf@durin42.com> [Fri, 14 Jun 2013 15:28:40 -0400] rev 19320
dummyssh: fix check-code nit
Siddharth Agarwal <sid0@fb.com> [Wed, 19 Jun 2013 23:05:40 -0700] rev 19319
test-pathencode: randomize length of each path component
This makes it possible for long and short components to exist in the same path.
This also makes shorter path components more likely. For
randint(1, randint(1, n)), the likelihood that one sees a number k
(1 <= k <= n) is 1/n * (\sum_{k=i}^n 1/i). This decreases with k, much like in
the real world where shorter paths are more common than longer ones.
The previous fix and this one together cause issue3958 to be detected by this
test with reasonable frequency. When this test was run 100 times in a loop, the
issue was detected 30 of those times.
Siddharth Agarwal <sid0@fb.com> [Wed, 19 Jun 2013 23:01:22 -0700] rev 19318
test-pathencode: reduce makepart length requirement by 1
This allows path components of length 1 to be generated.
Siddharth Agarwal <sid0@fb.com> [Wed, 19 Jun 2013 22:34:34 -0700] rev 19317
pathencode: fix hashmangle short dir limit (issue3958)
The Python version of this (see mercurial/store.py:_hashencode) copies path
components up to a limit of maxshortdirslen bytes. The Python version does not
consider the initial "dh/" to be part of the this, though, while the C version
currently does. Adding len("dh/") == 3 to the limit for the C version brings it
in line with the Python version.
This was not caught by the randomized testing scheme in test-pathencode.py
because of a couple of flaws with the test. Upcoming patches will fix those
problems.
Matt Mackall <mpm@selenic.com> [Thu, 20 Jun 2013 14:06:11 -0500] rev 19316
docs: change description to synopsis in hgrc.5
Spotted by Eric S. Raymond.
simon@laptop-tosh [Tue, 11 Jun 2013 23:39:48 +0200] rev 19315
run-tests: sort missing files first instead of raising an error
sort first for early telling typos in test names
Durham Goode <durham@fb.com> [Thu, 30 May 2013 19:29:21 -0700] rev 19314
filectx: remove dependencies on filerev
Removing dependencies on filectx.filerev() makes it easier to create a filelog
implementation that doesn't have rev numbers.
simon@laptop-tosh [Sat, 08 Jun 2013 22:37:08 +0200] rev 19313
hg: move return statement after finally block
return is always run after finally block. Now we have same functionality,
but clearer readability.
simon@laptop-tosh [Sun, 09 Jun 2013 16:49:08 +0200] rev 19312
run-tests: call Threads constructor with keyword arguments
This is suggested in the python documentation
(on http://docs.python.org/2/library/threading.html#thread-objects)
simon@laptop-tosh [Sun, 09 Jun 2013 16:42:55 +0200] rev 19311
run-tests: ignoring tests works again
running with --retest did not work anymore because runone still returned None
for this case. But this is not allowed since 6a127fa5de23.
Simon Heimberg <simohe@besonet.ch> [Sat, 08 Jun 2013 20:20:14 +0200] rev 19310
check-code: introduce function for using re2 when available
Do it similar as in mercurial.util. For simplicity only support flag
multiline which is the only one used.
Simon Heimberg <simohe@besonet.ch> [Sat, 08 Jun 2013 20:20:14 +0200] rev 19309
check-code: compile filters when loading
Simon Heimberg <simohe@besonet.ch> [Sat, 08 Jun 2013 20:20:14 +0200] rev 19308
check-code: compile all patterns on initialisation
They where compiled once for every checked file (when calling finditer).
Simon Heimberg <simohe@besonet.ch> [Sat, 08 Jun 2013 20:20:14 +0200] rev 19307
check-code: only fix patterns once
The patterns were fixed once for every file. Now only do it once when loading
the file.
Matt Mackall <mpm@selenic.com> [Fri, 07 Jun 2013 16:59:59 -0500] rev 19306
merge with stable
Iulian Stana <julian.stana@gmail.com> [Thu, 02 May 2013 19:36:47 +0300] rev 19305
commit: amending with --close-branch (issue3445)
You can't close a branch that hasn't got a head.
newbranch + commit --close-branch must fail
newbranch + commit + commit --amend --close-branch must fail
You must not be allowed to close a branch that is not defined.
Matt Mackall <mpm@selenic.com> [Fri, 07 Jun 2013 16:04:11 -0500] rev 19304
run-tests: simplify interrupted message
Matt Mackall <mpm@selenic.com> [Fri, 07 Jun 2013 15:58:14 -0500] rev 19303
run-tests: remove spurious disable of --time with --debug
Matt Mackall <mpm@selenic.com> [Fri, 07 Jun 2013 15:56:16 -0500] rev 19302
run-tests: always gather runtimes
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Jun 2013 22:05:29 +0200] rev 19301
run-tests: when interrupted report time in failure message
When --time is specified, the interruption message of an interrupted test is
extended with the time the test has run
INTERRUPTED: /path/to/tests/test-example.t (after 513 seconds)
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Jun 2013 22:05:02 +0200] rev 19300
run-tests: report interrupted tests
When the test run is aborted, a message is printed for each interrupted test.
This is helpful when a test is hanging.
example failure message:
INTERRUPTED: /path/to/tests/test-example.t
The message can appear before or after the line with the number of tests
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Jun 2013 22:42:43 +0200] rev 19299
run-tests: open hgrc file only for writing
The file is not read here. Opening with "w+" is unnecessary.
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Jun 2013 22:06:16 +0200] rev 19298
color: use pythons isinstance method instead of reprogramming it
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Jun 2013 22:06:02 +0200] rev 19297
color: only provide the required opt to _modesetup
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 06 Jun 2013 14:05:03 -0400] rev 19296
doc: make it easier to read how to enable extensions
We tell people all the time that enabling extensions is not a scary
thing to do, but we don't make it easy enough for an absolute novice
to do so. When they see a suggestion to do "hg extfoo bar", the error
message tells them "see hg help extensions", but that help page
doesn't actually tell them where configuration files are.
Furthermore, the big warning about why extensions aren't enabled by
default should be pushed down a little bit. Most of the extensions
shipped by hg are not all that scary, and some very basic and useful
cosmetic extensions like graphlog, color, pager, and progress, should
be enabled for many hg users.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 06 Jun 2013 13:37:41 -0400] rev 19295
doc: reword "config file" to "configuration file"
While we do use the abbreviation "config" elsewhere in the docs, the
phrase "configuration file" is always written out in full, except in
this location in phases.txt.
Matt Mackall <mpm@selenic.com> [Thu, 06 Jun 2013 14:40:26 -0500] rev 19294
run-tests: make --noskips work
Durham Goode <durham@fb.com> [Thu, 30 May 2013 18:47:16 -0700] rev 19293
filelog: switch 'not len(filerevlog)' to 'not filerevlog'
A few places in the code use 'if not len(revlog)' to check if the revlog
exists. Replacing this with 'not filerevlog' allows alternative revlog
implementations to override __nonzero__ to handle this case without
implementing __len__.
Durham Goode <durham@fb.com> [Thu, 30 May 2013 19:29:03 -0700] rev 19292
annotate: simplify annotate parent function
The annotate algorithm used a custom parents() function to try to reuse
filectx and filelogs. I simplified it a bit to rely more heavily on the
self.parents() which makes it work well with alternative filectx
implementations. I tested performance on a file with 5000+ revisions
but no renames, and on a file with 500 revisions repeating a series of
4 edits+renames and saw zero performance hit. In fact, it was reliably a
couple milliseconds faster now.
Added the perfannotate command to contrib/perf.py for future use.
Durham Goode <durham@fb.com> [Thu, 30 May 2013 19:26:56 -0700] rev 19291
changegroup: move changegroup file adding to a separate function
Moving the logic that adds files to a changegroup to a different function
allows extensions to override it and customize the way filelogs are added
to changegroups.
No logic is changed.
Durham Goode <durham@fb.com> [Thu, 30 May 2013 19:25:55 -0700] rev 19290
log: move log file walk to its own function
This moves the logic that determines which changesets to process during a
'hg log foo.txt' command. Putting it in its own function allows extensions
to modify how the file log is traversed. For instance, the current
implementation uses filelog revs heavily. Other implementations may not have
filelog revs available.
The function throws an exception if the traversal is not possible via the
filelog, so the parent function can do things the slow way if necessary
(by walking the entire commit history).
Aside from the exception throwing, no logic is changed.
Durham Goode <durham@fb.com> [Thu, 30 May 2013 17:51:13 -0700] rev 19289
bundle: refactor changegroup prune to be its own function
Moving the prune function to be a non-nested function allows extensions to
control which revisions are allowed in the changegroup. For example, in my
shallow repo extension I want to prevent filelogs from being added to the
bundle.
This also allows an extension to use a filelog implementation that doesn't
have revlog.linkrev implemented.
Durham Goode <durham@fb.com> [Thu, 30 May 2013 17:49:37 -0700] rev 19288
filectx: refactor filectx.rev() to use filectx._changeid
The code in filectx.rev() was identical to filectx._changeid. Fixing this
allows alternative filectx implementations to only override _changeid.
Bryan O'Sullivan <bryano@fb.com> [Mon, 03 Jun 2013 17:20:45 -0700] rev 19287
util: add an optional timestamp parameter to makedate
This will be used by the upcoming shelve extension.
Bryan O'Sullivan <bryano@fb.com> [Mon, 03 Jun 2013 17:20:44 -0700] rev 19286
util: rename ct variable in makedate to timestamp
Bryan O'Sullivan <bryano@fb.com> [Mon, 03 Jun 2013 17:20:37 -0700] rev 19285
merge: add a files method to the mergestate class
This will be used in the upcoming shelve extension.
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Jun 2013 21:16:49 +0200] rev 19284
histedit: raise ImportError when demandloading is enabled
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 18:09:06 -0500] rev 19283
run-tests: add --loop support
This makes it easy to run tests repeatedly at high loads to look for test failures.
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 17:58:51 -0500] rev 19282
run-tests: --interactive and --jobs no longer conflict
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 17:58:49 -0500] rev 19281
run-tests: sort certain slow tests earlier by keyword
There are a few tests that evade the size heuristic
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 17:57:37 -0500] rev 19280
run-tests: drop unused resultslock
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 17:57:36 -0500] rev 19279
run-tests: drop options.child and users
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 17:56:53 -0500] rev 19278
run-tests: remove runchildren, now unused
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 17:56:51 -0500] rev 19277
run-tests: schedule largest tests first
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 16:58:22 -0500] rev 19276
run-tests: introduce thread scheduler
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 16:55:19 -0500] rev 19275
run-tests: use count to calculate port to use
This will keep threads from using the same server ports
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 16:38:15 -0500] rev 19274
run-tests: introduce threadtmp directory
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 16:29:35 -0500] rev 19273
run-tests: add abort flag
This will be used to help threads clean up gracefully
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 16:29:22 -0500] rev 19272
run-tests: move more variables to env
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 16:29:20 -0500] rev 19271
run-tests: simplify env deletion
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 16:22:51 -0500] rev 19270
run-tests: move most of remaining environment tweaks
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 16:22:51 -0500] rev 19269
run-tests: move environment creation to a separate function
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 16:22:51 -0500] rev 19268
run-tests: move HGRCPATH to env
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 16:22:51 -0500] rev 19267
run-tests: move DAEMON_PIDS to env
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 16:22:34 -0500] rev 19266
run-tests: move HGPORT setting to env
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 15:33:41 -0500] rev 19265
run-tests: write tmp paths into env copy
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 15:27:08 -0500] rev 19264
tests: avoid writing files to HGTMP
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 14:04:55 -0500] rev 19263
run-tests: use env dict to kill daemons
Matt Mackall <mpm@selenic.com> [Sun, 02 Jun 2013 13:45:08 -0500] rev 19262
run-tests: add env dict to isolate test environment
Matt Mackall <mpm@selenic.com> [Sat, 01 Jun 2013 17:19:00 -0500] rev 19261
merge with stable
Matt Mackall <mpm@selenic.com> [Sat, 01 Jun 2013 17:10:24 -0500] rev 19260
Added signature for changeset cceaf7af4c9e
Matt Mackall <mpm@selenic.com> [Sat, 01 Jun 2013 17:10:18 -0500] rev 19259
Added tag 2.6.2 for changeset cceaf7af4c9e
Matt Mackall <mpm@selenic.com> [Sat, 01 Jun 2013 17:09:41 -0500] rev 19258
merge with i18n
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 01 Jun 2013 01:13:36 +0900] rev 19257
i18n-ja: synchronized with 9e5ab8d3154a
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 28 May 2013 10:56:37 -0300] rev 19256
i18n-pt_BR: synchronized with b592fd33233a
Alexander Sauta <demosito@gmail.com> [Tue, 28 May 2013 11:17:54 +0100] rev 19255
i18n-ru: synchronized with 39ea540dc154
Alexander Sauta <demosito@gmail.com> [Mon, 27 May 2013 23:48:34 +0400] rev 19254
i18n-ru: synchronized with ddfdccc9d5a4
Simon King <simon@simonking.org.uk> [Thu, 30 May 2013 22:32:10 +0100] rev 19253
graft: refuse to commit an interrupted graft (issue3667)
Matt Mackall <mpm@selenic.com> [Mon, 27 May 2013 15:24:19 -0500] rev 19252
run-tests: remove some unnecessary globals
Matt Mackall <mpm@selenic.com> [Fri, 24 May 2013 14:30:43 -0500] rev 19251
run-tests: add a log function
Matt Mackall <mpm@selenic.com> [Fri, 24 May 2013 14:30:43 -0500] rev 19250
run-tests: make vlog a proper function
Matt Mackall <mpm@selenic.com> [Fri, 24 May 2013 14:30:43 -0500] rev 19249
run-tests: unify marks and result codes
Matt Mackall <mpm@selenic.com> [Fri, 24 May 2013 14:30:35 -0500] rev 19248
run-tests: change return code of runone
Matt Mackall <mpm@selenic.com> [Fri, 24 May 2013 13:53:56 -0500] rev 19247
run-tests: regroup some initialization checks
Matt Mackall <mpm@selenic.com> [Fri, 24 May 2013 13:52:05 -0500] rev 19246
run-tests: fix a path existence check
Matt Mackall <mpm@selenic.com> [Fri, 24 May 2013 13:51:20 -0500] rev 19245
run-tests: regroup some variable initialization
Matt Mackall <mpm@selenic.com> [Fri, 24 May 2013 13:48:25 -0500] rev 19244
run-tests: regroup nested functions
Matt Mackall <mpm@selenic.com> [Fri, 24 May 2013 13:47:17 -0500] rev 19243
run-tests: regroup temp dir creation
Matt Mackall <mpm@selenic.com> [Fri, 24 May 2013 13:41:20 -0500] rev 19242
run-tests: pull hgrc creation out as function
Matt Mackall <mpm@selenic.com> [Fri, 24 May 2013 13:34:22 -0500] rev 19241
tests: simplify handling of unknown test types
Matt Mackall <mpm@selenic.com> [Fri, 24 May 2013 13:31:44 -0500] rev 19240
run-tests: filter out non-tests from default list
Matt Mackall <mpm@selenic.com> [Fri, 24 May 2013 13:23:19 -0500] rev 19239
run-tests: make a table of test types
Matt Mackall <mpm@selenic.com> [Fri, 24 May 2013 13:02:00 -0500] rev 19238
run-tests: don't need to test shebang any more
Matt Mackall <mpm@selenic.com> [Thu, 23 May 2013 17:53:38 -0500] rev 19237
merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 23 May 2013 17:53:19 -0500] rev 19236
merge with i18n
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 21 May 2013 19:36:23 -0300] rev 19235
i18n-pt_BR: synchronized with 2b4344f23b44
Matt Mackall <mpm@selenic.com> [Thu, 23 May 2013 17:52:21 -0500] rev 19234
merge with stable
Takumi IINO <trot.thunder@gmail.com> [Wed, 15 May 2013 15:44:59 +0900] rev 19233
gendoc: extract print help topics into a dedicated function
This will be used in an upcoming patch.
Matt Mackall <mpm@selenic.com> [Thu, 23 May 2013 17:39:33 -0500] rev 19232
amend: complain more comprehensibly about subrepos
Takumi IINO <trot.thunder@gmail.com> [Wed, 15 May 2013 15:44:55 +0900] rev 19231
gendoc: make commnd __doc__ and extension __doc__ as translatable
Before this patch, commnd __doc__ and extension __doc__ are not translatable.
But other messages, like doc of helptalbe, section headers, are translatable.
This patch makes commnd __doc__ and extension __doc__ translatable.
Durham Goode <durham@fb.com> [Wed, 22 May 2013 17:38:24 -0700] rev 19230
blackbox: fix blackbox causing exceptions in tests
In the tests some scripts call reposetup with the base ui instead of the
one the extensions have modified. This causes an exception in
blackbox.reposetup since it expected a method to be there. So I just
check for it first. This only happened when the blackbox extension
was enabled during tests.
Durham Goode <durham@fb.com> [Wed, 22 May 2013 17:31:47 -0700] rev 19229
blackbox: fix recording exit codes (issue3938)
Previously the blackbox wrapped runcommand, but this failed to see the error
codes that were created if an exception occurred. I moved that logging to now
wrap _runcatch, so it can observe and log the actual error code (such as when
a user ctrl+c's during a command).
Updated the tests as well. Tested the change by running all the tests with the
blackbox extension enabled and verifying nothing broke (aside from things that
printed what extensions were enabeld).
The progress tests are affected by calls to time.time() so they needed to be
updated to pass.
Sean Farley <sean.michael.farley@gmail.com> [Thu, 18 Apr 2013 15:48:22 -0500] rev 19228
templater: add indentation arguments to the fill function
Sean Farley <sean.michael.farley@gmail.com> [Wed, 10 Apr 2013 18:56:38 -0500] rev 19227
templater: move templatefilters.func into the same place as the other funcs
Matt Mackall <mpm@selenic.com> [Wed, 22 May 2013 17:31:43 -0500] rev 19226
ui: merge prompt text components into a singe string
This will help avoid problems with partial or mismatched translation
of the components.
Matt Mackall <mpm@selenic.com> [Tue, 21 May 2013 15:32:15 -0500] rev 19225
merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 21 May 2013 15:31:56 -0500] rev 19224
merge with i18n
Alexander Sauta <demosito@gmail.com> [Tue, 21 May 2013 14:10:55 +0100] rev 19223
i18n-ru: merge with Nikolaj Sjujskij fixes
Nikolaj Sjujskij <sterkrig@myopera.com> [Tue, 14 May 2013 23:09:40 +0400] rev 19222
i18n-ru: update po-file for further translation (from ddc7a6be2021)
Nikolaj Sjujskij <sterkrig@myopera.com> [Tue, 14 May 2013 23:04:23 +0400] rev 19221
merge in i18n-ru
Nikolaj Sjujskij <sterkrig@myopera.com> [Sun, 12 May 2013 15:35:53 +0400] rev 19220
i18n-ru: fix patchbomb confirmation prompt (issue3929)
Recognize y(es) and (n)o as valid input, for user not to have to switch
keyboard layout twice (`hg email -o ...` is Latin, whereas д(а)/н(ет) are not).
Use capital Y/N letters in prompt, otherwise y could be mistaken for у, and n
- for п.
Nikolaj Sjujskij <sterkrig@myopera.com> [Mon, 08 Apr 2013 17:16:11 +0400] rev 19219
i18n-ru: fix "deleted files" in `status` description
Matt Mackall <mpm@selenic.com> [Tue, 21 May 2013 15:29:53 -0500] rev 19218
tests: backport some glob fixups
Matt Mackall <mpm@selenic.com> [Tue, 21 May 2013 15:23:50 -0500] rev 19217
help: fix role/option confusion in RST
RST's role syntax means something different sometimes when it's in
some places that are poorly documented and vary betwen minirst and
docutils. Line wrapping will thus sometimes break everything.
Matt Mackall <mpm@selenic.com> [Fri, 17 May 2013 17:22:08 -0500] rev 19216
merge with stable
Bryan O'Sullivan <bryano@fb.com> [Tue, 14 May 2013 11:23:18 -0700] rev 19215
summary: add a histedit hook
Bryan O'Sullivan <bryano@fb.com> [Tue, 14 May 2013 11:23:17 -0700] rev 19214
summary: indicate if a rebase is underway
Bryan O'Sullivan <bryano@fb.com> [Tue, 14 May 2013 11:23:17 -0700] rev 19213
summary: add tests for some extensions we plan to modify
Bryan O'Sullivan <bryano@fb.com> [Tue, 14 May 2013 11:23:16 -0700] rev 19212
mq: switch to new summary hook mechanism
Bryan O'Sullivan <bryano@fb.com> [Tue, 14 May 2013 11:23:15 -0700] rev 19211
summary: augment output with info from extensions
Matt Mackall <mpm@selenic.com> [Fri, 17 May 2013 14:31:06 -0500] rev 19210
dirstate: don't overnormalize for ui.slash
This should fix the issue exposed by debugpathcomplete on the buildbot.
Matt Mackall <mpm@selenic.com> [Thu, 16 May 2013 16:20:10 -0500] rev 19209
merge with stable
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Fri, 10 May 2013 23:48:03 +0200] rev 19208
bundle-ng: move progress handling out of the linkrev callback
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Fri, 10 May 2013 23:14:54 +0200] rev 19207
bundle-ng: simplify lookup and state handling
Use simpler callbacks to collect linkrev nodes.
Sune Foldager <cryo@cyanite.org> [Fri, 10 May 2013 22:57:54 +0200] rev 19206
bundle-ng: simplify bundle10.generate
Remove complex local sub-functions mutating function-global variables. Simplify
counting used for progress output.
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Fri, 10 May 2013 22:47:12 +0200] rev 19205
shrink: delete extension preventing further refactoring (BC)
Reordering can be done by setting bundle.reorder to true and doing a
clone --pull.
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Sun, 10 Feb 2013 16:03:20 +0100] rev 19204
bundle-ng: move bundle generation to changegroup.py
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Fri, 10 May 2013 22:20:32 +0200] rev 19203
bundle-ng: unify _changegroup and _changegroupsubset
Refactor the two changegroup generation interface to share as much code as
possible.
Sune Foldager <cryo@cyanite.org> [Fri, 10 May 2013 21:35:49 +0200] rev 19202
bundle-ng: move gengroup into bundler, pass repo object to bundler
No semantic changes made.
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Sat, 09 Feb 2013 23:42:03 +0100] rev 19201
bundle-ng: add bundlecaps argument to getbundle() command
Sune Foldager <cryo@cyanite.org> [Fri, 10 May 2013 21:03:01 +0200] rev 19200
bundle-ng: move group into the bundler
No additional semantic changes made.
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Fri, 10 May 2013 20:37:41 +0200] rev 19199
bundle-ng: move bundler creation up in the stack
Create a simple start() method to pass the lookup function until bundler
becomes smarter and gets a repo object.
Since we now create the bundler for the whole lifetime, we need to pass it
down to revlog methods.
Kevin Bullock <kbullock@ringworld.org> [Wed, 15 May 2013 21:36:19 -0500] rev 19198
i18n: fix untranslated prompts with translated responses (issue3936)
Mike Williams <mrw@eandem.co.uk> [Wed, 15 May 2013 22:19:12 +0100] rev 19197
help: stop documentation markup appearing in generated help
Markup for links to mercurial commands is appearing in the help
documentation.
This patch fixes the markup so mercurial command reference links are
correctly generated in the help documentation.
Matt Mackall <mpm@selenic.com> [Tue, 14 May 2013 18:52:52 -0500] rev 19196
merge with stable
Bryan O'Sullivan <bryano@fb.com> [Tue, 14 May 2013 15:16:44 -0700] rev 19195
ui: use util.sizetoint in configbytes
Bryan O'Sullivan <bryano@fb.com> [Tue, 14 May 2013 15:16:43 -0700] rev 19194
util: migrate fileset._sizetoint to util.sizetoint
The size counting code introduced in 2c4cd1c42365 duplicated existing
(but unknown-to-me) code in fileset, so prepare to eliminate the
duplication.
Matt Mackall <mpm@selenic.com> [Tue, 14 May 2013 18:43:53 -0500] rev 19193
Added signature for changeset ddc7a6be2021
Matt Mackall <mpm@selenic.com> [Tue, 14 May 2013 18:43:43 -0500] rev 19192
Added tag 2.6.1 for changeset ddc7a6be2021
Siddharth Agarwal <sid0@fb.com> [Tue, 23 Apr 2013 14:16:33 -0700] rev 19191
dirstate.status: avoid full walks when possible
Siddharth Agarwal <sid0@fb.com> [Mon, 22 Apr 2013 17:11:18 -0700] rev 19190
dirstate.walk: add a flag to let extensions avoid full walks
Consider a hypothetical extension that implements walk in a more efficient
manner and skips some known-clean files. However, that can only be done under
some situations, such as when clean files are not being asked for and a
match.traversedir callback is not set. The full flag lets walk tell these two
cases apart.
Matt Mackall <mpm@selenic.com> [Mon, 13 May 2013 17:47:04 -0500] rev 19189
merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 13 May 2013 17:44:35 -0500] rev 19188
i18n: fix partially-translated prompts (issue3928) (issue3929)
Matt Mackall <mpm@selenic.com> [Mon, 13 May 2013 17:36:06 -0500] rev 19187
merge with i18n
Wagner Bruna <wbruna@softwareexpress.com.br> [Fri, 10 May 2013 14:39:09 -0300] rev 19186
i18n-pt_BR: synchronized with 27013ace80eb
Matt Mackall <mpm@selenic.com> [Fri, 10 May 2013 11:23:50 -0500] rev 19185
pathencode: grow buffers to increase safety margin
Kevin Bullock <kbullock@ringworld.org> [Mon, 13 May 2013 13:02:01 -0500] rev 19184
merge with stable
Mike Williams <mrw@eandem.co.uk> [Sun, 12 May 2013 10:09:34 +0100] rev 19183
help/config: note 64-bit Windows registry key used with 32-bit Python
Before this patch the only place that documented the use of a different
registry key was on the wiki page for installing on Windows from
sources, while most users will use a pre-packaged installer and the
supplied help files.
This patch documents in the supplied help files that an alternate
registry key is used for the installation/system configuration file when
using 32-bit Python on a 64-bit Windows.
Augie Fackler <raf@durin42.com> [Sat, 11 May 2013 20:25:15 -0500] rev 19182
httpclient: upgrade to fe8c09e4db64 of httpplus
Szymon Wroblewski <bluex0@gmail.com> [Wed, 08 May 2013 20:55:56 +0200] rev 19181
splicemap: support paths with spaces in splicemap (issue3844)
Shlex module was used to split line as suggested. Split operates in POSIX mode.
Yuya Nishihara <yuya@tcha.org> [Tue, 07 May 2013 23:49:03 +0900] rev 19180
branch: strip whitespace before testing known branch name
Because dirstate._branch() strips leading/trailing spaces from .hg/branch,
"hg branch ' foo '" should abort if branch "foo" exists in another head.
tag command had a similar bug and fixed by 3d0a9c8d7184.
Matt Mackall <mpm@selenic.com> [Thu, 09 May 2013 18:34:04 -0500] rev 19179
merge with stable
Durham Goode <durham@fb.com> [Wed, 01 May 2013 10:44:21 -0700] rev 19178
copies: refactor checkcopies() into a top level method
This moves checkcopies() out of mergecopies() and makes it a top level
function in the copies module. This allows extensions to override it. For
example, I'm developing a filelog replacement that doesn't have rev numbers
so all the rev number dependent implementation here needs to be replaced
by the extension.
No logic is changed in this commit.
Durham Goode <durham@fb.com> [Wed, 08 May 2013 14:22:00 -0700] rev 19177
store: move top file walk to a separate function
Some extensions find it useful to be able to walk the non-data files in the
repo, so I'm moving that part of the walk to a separate function.
In particular, this allows an extension to interact with only the non-filelog
store data (for instance, when cloning everything but filelogs).
Durham Goode <durham@fb.com> [Wed, 01 May 2013 10:38:41 -0700] rev 19176
clone: move file stream walk to a separate function
Moves the file walk out of the stream method so that extensions can override it.
This allows an extension to decide what files should be streamed, and in
particular allows a stream without filelogs.
Siddharth Agarwal <sid0@fb.com> [Tue, 07 May 2013 14:20:34 -0700] rev 19175
dirstate._walkexplicit: inline dirsnotfound.append
Siddharth Agarwal <sid0@fb.com> [Tue, 07 May 2013 14:19:04 -0700] rev 19174
dirstate._walkexplicit: rename work to dirsfound
Now that this code is factored out, work is too specific a name.
Siddharth Agarwal <sid0@fb.com> [Tue, 07 May 2013 10:02:55 -0700] rev 19173
dirstate.walk: refactor explicit walk into separate function
This enables this code to be reused by extensions that implement the other,
more time-consuming bits of walk in different ways.
Siddharth Agarwal <sid0@fb.com> [Tue, 07 May 2013 09:31:00 -0700] rev 19172
dirstate.walk: pull skipstep3 out of the explicit walk code
This is a move towards factoring out this code into a separate function.
Siddharth Agarwal <sid0@fb.com> [Tue, 07 May 2013 09:47:10 -0700] rev 19171
dirstate.walk: move dirignore filter out of explicit walk code
This is a move towards factoring this code out into a separate function.
Siddharth Agarwal <sid0@fb.com> [Tue, 07 May 2013 09:29:43 -0700] rev 19170
dirstate.walk: maintain a list of dirs not found
Upcoming patches will factor out the walk over explicit files done in step 1.
This helps us get there.
Alexander Plavin <me@aplavin.ru> [Fri, 10 May 2013 00:26:39 +0400] rev 19169
highlight: fix page layout with empty first and last lines
Repeated newlines were stripped by pygmentize, now give the option not to do so.
Matt Mackall <mpm@selenic.com> [Thu, 09 May 2013 15:22:54 -0500] rev 19168
check-code: add another Windows pathsep rule
Matt Mackall <mpm@selenic.com> [Thu, 09 May 2013 15:22:21 -0500] rev 19167
merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 09 May 2013 15:17:29 -0500] rev 19166
tests: quiet strip to avoid commandserver pathsep issue
Matt Mackall <mpm@selenic.com> [Thu, 09 May 2013 15:09:36 -0500] rev 19165
tests: fix another Windows path issue
Matt Mackall <mpm@selenic.com> [Thu, 09 May 2013 15:01:11 -0500] rev 19164
tests: fix unionrepo path issue on msys (issue3927)
Matt Mackall <mpm@selenic.com> [Thu, 09 May 2013 10:51:03 -0500] rev 19163
merge with stable
Takumi IINO <trot.thunder@gmail.com> [Thu, 09 May 2013 11:37:20 +0900] rev 19162
blackbox: fix literal block syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 07 May 2013 05:04:11 +0900] rev 19161
largefiles: check unknown files with case awareness of the filesystem
Before this patch, largefiles extension checks unknown files in the
working directory always case sensitively.
This causes failure in updating from the revision X consisting of
'.hglf/A' (and "A" implicitly) to the revision Y consisting of 'a'
(not ".hglf/A") on case insensitive filesystem, because "A" in the
working directory is treated as colliding against and different from
'a' on the revision Y.
This patch uses "repo.dirstate.normalize()" to check unknown files
with case awareness of the filesystem.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 07 May 2013 05:04:11 +0900] rev 19160
largefiles: check existence of the file with case awareness of the filesystem
Before this patch, largefiles extension always unlinks largefiles
untracked on the target context in merging/updating after updating
working directory.
For example, it is assumed that the revision X consists of ".hglf/A"
(and "A" implicitly) and revision Y consists of "a" (not ".hglf/A").
In the case of updating from X to Y, largefiles extension tries to
unlink "A" after updating "a" in working directory. This causes
unexpected unlinking "a" on the case insensitive filesystem.
This patch checks existence of the file in the working context with
case awareness of the filesystem to prevent from such unexpected
unlinking.
"lfcommands._updatelfile()" also unlinks target file in the case
"largefile is tracked in the target context, but fails to be fetched".
This patch doesn't apply "repo.dirstate.normalize()" in this case,
because it should be already ensured in the manifest merging that
there is no normal file colliding against any largefiles.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 07 May 2013 05:04:11 +0900] rev 19159
windows: check target type before actual unlinking to follow POSIX semantics
Creation and writing into target file via vfs (a.k.a opener) is done
after "unlink()" target file, if it exists.
For example, it is assumed that the revision X consists of file 'A',
and the revision Y consists of file 'A/B'. Merging revision X into Y
tries to "unlink()" on directory 'A' of 'A/B', before creation of file
'A'.
On POSIX environment, directories should be removed by "rmdir(2)", and
"unlink(2)" on directories fails. "unlink()" of Mercurial (and Python)
uses "unlink(2)" directly, so unlinking in the merge case above would
fail.
In the other hand, on Windows environment, "unlink()" of Mercurial
tries to rename before actual unlinking, to follow POSIX semantics:
already opened file can be unlinked safely.
This causes unexpected success in unlinking in the merge case above,
even though directory 'A' is renamed to another. This confuses users.
This patch checks whether target is directory or not before renaming,
and raises IOError(errno.EPERM) if so, to follow POSIX semantics.
Augie Fackler <raf@durin42.com> [Thu, 09 May 2013 09:51:42 -0400] rev 19158
Merge with stable.
Siddharth Agarwal <sid0@fb.com> [Wed, 08 May 2013 14:11:01 -0700] rev 19157
manifestmerge: local unknown, remote created: don't traverse symlinks
To figure out what to do with locally unknown files, Mercurial attempts to read
them if they exist. When an attempt is made to read a file that exists but
traverses a symlink, Mercurial aborts.
With this patch, we first ensure that the file doesn't traverse a symlink
before opening it. This is fine because a file being "remote created" means the
symlink doesn't exist remotely, which means it will be deleted in the apply
phase.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 09 May 2013 21:09:58 +0900] rev 19156
subrepo: open files in 'rb' mode to read exact data in (issue3926)
Before this patch, "subrepo._calcfilehash()" opens files by "open()"
without any mode specification. This implies "text mode" on Windows.
When target file contains '\x00' byte, "read()" in "text mode" reads
file contents in without data after '\x00'.
This causes invalid SHA1 hash calculation in "subrepo._calcfilehash()".
This patch opens files in 'rb' mode to read exact data in.
Siddharth Agarwal <sid0@fb.com> [Thu, 04 Apr 2013 13:45:21 -0700] rev 19155
patch: use scmutil.marktouched instead of scmutil.addremove
addremove required paths relative to the cwd, which meant a lot of extra code
that transformed paths into relative ones. That code is now gone as well.
Siddharth Agarwal <sid0@fb.com> [Thu, 04 Apr 2013 13:38:28 -0700] rev 19154
scmutil: add a function to mark that files have been operated on
Several places use scmutil.addremove as a means to declare that certain files
have been operated on. This is ugly because:
- addremove takes patterns relative to the cwd, not paths relative to the root,
which means extra contortions for callers.
- addremove doesn't make clear what happens to files whose status hasn't
changed.
This new method accepts filenames relative to the repo root, and has a much
clearer contract. It also allows future modifications that do more with files
whose status hasn't changed.
Siddharth Agarwal <sid0@fb.com> [Wed, 03 Apr 2013 15:53:59 -0700] rev 19153
scmutil.addremove: factor out code to mark added/removed/renames
An upcoming patch will reuse this code in another function.
Siddharth Agarwal <sid0@fb.com> [Wed, 03 Apr 2013 16:32:41 -0700] rev 19152
scmutil.addremove: factor out code to find renames
This code will be used in a different context in upcoming patches.
Siddharth Agarwal <sid0@fb.com> [Wed, 03 Apr 2013 15:32:15 -0700] rev 19151
scmutil.addremove: rename local 'copies' to 'renames'
An upcoming patch will refactor some code out into a method called
_findrenames. Having a line saying "copies = _findrenames..." is confusing.
Besides, 'renames' is a more precise name for this local anyway.
Siddharth Agarwal <sid0@fb.com> [Tue, 02 Apr 2013 17:19:36 -0700] rev 19150
scmutil.addremove: factor out dirstate walk into another function
Upcoming patches will reuse and expand on this function for other purposes.
Durham Goode <durham@fb.com> [Wed, 01 May 2013 10:42:03 -0700] rev 19149
filecontext: use 'is not None' to check for filelog existence
Previously we used 'if filelog:' to check if the filelog existed. If the
instance did exist, this pattern then calls len() on the filelog to see
if it is empty. I'm developing a filelog replacement that doesn't have
len() implemented, so it's better to do an explicit 'is not None' check
here instead.
Also change _changeid() to return the _changeid attribute if it has it.
Previously it would try to obtain it from the _changectx(), and if that
did not exist it would construct the _changectx() using the linkrev. In
the extension I'm working on, filectx's don't have easy access to linkrevs
so avoiding this when possible is better.
Durham Goode <durham@fb.com> [Wed, 01 May 2013 10:39:37 -0700] rev 19148
filelog: use super() for calling base functions
filelog had some hardcoded revlog.revlog.foo() calls. This changes it to
use super() instead so that extensions can replace the filelog base class.
Kevin Bullock <kbullock@ringworld.org> [Thu, 02 May 2013 21:28:18 -0500] rev 19147
bookmarks: allow bookmark command to take multiple arguments
This change allows setting or deleting multiple bookmarks at once. If more than
one is being set and --inactive is not given, the first one is made active.
Matt Mackall <mpm@selenic.com> [Sun, 05 May 2013 18:51:34 -0500] rev 19146
merge with stable
Blesso hrvoje1212@gmail.com [Fri, 03 May 2013 19:34:59 +0200] rev 19145
convert: fix bug of wrong CVS path parsing without port number (issue3678)
The cvsps.py:getrepopath suffers from a string parsing bug (it returns
"user@server/path/to/repository" if the CVSROOT is given like this:
":pserver:user@server/path/to/repository" ), which gives returnes the wrong
value becouse cvsps.py fails to strip the prefix from filenames.
With this patch for the same input we get the correct repo path that is:
"/path/to/repository"
Siddharth Agarwal <sid0@fb.com> [Fri, 03 May 2013 15:36:18 -0700] rev 19144
match: add comments to explain explicitdir and traversedir
Siddharth Agarwal <sid0@fb.com> [Fri, 03 May 2013 14:41:58 -0700] rev 19143
match: make explicitdir and traversedir None by default
With this, extensions can easily tell when traversedir and/or explicitdir don't
need to be called.
Siddharth Agarwal <sid0@fb.com> [Fri, 03 May 2013 14:39:28 -0700] rev 19142
dirstate.walk: cache match.explicitdir and traversedir locally
Siddharth Agarwal <sid0@fb.com> [Sun, 28 Apr 2013 21:29:32 -0700] rev 19141
match: drop dir callback
dir has been subsumed by explicitdir and traversedir.
Siddharth Agarwal <sid0@fb.com> [Sun, 28 Apr 2013 21:28:31 -0700] rev 19140
inotify: call match.explicitdir
inotify only returns explicit directories matched.
Siddharth Agarwal <sid0@fb.com> [Sun, 28 Apr 2013 21:27:57 -0700] rev 19139
purge: hook into match.explicitdir and traversedir
Siddharth Agarwal <sid0@fb.com> [Sun, 28 Apr 2013 21:27:21 -0700] rev 19138
localrepo.commit: hook into match.explicitdir
Siddharth Agarwal <sid0@fb.com> [Sun, 28 Apr 2013 21:25:41 -0700] rev 19137
dirstate.walk: call match.explicitdir or traversedir as appropriate
Siddharth Agarwal <sid0@fb.com> [Sun, 28 Apr 2013 21:24:09 -0700] rev 19136
match: introduce explicitdir and traversedir
match.dir is currently called in two different places:
(1) noting when a directory specified explicitly is visited.
(2) noting when a directory is visited during a recursive walk.
purge cares about both, but commit only cares about the first.
Upcoming patches will split the two cases into two different callbacks. Why
bother? Consider a hypothetical extension that can provide more efficient walk
results, via e.g. watching the filesystem. That extension will need to
fall back to a full recursive walk if a callback is set for (2), but not if a
callback is only set for (1).
Matt Mackall <mpm@selenic.com> [Sat, 04 May 2013 14:52:51 -0500] rev 19135
merge with stable
Siddharth Agarwal <sid0@fb.com> [Fri, 03 May 2013 15:18:21 -0700] rev 19134
run-tests: when running in parallel, delete tmpdirs immediately
This is especially important if extensions that use inotify are enabled,
because it's very easy to hit the inotify max_user_instances limit without
this.
Brendan Cully <brendan@kublai.com> [Fri, 03 May 2013 14:19:30 -0700] rev 19133
tests: check path separator in moves
Brendan Cully <brendan@kublai.com> [Fri, 03 May 2013 13:59:58 -0700] rev 19132
tests: fix test-commandserver phase . output for windows
Matt Mackall <mpm@selenic.com> [Sat, 04 May 2013 14:51:21 -0500] rev 19131
hfs+: rewrite percent-escaper (issue3918)
The original code was a bit too clever and got confused by some cp949
Korean text. This rewrite bytes the bullet and manually decodes UTF-8
sequences. Adds some doctests.
Matt Mackall <mpm@selenic.com> [Fri, 03 May 2013 15:34:18 -0500] rev 19130
merge with stable
Bryan O'Sullivan <bryano@fb.com> [Fri, 03 May 2013 12:40:17 -0700] rev 19129
revert: ensure that copies and renames are honored (issue3920)
Previously, we restored the states of files, but not the additional
information the dirstate uses to track copies and renames.
Durham Goode <durham@fb.com> [Fri, 03 May 2013 09:44:50 -0700] rev 19128
hgignore: fix regression with hgignore directory matches (issue3921)
If a directory matched a regex in hgignore but the files inside the directory
did not match the regex, they would appear as deleted in hg status. This
change fixes them to appear normally in hg status.
Removing the ignore(nf) conditional here is ok because it just means we might
stat more files than we had before. My testing on a large repo shows this
causes no performance regression since the only additional files being stat'd
are the ones that are missing (i.e. status=!), which are generally rare.
Augie Fackler <raf@durin42.com> [Thu, 02 May 2013 20:41:22 -0500] rev 19127
templater: fix output instability from gsoc patches
Iulian Stana <julian.stana@gmail.com> [Thu, 18 Apr 2013 22:56:57 +0300] rev 19126
log-style: add a log style that is default+phase (issue3436)
There is a new style called phases style.
Usage::
hg log --style phases
Why do we need this new style - in what way is it different from or similar to
existing styles?
The new style is default + phases information. With the new phases feature the
users exhibited their desire for a new style that could help them.
Why do this need a new style - couldn't it be folded into an existing style?
The default style and the new one are about the same, the difference is the
phases tag. The users find both styles useful, this means that the both styles
must exist.
Iulian Stana <julian.stana@gmail.com> [Thu, 02 May 2013 20:23:14 -0500] rev 19125
templater: show the style list when I try to use a wrong one
When someone try to use a wrong style, a list with sugestions will appear.
In the test-log.t file it's a test that prove this thing.
Siddharth Agarwal <sid0@fb.com> [Sat, 27 Apr 2013 23:49:34 -0700] rev 19124
test-nested-repo.t: touch another file inside nested repo
This helped uncover a bug in a patchset I've been writing.
Matt Mackall <mpm@selenic.com> [Thu, 02 May 2013 15:21:47 -0500] rev 19123
check-code: add more path sep glob checks
Ben Goswami <bengoswami@fb.com> [Thu, 25 Apr 2013 18:01:00 -0700] rev 19122
splicemap: improve error handling when source is subversion (issue2084)
Implemented error handling on splicemap file when source is
subversion (This checks are similar to when source is hg or git).
The revision string is expected to be of svn:<uuid><path>@<number>
format.
the test case has been enhanced to check this format.
Ben Goswami <bengoswami@fb.com> [Thu, 25 Apr 2013 16:02:58 -0700] rev 19121
splicemap: improve error handling when source is git (issue2084)
Implemented similar error handling that is done for hg in an earlier revision.
These are:
a. add checking for splicemap file format
b. add checking for each revision string formats
Ben Goswami <bengoswami@fb.com> [Thu, 25 Apr 2013 11:50:26 -0700] rev 19120
splicemap: improve error handling when source is hg (issue2084)
1. Introduced 2 levels of error handling for splicemap files
a. Check the splicemap file for rules which are same across different
types of source repos. This is done through enhancing parsesplicemap
function
b. Check revision string formats. Each repo may have their own format.
This is done usign checkrevformat function
c. Implemented the above two for hg
Ben Goswami <bengoswami@fb.com> [Wed, 24 Apr 2013 18:26:37 -0700] rev 19119
splicemap: move parsesplicemap to convcmd.py (issue2084)
parsesplicemap is only referenced from convcmd.py
This move is necessary to enable other changes related to
this issue
Matt Mackall <mpm@selenic.com> [Thu, 02 May 2013 14:11:34 -0500] rev 19118
merge with stable
Brendan Cully <brendan@kublai.com> [Thu, 02 May 2013 11:26:43 -0700] rev 19117
tests: sprinkle globs over largefiles/subrepo tests for Windows
Brendan Cully <brendan@kublai.com> [Thu, 02 May 2013 11:17:18 -0700] rev 19116
tests: skip permissions tests in test-phases-exchange when fs lacks permissions
Matt Mackall <mpm@selenic.com> [Thu, 02 May 2013 12:15:41 -0500] rev 19115
merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 01 May 2013 17:49:53 -0500] rev 19114
Added signature for changeset 23f785b38af3
Matt Mackall <mpm@selenic.com> [Wed, 01 May 2013 17:49:48 -0500] rev 19113
Added tag 2.6 for changeset 23f785b38af3
Sean Farley <sean.michael.farley@gmail.com> [Wed, 01 May 2013 15:24:21 -0500] rev 19112
bookmarks: fix bug that activated a bookmark even with -r passed
If the current revision was the target revision of -r, then the bookmark would
be active. Test cases have been updated accordingly.
Sean Farley <sean.michael.farley@gmail.com> [Tue, 30 Apr 2013 21:12:49 -0500] rev 19111
bookmarks: resolve divergent bookmark when moving across a branch
This patch resolves a single divergent bookmark if a divergent bookmark exists
in the target revision and it current bookmark is not an ancestor of the target
revision, else it would already be handled by the previous patch in this
series.
Test coverage is added.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 01 May 2013 15:34:45 -0500] rev 19110
bookmarks: resolve divergent bookmarks when moving active bookmark forward
This patch resolves divergent bookmarks between the current active bookmark
MARK and the new destination. This situation can arise when pulling new
changesets, abandoning your current changesets actively bookmarked with MARK
via strip, and then doing a bare update. The non-divergent but active bookmark
MARK is then moved to a common ancestor of the new changesets and the abandoned
changesets.
Test coverage is added.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 01 May 2013 15:31:39 -0500] rev 19109
bookmarks: resolve divergent bookmarks when fowarding bookmark to descendant
This patch is a follow-up to 56dd55da2f7d that resolves divergent bookmarks
between the to-be-forwarded bookmark MARK and the new descendant. This
situation can happen when pulling new changesets, updating to the divergent
bookmark, abandoning the previous changesets with strip, and then moving MARK
to MARK@N.
Test coverage is added.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 30 Apr 2013 09:02:02 +0900] rev 19108
tags: update tag type only if tag node is updated (issue3911)
Before this patch, tag type information is always updated, even if tag
previously read in has higher priority than one newly read in.
This causes that the tag type is displayed as "local", even if global
tag overwrites existing local one successfully.
This patch updates tag type only if tag node is updated.
This patch tests overwriting local tags below:
- visible one (normal case)
- already removed one (recorded as null)
Mads Kiilerich <madski@unity3d.com> [Tue, 30 Apr 2013 01:04:35 +0200] rev 19107
match: fix root calculation for combining regexps with simple paths
The fall-back root for walking is the repo root, not no root.
The "roots" do however also end up in m.files() which is used in various ways,
for instance to indicate whether matches are exact. The change could thus have
other impacts.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 30 Apr 2013 05:01:32 +0900] rev 19106
icasefs: enhance test to prevent regression by changes in the future
This patch adds steps to test case-folding collision detection on the
revision tree built up in the order different from the one reproducing
issue3452.
This may prevent regression by changes around "copy detection" and/or
"case-folding collision detection" logic in the future.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 30 Apr 2013 05:01:32 +0900] rev 19105
icasefs: rewrite case-folding collision detection (issue3452)
Before this patch, case-folding collision detection uses
"copies.pathcopies()" before "manifestmerge()", and is not aware of
renaming in some cases.
For example, in the case of issue3452, "copies.pathcopies()" can't
detect renaming, if the file is renamed at the revision before common
ancestor of merging. So, "hg merge" is aborted unexpectedly on case
insensitive filesystem.
This patch fully rewrites case-folding collision detection, and
relocate it into "manifestmerge()".
New implementation uses list of actions held in "actions" and
"prompts" to build provisional merged manifest up.
Provisional merged manifest should be correct, if actions required to
build merge result up in working directory are listed up in "actions"
and "prompts" correctly.
This patch checks case-folding collision still before prompting for
merge, to avoid aborting after some interactions with users. So, this
assumes that user would choose not "deleted" but "changed".
This patch also changes existing abort message, because sorting before
collision detection changes order of checked files.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 30 Apr 2013 05:01:32 +0900] rev 19104
icasefs: refactor "test-casecollision-merge.t" to reuse in succeeding fixes
This patch refactors "test-casecollision-merge.t" to increase
reusability in succeeding patches.
It is confirmed that changed test also can detect issue3370.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 30 Apr 2013 05:00:48 +0900] rev 19103
icasefs: ignore removed files at building "dirstate._foldmap" up on icasefs
Before this patch, all files in dirstate are used to build "_foldmap"
up on case insensitive filesystem regardless of their statuses.
For example, when dirstate contains both removed file 'a' and added
file 'A', "_foldmap" may be updated finally by removed file 'a'. This
causes unexpected status information for added file 'A' at "hg status"
invocation.
This patch ignores removed files at building "_foldmap" up on case
insensitive filessytem.
This patch doesn't add any test, because this issue is difficult to
reproduce intentionally: it depends on iteration order of "dirstate._map".
Wagner Bruna <wbruna@yahoo.com> [Wed, 01 May 2013 11:20:16 -0300] rev 19102
i18n-pt_BR: synchronized with 3f5e75c22585
Wagner Bruna <wbruna@yahoo.com> [Wed, 01 May 2013 11:18:49 -0300] rev 19101
merge with i18n
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 01 May 2013 00:38:43 +0900] rev 19100
i18n-ja: synchronized with f01a351db791
Bryan O'Sullivan <bryano@fb.com> [Mon, 29 Apr 2013 14:14:42 -0700] rev 19099
dispatch: add support for --option=value to _earlygetopt
This fixes a very confusing error message:
$ hg --config=pager.enabled=off st
abort: option --config may not be abbreviated!
Bryan O'Sullivan <bryano@fb.com> [Mon, 29 Apr 2013 14:14:41 -0700] rev 19098
dispatch: add doctests for _earlygetopt
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 30 Apr 2013 21:19:56 +0200] rev 19097
push: make locking of source optional (issue3684)
Having the permission to lock the source repo on push is now optional. When the
repo cannot be locked, phase are not changed locally. A status message is issue
when some actual phase movement are skipped:
cannot lock source repo, skipping local public phase update
A debug message with the exact reason of the locking failure is issued in all
case.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 30 Apr 2013 10:51:25 +0200] rev 19096
push: factorise phase movement in a simple closure
Having all phases movement centralised will help to handle special case when the
local repo can not be locked as describe in issue 3684.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 29 Apr 2013 15:58:15 +0900] rev 19095
merge: increase safety of parallel updating/removing on icasefs
"merge.applyupdates()" sorts "actions" in removal first order, and
"workeractions" derived from it should be also sorted.
If each actions in "workeractions" are executed in serial, this
sorting ensures that merging/updating process is collision free,
because updating the file in target context is always executed after
removing the existing file which causes case-folding collision against
the former.
In the other hand, if each actions are executed in parallel, updating
on a worker process may be executed before removing on another worker
process, because "worker.partition()" partitions list of actions
regardless of type of each actions.
This patch divides "workeractions" into removing and updating, and
executes the former first.
This patch still scans "actions"/"workeractions" some times for ease
of patch review, even though large list may cost much in this way.
(total cost should be as same as before)
This also changes some tests, because dividing "workeractions" affects
progress indication.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 30 Apr 2013 13:53:49 +0200] rev 19094
hgweb: handle filtered "0" rev in navigation
Before this changeset, navigation generation crashed if revision "0" was
filtered. We introduce a `_first` methods on revision navigation that return the
lowest unfiltered element and use it in two place were the "0" changeset was
explicitly referenced.
Test case are introduced.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 30 Apr 2013 15:11:12 +0200] rev 19093
hgweb: fix empty navigation detection
For some obscure reason, changelog.node(0) returns nullid if changelog is empty.
this break empty navigation detection. We fix this code by using the length of
the changelog.
Using the length have some issue with revision filtering but this is a small
step in the right direction. Proper fix comes in later changeset.
Jim Hague <jim.hague@acm.org> [Tue, 30 Apr 2013 14:56:33 +0100] rev 19092
tests: AIX can't handle negative date in test-dirstate.t
test-dirstate.t fails on AIX in the absurd date test. AIX touch errors on
any date prior to 1970. AIX mktime() gives an error on such dates, so the
problem is deeper than touch and attempts to work around touch in Python
failed.
Give up. Add an AIX test to hghave and skip the absurd date test on AIX.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 26 Apr 2013 01:12:03 +0900] rev 19091
win32: use explicit path to "python.exe" only if it exists
Before this patch, "hg.bat" for Windows environment always uses
"%~dp0..\python" as explicit path to "python.exe".
This path may not be valid in some cases.
For example, on the environment using "virtualenv" python package,
both "python.exe" and "hg.bat" are placed in the same directory. In
this case, "python.exe" should be found on PATH, because virtualenv
activation script puts "python.exe" on the PATH.
This patch uses explicit path to "python.exe" only if it exists, and
expects that "python.exe" can be found on PATH otherwise.
Siddharth Agarwal <sid0@fb.com> [Fri, 26 Apr 2013 22:07:25 -0700] rev 19090
test-mq-strip.t: add a test for strip --keep with clean working dir
This helped uncover a bug in a patchset I've been writing.
Mads Kiilerich <madski@unity3d.com> [Sat, 27 Apr 2013 00:41:42 +0200] rev 19089
largefiles: use repo.wwrite for writing standins (issue3909)
Mads Kiilerich <madski@unity3d.com> [Fri, 26 Apr 2013 19:04:01 +0200] rev 19088
largefiles: drop repo wrapping detection
After 257afe5489d4 I see:
$ hg id -q
largefiles: repo method 'commit' appears to have already been wrapped by another extension: largefiles may behave incorrectly
largefiles: repo method 'push' appears to have already been wrapped by another extension: largefiles may behave incorrectly
be207d9b7e4b
The warning is bad:
* The message gives no hint what the problem is and how it can be resolved.
The message is useless.
* Largefiles do have its share of problems, but I don't think I ever have seen
a problem where this warning would have helped. The 'may' in the warning
seems like an exaggeration of the risk. Having largefiles enabled in
combination with for instance mq, hggit and hgsubversion causes a warning
(depending on the configuration order) but do not cause problems. Extensions
might of course be incompatible, but they can be that in many other ways.
The check and the message are incorrect.
It would thus be better to remove the check and the warning completely.
Before 257afe5489d4 the check always failed. That change made the check work
more like intended ... but the intention was wrong. This change will thus also
back that change out.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 26 Apr 2013 23:36:12 +0900] rev 19087
config: discard "%unset" values defined in the other files read in previously
Before this patch, "%unset" can't unset values defined in the other
files read in previously, even though online help document says that
it can. It can unset only values defined in the same configuration
file.
For example, the value defined in "~/.hgrc" can't be unset by "%unset"
in ".hg/hgrc" of the repository.
This patch records "%unset"-ed values in "config.parse()", and
discards corresponding values in "config.update()".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 26 Apr 2013 23:16:25 +0900] rev 19086
tests: rename from test-config-case.t to test-config.t for centralization
Before this patch, there is no test script testing configuration
handling generally. "test-config-case.t" seems to be specific for
testing case sensitive configuration.
This patch renames from "test-config-case.t" to "test-config.t" for
centralization of tests around configuration handling.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 25 Apr 2013 20:48:49 +0900] rev 19085
i18n: show the non-ASCII password prompt text correctly
Before this patch, the prompt text for asking password is directly
passed to "getpass.getpass()" of Python standard library.
In "getpass.getpass()" implementation on Windows environment, the
prompt text is split into byte sequence and "msvcrt.putch()" is
applied on each bytes in it. This splitting causes non-ASCII prompt
text to be broken.
This patch shows the prompt text for asking password on "ui.getpass()"
side, and invokes "getpass.getpass()" with empty prompt text. This
prevents non-ASCII prompt text from being broken in
"getpass.getpass()" implementation.
This patch also sets "ui.prompt" label to prompt text to follow
"ui.prompt()" style.
Kevin Bullock <kbullock@ringworld.org> [Tue, 23 Apr 2013 17:26:00 -0500] rev 19084
tests: make sed usage in test-unionrepo.t cross-platform
Usage of the 'i' command proves tricky. I tried to write a check-code rule, but
failed.
Kevin Bullock <kbullock@ringworld.org> [Tue, 23 Apr 2013 16:57:51 -0500] rev 19083
check-code: fix sed 'i' command rule newline matching
The regular expression was meant to match cases where an 'i' command was
not followed by precisely a '\' and then a newline; it failed to match
the newline, so cases with a '\' but no newline would erroneously pass.
Durham Goode <durham@fb.com> [Mon, 22 Apr 2013 18:00:59 -0700] rev 19082
blackbox: don't run permission tests on non-unix systems
The windows and vfat test runs were failing due to read/write permissions not
working the same on those systems. On vfat, permissions can't be changed
at all, and on windows it seems the chmod emulation doesn't remove read
permissions. We could theoretically get the 'cannot write to blacklog.log'
test to pass on windows but there's no #if condition to let us exclude vfat
only.
Verified that test-blackbox passes on windows now.
Kevin Bullock <kbullock@ringworld.org> [Mon, 22 Apr 2013 16:50:08 -0500] rev 19081
check-code: expand sed rule to include more offenders
Expands the rule added in 5e4491c114b2 to include cases where the
address is a line number instead of a regular expression, and fixes an
instance of this pattern in test-unionrepo.t.
Kevin Bullock <kbullock@ringworld.org> [Mon, 22 Apr 2013 16:33:28 -0500] rev 19080
check-code: add a rule against a GNU sed-ism
BSD sed requires the 'i' command to be followed with a backslash and a
newline, like so:
$ sed -e '/^@/i\
> other'
We've encountered this problem before, e.g. in test-mq.t (900767dfa80d).
This change adds a check-code rule and fixes two instances of the
problem in test-record.t.
Alexander Plavin <me@aplavin.ru> [Mon, 22 Apr 2013 12:27:56 +0400] rev 19079
hgweb: make help verbose again (issue3899)
Due to regression introduced in f5db3092790f, help in hgweb
was rendered in non-verbose form (issue3899)
Matt Mackall <mpm@selenic.com> [Sun, 21 Apr 2013 17:33:51 -0500] rev 19078
merge with i18n
Wagner Bruna <wbruna@softwareexpress.com.br> [Sat, 20 Apr 2013 19:01:36 -0300] rev 19077
i18n-pt_BR: synchronized with 64ea454e7d76
Alexander Plavin <me@aplavin.ru> [Sat, 20 Apr 2013 16:46:38 +0400] rev 19076
css: remove repeated property
'margin' property was repeated for the same selector
Alexander Plavin <me@aplavin.ru> [Sat, 20 Apr 2013 22:09:17 +0400] rev 19075
css: fixed font-family
There is no 'sans' font-family, replaced with 'sans-serif'
Siddharth Agarwal <sid0@fb.com> [Fri, 19 Apr 2013 22:03:59 -0700] rev 19074
color: add a test with extension loaded and ui.formatted=False
Siddharth Agarwal <sid0@fb.com> [Fri, 19 Apr 2013 16:57:10 -0700] rev 19073
color: set _colormode to None when mode is unset (issue3895)
Previously, colorui assumed that it would only be called when mode wasn't
None. 7ae12ce87594 changed that, so now colorui needs to care about whether it
should colorize output.
Siddharth Agarwal <sid0@fb.com> [Fri, 19 Apr 2013 16:57:20 -0700] rev 19072
color: turn colorui functions into forwards when color is None
colorui will be set to None as necessary in an upcoming patch.
Wagner Bruna <wbruna@softwareexpress.com.br> [Fri, 19 Apr 2013 18:26:35 -0300] rev 19071
largefiles: fix typos in documentation
Durham Goode <durham@fb.com> [Fri, 19 Apr 2013 10:55:11 -0700] rev 19070
translations: change label integer error to not specify the kind of label
The current error message used the kind (bookmark, branch, tag) in the message.
Unfortunately this isn't easily translatable since some languages give different
genders to these words. The fix is to not specify it at all, since it should be
implicit based on the command the user just ran.
Relevant discussions around this area:
http://selenic.com/pipermail/mercurial-devel/2012-October/045567.html
http://selenic.com/pipermail/mercurial-devel/2012-October/045600.html
Matt Mackall <mpm@selenic.com> [Thu, 18 Apr 2013 23:50:15 -0500] rev 19069
Added signature for changeset 292cd385856d
Matt Mackall <mpm@selenic.com> [Thu, 18 Apr 2013 23:50:08 -0500] rev 19068
Added tag 2.6-rc for changeset 292cd385856d
Matt Mackall <mpm@selenic.com> [Thu, 18 Apr 2013 23:46:26 -0500] rev 19067
merge default int stable for 2.6 code freeze
Bryan O'Sullivan <bryano@fb.com> [Thu, 18 Apr 2013 16:17:59 -0700] rev 19066
blackbox: automatically rotate log files
If enabled, log rotation prevents the amount of space used by the
blackbox log from growing without bound. This becomes important in
cases where there are a lot of busy repositories managed by humans
and automation on many machines.
In large deployments, we cannot reasonably track all the repos where
blackbox logs need to be managed, so it is safer to have blackbox
manage its own logs than to move responsibility to an external tool
such as logrotate.
This change adds two configuration keys:
* blackbox.maxsize is the maximum allowable size of the current log
* blackbox.maxfiles is the number of log files to maintain
Bryan O'Sullivan <bryano@fb.com> [Thu, 18 Apr 2013 12:58:28 -0700] rev 19065
ui: add a configbytes method, for space configuration
This accepts a floating point number, followed by optional whitespace,
followed by an optional one- or two-letter unit specifier (for
bytes, kilobytes, megabytes, or gigabytes).
Simon Heimberg <simohe@besonet.ch> [Thu, 18 Apr 2013 23:53:39 +0200] rev 19064
mq: do not inherit settings form base repo in mqrepo (Fixes issue2358)
This is done by using repo.baseui when creating the queue repo.
Simon Heimberg <simohe@besonet.ch> [Thu, 18 Apr 2013 23:53:24 +0200] rev 19063
color: set the ui class in reposetup, before a repo is created
Previously only the class of repo.ui was set. The class was set in the wrapper
of dispatch._runcommand. But this is called after the repo is created. Only
the class of repo.ui is set because repo.baseui already exists and is not
accessible.
We now set the class in uisetup because this is called before repo creation.
This is also the place suggested in the wiki for modifying classes.
André Sintzoff <andre.sintzoff@gmail.com> [Thu, 18 Apr 2013 20:28:38 +0200] rev 19062
parsers: remove warning: format ‘%ld’ expects argument of type ‘long int’
gcc 4.6.3 on 12.04 Ubuntu machine emits warnings:
mercurial/parsers.c: In function ‘find_deepest’:
mercurial/parsers.c:1288:9: warning: format ‘%ld’ expects argument of type
‘long int’, but argument 3 has type ‘Py_ssize_t’ [-Wformat]
mercurial/parsers.c:1288:9: warning: format ‘%ld’ expects argument of type
‘long int’, but argument 4 has type ‘Py_ssize_t’ [-Wformat]
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 18 Apr 2013 19:50:04 +0900] rev 19061
annotate: discard refcount of discarded annotation for memory efficiency
Before this patch, refcount (managed in "needed") of the annotation
result is kept as 1, even if corresponding annotation result is
discarded from "hist", because it isn't decreased and discarded.
In the history tree including merging revision, the most recent common
ancestor of merged revisions is scanned twice. Refcount of such
ancestor never becomes 0, because refcount is started from 1 at the
second scanning.
This prevents annotation results of merging revision in "hist" from
being discarded, and decreases memory efficiency.
This patch discards refcount of the annotation result, when the
corresponding annotation is discarded from "hist".
Alexander Plavin <me@aplavin.ru> [Thu, 18 Apr 2013 16:46:09 +0400] rev 19060
revlog: fix a regression with null revision
Introduced in the patch which fixes issue3497
Part of that patch was erroneously submitted and it shouldn't be in the code
Siddharth Agarwal <sid0@fb.com> [Thu, 18 Apr 2013 14:28:06 -0700] rev 19059
rebase: check no-op before checking phase (issue3891)
This could lead to user confusion, because phases aren't really involved at
all when attempting to perform a no-op rebase.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 10 Apr 2013 19:27:49 -0500] rev 19058
template: call runtemplate on the src argument to sub
This allows using a template keyword on calls to the sub function and brings
the function inline with most other semantics of the other template functions.
Mads Kiilerich <madski@unity3d.com> [Wed, 17 Apr 2013 03:41:34 +0200] rev 19057
run-tests: introduce --random for running tests in random error
This is convenient when investigating failures one by one to avoid running the
same fixed tests first every time.
Mads Kiilerich <madski@unity3d.com> [Wed, 17 Apr 2013 03:41:11 +0200] rev 19056
largefiles: wlock in status before lfdirstate.write()
Mads Kiilerich <madski@unity3d.com> [Tue, 16 Apr 2013 19:31:59 +0200] rev 19055
transplant: use set for prune lookup
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 17 Apr 2013 11:47:49 +0200] rev 19054
obsolete: extract obsolescence marker pulling into a dedicated function
Having a dedicated function will allow us to experiment with other exchange
strategies in an extension. As we have no solid clues about how to do it right,
being able to experiment is vital.
Some transaction tricks are necessary for pull. But nothing too scary.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 17 Apr 2013 11:18:36 +0200] rev 19053
obsolete: extract obsolescence marker pushing into a dedicated function
Having a dedicated function will allows us to experiment with other exchange
strategies in an extension. As we have no solid clues about how to do it right,
being able to experiment is vital.
I intended a more ambitious extraction of push logic, but we are far too
advanced in the release cycle for it.
Bryan O'Sullivan <bryano@fb.com> [Thu, 18 Apr 2013 12:55:58 -0700] rev 19052
blackbox: fix a case of name capture
Yuya Nishihara <yuya@tcha.org> [Fri, 19 Apr 2013 01:34:21 +0900] rev 19051
pathencode: eliminate comma at end of enum list to avoid pedantic warning
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 19 Apr 2013 01:26:23 +0900] rev 19050
smtp: use 465 as default port for SMTPS
Before this patch, port 25 (wellknown port of SMTP) is used as default
port, even if "[smtp] tls" is configured as "smtps".
This patch uses port 465 (wellknown port of SMTPS) as default port, if
"[smtp] tls" is configured as "smtps".
Kevin Bullock <kbullock@ringworld.org> [Thu, 21 Feb 2013 21:05:06 +0000] rev 19049
subrepo: fix test breakage introduced in 2b34d004e644
The test didn't break when I originally committed it (git version
1.7.12.4 (Apple Git-37)), and still doesn't on that machine, but the
output changes elsewhere with "Warning: you are leaving N commits
behind..."
This change sets a ref on the commit we're updating the subrepo _away_
from to quash the warning.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 15:27:50 +0200] rev 19048
histedit: more precise user message when changeset is missing
Now that we explicitly detect duplicated changesets, we can explicitly
detect missing ones. We cover the same cases as before, some others
and we offer a better error message in all cases.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 15:22:24 +0200] rev 19047
histedit: protect against duplicated entries
Before this change one would issue rules with duplicated entries. For
this to happen some other changeset had to be missing to maintain the
rules length.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 15:13:35 +0200] rev 19046
histedit: track short hash instead of changectx object
This simplifies set usage and allow us to add a missing revision check
in a later commit.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 15:10:01 +0200] rev 19045
histedit: ensure rules return short hex at all time
Handling homogeneous data is both simpler and safer.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 13:51:27 +0200] rev 19044
histedit-test: test unknown command
We had no tested for this case.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 13:50:59 +0200] rev 19043
histedit-test: test unknown changeset
We had no tested for this case.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 13:49:32 +0200] rev 19042
histedit-test: test malformed line
We had not tested for this case.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 11:54:31 -0400] rev 19041
histedit-test: test that extra revisions are detected
We had not tested for this case.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 11:53:58 -0400] rev 19040
histedit-test: test that missing revisions are detected
We had not tested for this case.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 11:52:34 -0400] rev 19039
histedit: handle multiple spaces between action and hash (issue3893)
There is some clue that the previous code intended to handle that but it was
actually not the case.
As a result action could apply to the empty string '' changeset,
leading to the use the current working directory parent in some
operations.
Brendan Cully <brendan@kublai.com> [Fri, 01 Feb 2013 15:00:23 -0800] rev 19038
http2: sane readline
It turns out that it pays off to read more than a byte at a time with
a select in between :)
Brendan Cully <brendan@kublai.com> [Fri, 01 Feb 2013 14:41:35 -0800] rev 19037
http2: make read use pushchunk/popchunk, eschew itertools
The itertools approach was showing up high in the profile output.
Brendan Cully <brendan@kublai.com> [Fri, 01 Feb 2013 14:41:33 -0800] rev 19036
http2: track available data as it changes instead of recomputing it
With a large amount of available data, this computation can become
costly.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 13:38:49 +0200] rev 19035
histedit-test: rename histedit-revspec into histedit-argument
We have no testing for argument. This small file seems perfect once but needs a
rename.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 13:35:43 +0200] rev 19034
histedit-test: remove unnecessary graphlog extension
Graphlog is now in core.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Apr 2013 13:34:43 +0200] rev 19033
histedit-test: drop skip logic for older mercurial version
We are shipped in core now.
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 15 Apr 2013 18:57:04 -0300] rev 19032
hgweb: refactor checks for granting and revoking user permissions
Provides an entry point for extensions implementing more complex
authorization schemes.
Original patch proposed by Markus Zapke-Gründemann.
Matt Mackall <mpm@selenic.com> [Wed, 17 Apr 2013 14:38:02 -0500] rev 19031
check-code: add check for lock release order
Matt Mackall <mpm@selenic.com> [Wed, 17 Apr 2013 12:57:26 -0500] rev 19030
parsers: fix variable declaration position issue
Nikolaj Sjujskij <sterkrig@myopera.com> [Wed, 17 Apr 2013 21:06:48 +0400] rev 19029
zsh_completion: complete all files for `commit/backout --logfile`
Up until now commit/backout `--logfile` option was completed only with
*.txt-files. This requirement is a bit too strong (and is nowhere to be stated)
so it's better to complete with all files.
Stolen from zsh.git repo, c5fce37b changeset by Oliver Kiddle.
Mads Kiilerich <madski@unity3d.com> [Tue, 16 Apr 2013 19:20:23 +0200] rev 19028
transplant: improve documentation
Mads Kiilerich <madski@unity3d.com> [Tue, 16 Apr 2013 19:18:38 +0200] rev 19027
transplant: clarify what --branch do - it has nothing to do with branches
--branch specifies heads and has nothing to do with named branches, and it only
deals with topological branches to the same extent as all other DAG operations
do.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 17 Apr 2013 10:25:14 +0200] rev 19026
import: inline checkexact function
We have a sngle call now, no need to make it a function.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 17 Apr 2013 10:22:28 +0200] rev 19025
import: factor out checkexact
The two calls are strictly identical. We can simply move it after the if/else
clause.
Mads Kiilerich <madski@unity3d.com> [Wed, 17 Apr 2013 03:41:08 +0200] rev 19024
amend: fix unlocking order - first lock then wlock
Mads Kiilerich <madski@unity3d.com> [Wed, 17 Apr 2013 03:40:18 +0200] rev 19023
codingstyle: remove trailing spaces in various text files
Better do it once than see random changes in diffs later.
Mads Kiilerich <madski@unity3d.com> [Wed, 17 Apr 2013 03:39:36 +0200] rev 19022
tests: run check-code on Python files without .py extension
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 21:14:50 +0200] rev 19021
histedit: move outgoing processing to its own function
Every piece of code extracted from the main command is a win. We simplify
changeset determination in the process. Parent ceases being a list before
becoming a node. We how have a root variable containing a node all the time.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 21:17:13 +0200] rev 19020
histedit: move all arguments checks to the beginning of the command
This changeset move all checks and raises related to arguments
validation to the top of the file. This gathers all the logic in one
place and clarifies the code doing actual work. This paves the way for
splitting this gigantic function in separated functions.
A `goal` variable is introduced in the process. It holds the action to
be done by this invocation (new, continue or abort).
An invalid invocation is found in the process (the new code is a bit stricter).
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 21:57:25 -0500] rev 19019
histedit-test: generalise --commands "-" usage
This is simpler than temporary file version. There some minor test
changes since commit messages are no longer modifed. There is still
some tests using --commands with a real file.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 20:48:37 +0200] rev 19018
histedit: allow "-" as a command file
When "-" is specified as a command file, we read rules from stdin. Alter a
single test to demo the behavior, but most of them could benefit from this.
There is minor change in test output resulting from the fact we no
longer change log messages.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 16:58:25 +0200] rev 19017
histedit: properly handle --continue on empty fold
When all changes from the fold have been dropped, the --continue code was
confused. This changeset handles this case.
The test for this case existed but was broken.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 20:50:17 +0200] rev 19016
histedit-test: replace obscure python script by a plain file
One of the tests uses a python script to edit the histedit commands on
the fly. It was hard to read and likely to break. This is replaced by
a plain command file.
Doing so made me discover that the python script is incorrect. The
"+6" regexp never matched because the revision number is wrong.
This error is kept in the replacement for now. Fixing the histedit command
triggers a traceback in histedit.
A later changeset will fix the error and restore the intended test.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 16:22:38 +0200] rev 19015
test: improve documentation of some histedit tests
Each test section is clearly separated from the others and gains some
helpful documentation.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 23:24:52 +0200] rev 19014
test: use a lighter log style in histedit test
The default log displays a log of information that is useless for
histedit tests. Having a cleaner log help readability of those tests a
lot.
This does not change anything to the test semantic.
Kevin Bullock <kbullock@ringworld.org> [Tue, 16 Apr 2013 22:00:41 -0500] rev 19013
subrepo: add regression test for issue3870
pozheg <pozheg@gmail.com> [Tue, 16 Apr 2013 22:00:05 -0500] rev 19012
subrepo: clone of git sub-repository creates incorrect git branch (issue3870)
Mercurial handles git subrepos by incorrect way.
If the mercurial repo has a git sub-repo and somebody started
a new branch in the subrepo and push it into git, the next one
who will clone the whole repo will get incorrect branch name in the git
subrepo.
Siddharth Agarwal <sid0@fb.com> [Tue, 16 Apr 2013 14:39:37 -0700] rev 19011
dispatch: print 'abort:' when a pre-command hook fails (BC)
This also changes the exit code from whatever the hook returned to 255. This
brings it in line with all the other hooks that abort.
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:31:56 +0200] rev 19010
largefiles: don't hash all largefiles when initializing a lfdirstate
The largefiles will be hashed on demand if necessary ... and sometimes it isn't
necessary.
Mads Kiilerich <madski@unity3d.com> [Tue, 16 Apr 2013 00:40:21 +0200] rev 19009
largefiles: use filechunkiter for iterating largefile when serving getlfile
The default file iterator is line based and will give odd chunk sizes - often
very short and relatively expensive.
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:37:43 +0200] rev 19008
largefiles: stat all largefiles in one batch before downloading
This avoids a lot of expensive roundtrips to remote repositories ... but might
be slightly slower for local operations.
This will also change some aborts on missing files to warnings. That will in
some situations make it possible to continue working on a repository with
missing largefiles.
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:34:36 +0200] rev 19007
largefiles: 'put' should store 'source' file in under 'hash', also in localstore
Mads Kiilerich <madski@unity3d.com> [Tue, 16 Apr 2013 04:35:10 +0200] rev 19006
largefiles: getlfile must hit end of HTTP chunked streams to reuse connections
We did read the exactly the right number of bytes from the response body. But
if the response came in chunked encoding then that meant that the HTTP layer
still hadn't read the last 0-sized chunk and expected the app layer to read
more data from the stream. The app layer was however happy and sent another
request which had to be sent on another HTTP connection while the old one was
lingering until some other event closed the connection.
Adding an extra read where we expect to hit the end of file makes the HTTP
connection ready for reuse. This thus plugs a real socket leak.
To distinguish HTTP from SSH we look at self's class, just like it is done in
putlfile.
Mads Kiilerich <madski@unity3d.com> [Tue, 16 Apr 2013 01:55:57 +0200] rev 19005
largefiles: drop limitreader, use filechunkiter limit
filechunkiter.close was a noop.
Mads Kiilerich <madski@unity3d.com> [Tue, 16 Apr 2013 01:46:39 +0200] rev 19004
largefiles: move protocol conversion into getlfile and make it an iterable
Avoid the intermediate limitreader and filechunkiter between getlfile and
copyandhash - return the right protocol and put the complexity where it better
can be managed.
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:47:04 +0200] rev 19003
largefiles: don't close the fd passed to store._getfile
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:43:50 +0200] rev 19002
largefiles: remove blecch from lfutil.copyandhash - don't close the passed fd
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:43:44 +0200] rev 19001
largefiles: drop lfutil.blockstream - use filechunkiter like everybody else
The old chunk size is kept - just to avoid changing it.
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:35:43 +0200] rev 19000
largefiles: refactoring - use findfile in localstore._getfile
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:35:18 +0200] rev 18999
largefiles: refactoring - return hex from _getfile and copyandhash
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 23:32:33 +0200] rev 18998
largefiles: refactoring - create destination dir in lfutil.link
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Apr 2013 23:40:11 +0900] rev 18997
summary: clear "commonincoming" also if branches are different
Before this patch, "commonincoming" calculated by
"discovery.findcommonincoming()" is cleared, only if "default" URL
without branch part (tail "#branch" of URL) differs from
"default-push" URL without branch part.
But common revisions in "commonincoming" calculated for a branch
doesn't include ones for another branch, even if URLs without branch
part are same. The result of "discovery.findcommonoutgoing()"
invocation with such "commonincoming" becomes incorrect in some cases.
This patch clears "commonincoming", also if branch part of "default"
differs from one of "default-push".
To avoid redundant looking up:
- "ui.expandpath('default')" and "ui.expandpath('default-push',
'default')" are not compared directly, even though they contain
branch information, because they are not yet normalized by
"hg.parseurl()": tail "/" of path, for example
- "commonincoming" is not cleared, if branch isn't specified in
"default" URL, because such "commonincoming" contains common
revisions for all branches
This patch also tests "different path, same branch" pattern to check
careless degrading around comparison between source and destination.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Apr 2013 23:40:11 +0900] rev 18996
summary: make "incoming" information sensitive to branch in URL (issue3830)
Before this patch, "incoming" information of "hg summary --remote" is
not sensitive to the branch specified in the URL of the destination
repository, even though "hg pull"/"hg incoming" are so.
Invocation of "discovery.findcommonincoming()" without "heads"
argument treats revisions on branches other than the one specified in
the URL as incoming ones unexpectedly.
This patch looks head revisions, which are already detected by
"hg.addbranchrevs()" from URL, up against "other" repository, and
invokes "discovery.findcommonincoming()" with list of them as "heads"
to limit calculation of incoming revisions.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Apr 2013 23:40:10 +0900] rev 18995
histedit: make "hg histedit" sensitive to branch in URL
Before this patch, "hg histedit" are not sensitive to the branch
specified in the URL of the destination repository, even though "hg
push"/"hg outgoing" are so:
Invocation of "discovery.findcommonoutgoing()" without "onlyheads"
argument treats revisions on branches other than the one specified in
the URL as outgoing ones unexpectedly.
This patch specifies list of head revisions, which are already
detected by "hg.addbranchrevs()" from URL and looked up against local
repository, as "onlyheads" to "discovery.findcommonoutgoing()" to
limit calculation of outgoing revisions.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Apr 2013 23:40:10 +0900] rev 18994
summary: make "outgoing" information sensitive to branch in URL (issue3829)
Before this patch, "outgoing" information of "hg summary --remote" is
not sensitive to the branch specified in the URL of the destination
repository, even though "hg push"/"hg outgoing" are so:
Invocation of "discovery.findcommonoutgoing()" without "onlyheads"
argument treats revisions on branches other than the one specified in
the URL as outgoing ones unexpectedly.
This patch looks head revisions, which are already detected by
"hg.addbranchrevs()" from URL, up against local repository, and
invokes "discovery.findcommonoutgoing()" with list of them as
"onlyheads" to limit calculation of outgoing revisions.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 29 Mar 2013 22:57:16 +0900] rev 18993
annotate: increase refcount of each revisions correctly (issue3841)
Before this patch, refcount (managed in "needed") of parents of each
revisions in "visit" is increased, only when parent is not annotated
yet (examined by "p not in hist").
But this causes less refcount of the revision like "A" in the tree
below ("A" is assumed as the second parent of "C"):
A --- B --- C
\ /
\-----/
Steps of annotation for "C" in this case are shown below:
1. for "C"
1.1 increase refcount of "B"
1.2 increase refcount of "A" (=> 1)
1.3 defer annotation for "C"
2. for "A"
2.1 annotate for "A" (=> put result into "hist[A]")
2.2 clear "pcache[A]" ("pcache[A] = []")
3. for "B"
3.1 not increase refcount of "A", because "A not in hist" is False
3.2 annotate for "B"
3.3 decrease refcount of "A" (=> 0)
3.4 delete "hist[A]", even though "A" is still needed by "C"
3.5 clear "pcache[B]"
4. for "C", again
4.1 not increase refcount of "B", because "B not in hist" is False
4.2 increase refcount of "A" (=> 1)
4.3 defer annotation for "C"
5. for "A", again
5.1 annotate for "A" (=> put result into "hist[A]", again)
5.2 clear "pcache[A]"
6. for "C", once again
6.1 not increase refcount of "B", because "B not in hist" is False
6.2 not increase refcount of "A", because "A not in hist" is False
6.3 annotate for "C"
6.4 decrease refcount of "A", and delete "hist[A]"
6.5 decrease refcount of "B", and delete "hist[B]"
6.6 clear "pcache[C]"
At step (5.1), annotation for "A" mis-recognizes that all lines are
created at "A", because "pcache[A]" already cleared at step (2.2)
prevents from scanning ancestors of "A".
So, annotation for "C" or its descendants loses information about "A"
or its ancestors.
The root cause of this problem is that refcount of "A" is decreased at
step (3.3), even though it isn't increased at step (3.1).
To increase refcount correctly, this patch increases refcount of each
parents of each revisions:
- regardless of "p not in hist" or not, and
- only once for each revisions in "visit" (by "not pcached")
In fact, this problem should occur only on legacy repositories in
which a filelog includes the merging between the revision and its
ancestor (as the second parent), because:
- tree is scanned in depth-first
without such merging, revisions in "visit" refer different
revisions as parent each other
- recent Mercurial doesn't allow such merging
changelog and manifest can include such merging someway, but
filelogs can't, because "localrepository._filecommit()" converts
such merging request to linear history.
This patch tests merging cases below: these cases are from filelog of
"mercurial/commands.py" in the repository of Mercurial itself.
- both parents are same
10 --- 11 --- 12
\_/
filelogrev: changesetid:
10 00ea3613f82c
11 fc4a6e5b5812
12 4f802588cdfb
- the second parent is also ancestor of the first one
37 --- 38 --- 39 --- 40
\________/
filelogrev: changesetid:
37 f8d56da6ac8f
38 38919e1c254d
39 d3400605d246
40 f06a4a3b86a7
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 29 Mar 2013 22:57:15 +0900] rev 18992
annotate: reuse already calculated annotation
Before this patch, annotation is re-calculated even if it is already
calculated. This may cause unexpected annotation, because already
cleared "pcache" ("pcache[f] = []") prevents from scanning ancestors.
This patch reuses already calculated annotation if it is available.
In fact, "reusable" situation should be seen only on legacy
repositories in which a filelog include the merging between the
revision and its ancestor, because:
- tree is scanned in depth-first
without such merging, annotation result should be released soon
- recent Mercurial doesn't allow such merging
changelog and manifest can include such merging someway, but
filelogs can't, because "localrepository._filecommit()" converts
such merging request to linear history.
Alexander Plavin <me@aplavin.ru> [Wed, 17 Apr 2013 00:29:54 +0400] rev 18991
log: fix behavior with empty repositories (issue3497)
Make output in this special case consistent with general case one.
Matt Mackall <mpm@selenic.com> [Tue, 16 Apr 2013 13:22:29 -0500] rev 18990
merge with crew
Bryan O'Sullivan <bryano@fb.com> [Tue, 16 Apr 2013 10:08:20 -0700] rev 18989
revlog: don't cross-check ancestor result against Python version
Bryan O'Sullivan <bryano@fb.com> [Tue, 16 Apr 2013 10:08:20 -0700] rev 18988
parsers: a C implementation of the new ancestors algorithm
The performance of both the old and new Python ancestor algorithms
depends on the number of revs they need to traverse. Although the
new algorithm performs far better than the old when revs are
numerically and topologically close, both algorithms become slow
under other circumstances, taking up to 1.8 seconds to give answers
in a Linux kernel repo.
This C implementation of the new algorithm is a fairly straightforward
transliteration. The only corner case of interest is that it raises
an OverflowError if the number of GCA candidates found during the
first pass is greater than 24, to avoid the dual perils of fixnum
overflow and trying to allocate too much memory. (If this exception
is raised, the Python implementation is used instead.)
Performance numbers are good: in a Linux kernel repo, time for "hg
debugancestors" on two distant revs (24bf01de7537 and c2a8808f5943)
is as follows:
Old Python: 0.36 sec
New Python: 0.42 sec
New C: 0.02 sec
For a case where the new algorithm should perform well:
Old Python: 1.84 sec
New Python: 0.07 sec
New C: measures as zero when using --time
(This commit includes a paranoid cross-check to ensure that the
Python and C implementations give identical answers. The above
performance numbers were measured with that check disabled.)
Bryan O'Sullivan <bryano@fb.com> [Tue, 16 Apr 2013 10:08:19 -0700] rev 18987
revlog: choose a consistent ancestor when there's a tie
Previously, we chose a rev based on numeric ordering, which could
cause "the same merge" in topologically identical but numerically
different repos to choose different merge bases.
We now choose the lexically least node; this is stable across
different revlog orderings.
Bryan O'Sullivan <bryano@fb.com> [Tue, 16 Apr 2013 10:08:18 -0700] rev 18986
ancestor: a new algorithm that is faster for nodes near tip
Instead of walking all the way to the root of the DAG, we generate
a set of candidate GCA revs, then figure out which ones will win
the race to the root (usually without needing to traverse all the
way to the root).
In the common case of nodes that are close to each other in both
revision number and topology, this is usually a big win: it makes
"hg --time debugancestors" up to 9 times faster than the more general
ancestor function when measured on heads of the linux-2.6 hg repo.
Victory is not assured, however. The older function can still win
by a large margin if one node is much closer to the root than the
other, or by a much smaller amount if one is an ancestor of the
other.
For now, we've also got a small paranoid harness function that calls
both ancestor functions on every input and ensures that they give
equivalent answers.
Even without the checker function, the old ancestor function needs
to stay alive for the time being, as its generality is used by
context.filectx.merge.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 15:33:18 +0200] rev 18985
update: allow dirty update to foreground (successors)
Update to "foreground" are no longer seen as cross branch update. "Foreground"
are descendants or successors (or successors of descendants (or descendant of
successors (etc))). This allows to update with uncommited changes that get
automatically merged.
This changeset is a small step forward. We want to allow dirty update to
"background" (precursors) and takes obsolescence in account when finding the
default update destination. But those requires deeper changes and will comes in
later changesets.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Apr 2013 15:16:33 +0200] rev 18984
obsolete: extract foreground computation from bookmark.validdest
This foreground logic will be reused by update logic.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 15 Apr 2013 17:10:58 +0200] rev 18983
destroyed: invalidate phraserevs cache in all case (issue3858)
When revisions are destroyed, the `phaserevs` cache becomes invalid in most case.
This cache hold a `{rev => phase}` mapping and revision number most likely
changed.
Since 1c8e0d6ac3b0, we filter unknown phases' roots after changesets
destruction. When some roots are filtered the `phaserevs` cache is invalidated.
But not if none root where destroyed.
We now invalidate the cache in all case filtered root or not.
This bug was a bit tricky to reproduce as in most case we either:
* rebase a set a draft changeset including root (phaserev invalidated)
* strip tip-most changesets (no re-numbering of revision)
Note that the invalidation of `phaserevs` are not strictly needed when only
tip-most part of the history have been destroyed. But I do not expect the
overhead to be significant.
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:59:11 +0200] rev 18982
largefiles: deprecate --all-largefiles for pull
The same can be achieved with --lfrev pulled() and we shouldn't advertise
unnecessary command line options.
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:59:11 +0200] rev 18981
largefiles: implement pull --all-largefiles as a special case of --lfrev
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:59:11 +0200] rev 18980
largefiles: drop --cache-largefiles again
This goes a step further than d69585a5c5c0 and backs out the unreleased
--cache-largefiles option. The same can be achieved with --lfrev heads(pulled()) and
we shouldn't introduce unnecessary command line options.
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:59:04 +0200] rev 18979
largefiles: introduce pulled() revset expression for use in --lfrev
This provides a general way to do what already can be done with
--all-largefiles and --cache-largefiles.
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:57:16 +0200] rev 18978
largefiles: introduce pull --lfrev option
The revset will be evaluated after the changesets has been pulled, and missing
largefiles from matching revisions will be pulled to the local caches.
This in combination with revsets will make it possible to specify different
strategies for pulling largefiles.
The revset expressions used for this option might be quite complex and will
probably be most useful from scripts or an alias ... but less complicated than
configuring hooks.
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:54:43 +0200] rev 18977
largefiles: refactor overridepull internals
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:53:37 +0200] rev 18976
largefiles: introduce lfpull command for pulling missing largefiles
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:46:10 +0200] rev 18975
largefiles: update help
Some clarifications, and some clean-up after --cache-largefiles was introduced.
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:43:31 +0200] rev 18974
largefiles: fix cat of non-largefiles from subdirectory
We were calling back to the original commands.cat from inside the walk loop
that handled and filtered out largefiles. That did however happen with file
paths relative to repo root and the original cat would fail when it applied its
own walk and match on top of that.
Instead we now duplicate and modify the code from commands.cat and patch it to
handle both normal and largefiles.
A change in test output shows that this also makes the exit code with
largefiles consistent with the normal one in the case where one of several
specified files are missing.
This also fixes the combination of --output and largefiles.
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:41:49 +0200] rev 18973
largefiles: don't store whole file in memory for 'cat'
ronvoe12249 <ronny.voelker@elaxy.com> [Tue, 16 Apr 2013 13:55:38 +0200] rev 18972
mergetools: rename 'base' to 'merged' in meld
This makes it clear which panel is the target of the merge operation.
ronvoe12249 <ronny.voelker@elaxy.com> [Thu, 21 Feb 2013 14:49:25 +0100] rev 18971
mergetools: avoid losing the merged version with meld
Add -o $output.
When using Meld as intended (merge from left and right into the center panel),
the merged version is written to the wrong file without this option ($base,
a temporary file, which is ignored by Mercurial).
Add meld.check=changed as a secondary safety net.
Matt Mackall <mpm@selenic.com> [Tue, 16 Apr 2013 09:44:29 -0500] rev 18970
templatekw: add default styles for hybrid types (issue3887)
This allows elements like file_copies to be printed as 'name (source)'
when used with join.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 10 Apr 2013 02:27:35 +0900] rev 18969
largefiles: improve repo wrapping detection
Before this patch, repo wrapping detection in "reposetup()" of
largefiles can detect only limited repo wrapping: replacing target
functions by another one named as "wrap".
So, it can't detect repo wrapping even in recommended style: replacing
"__class__" of repo by derived class.
This patch can detect repo wrapping in both styles below:
- replacing "__class__" of repo by derived class (recommended style):
class derived(repo.__class__):
def push(self, *args, **kwargs):
return super(derived, self).push(*args, **kwargs)
repo.__class__ = derived
- replacing function of repo by another one (not recommended style):
orgpush = repo.push
def push(*args, **kwargs):
return orgpush(*args, **kwargs)
repo.push = push
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 21 Mar 2013 23:27:37 +0100] rev 18968
hgweb: respond HTTP_NOT_FOUND when an archive request does not match any files
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 21 Mar 2013 22:09:15 +0100] rev 18967
archive: raise error.Abort if the file pattern matches no files
Note that we could raise this exception even if no pattern were specified, but
the revision contained no files. However this should not happen in practice
since in that case commands.py/archive would exit earlier with an "no working
directory: please specify a revision" error message instead.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 09 Feb 2013 14:22:52 -0500] rev 18966
ui: add 'force' parameter to traceback() to override the current print setting
This will allow a current traceback.print_exc() call in dispatch to be replaced
with ui.traceback() even if --traceback was not given on the command line.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 09 Feb 2013 14:15:34 -0500] rev 18965
ui: add support for fully printing chained exception stacks in ui.traceback()
Currently, only SubrepoAbort has a cause chained to it.
Matt Harbison <matt_harbison@yahoo.com> [Wed, 06 Feb 2013 22:54:09 -0500] rev 18964
subrepo: chain the original exception to SubrepoAbort
The tracebacks in subrepos are truncated at the point where the original
exception is caught and SubrepoAbort is raised in its place since 9e3910db4e78.
That hides the most relevant subrepo methods when an error occurs. Python 2.x
doesn't support chaining exceptions, so it is manually done here for manual
printing later.
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:41:47 +0200] rev 18963
debugrebuildstate: rename to debugrebuilddirstate
There is a lot of state, but this command is for rebuilding the dirstate.
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:41:27 +0200] rev 18962
debugstate: rename to debugdirstate
There is a lot of state, but this command is for debugging the dirstate.
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:39:02 +0200] rev 18961
debugrebuildstate: clarify that rev can't be specified without -r
-r has a default value of '' in the command line. The function default value of
'tip' is thus never used and any attempt at specifying revisions without -r
will fail.
It seems like then intended behavior was that 'hg debugrebuildstate' without
any parameters should set the parents to tip. That would be very confusing now
when the command primarily is used to recover from incorrect stat info.
It is apparently undocumented that '' is the same as '.' ... unless it is
passed in a place where revsets are used.
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:37:23 +0200] rev 18960
check-code: check txt files for trailing whitespace
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:37:23 +0200] rev 18959
check-code: catch trailing space in comments
Mads Kiilerich <madski@unity3d.com> [Mon, 15 Apr 2013 01:37:23 +0200] rev 18958
spelling: fix typos and spelling errors
Mads Kiilerich <madski@unity3d.com> [Thu, 11 Apr 2013 14:54:18 +0200] rev 18957
wireproto: clarify cryptic 'remote: unsynced changes' error message on push
The message was not very much to the point and did not in any way help an
ordinary user.
'repository changed while preparing/uploading bundle - please try again'
is more correct, gives the user some understanding of what is going on, and
tells how to 'recover' from the situation.
The 'bundle' aspect could be seen as an implementation detail that shouldn't be
mentioned, but I think it helps giving an exact error message.
The message could still leave the user wondering why Mercurial doesn't lock the
repo and how unsafe it thus is. Explaining that is however too much detail.
Mads Kiilerich <mads@kiilerich.com> [Mon, 11 Feb 2013 00:43:12 +0100] rev 18956
export: export working directory parent by default
A common usecase for export is to preview the patch that will be patchbombed or
to see what changed in a revision found by bisect. Showing the working
directory parent is thus a useful and obvious default.
Mads Kiilerich <madski@unity3d.com> [Wed, 10 Apr 2013 13:12:24 +0200] rev 18955
commit: allow closing "non-head" changesets
Backout acd61dc44a39. The changeset prevented closing non-head changesets but
did not provide any rationale or test case and I don't see what value it adds.
Users might have their reasons to commit something anywhere - and close it
immediately.
And contrary to the comment that is removed: The topo heads set is _not_
included in the branch heads set of the current branch. It do not include
closed topological heads.
The change thus prevented closing commits on top of closing commits. A valid
usecase for that is to merge closed heads to reduce the number of topological
heads.
The only existing test coverage for this is the failing double close in
test-revset.t. It was added in 3cc2e34d7a7d and seems to not be intentional.
Mads Kiilerich <mads@kiilerich.com> [Wed, 13 Jun 2012 23:06:34 +0200] rev 18954
record: ignore trailing content when parsing patches - introduce 'other' lines
This makes record work more like import which ignores for instance mail footers
in a patch file.
This also makes it possible for TortoiseHg to preview unapplied patches
containing such footers.
Mads Kiilerich <madski@unity3d.com> [Thu, 11 Apr 2013 19:03:33 +0200] rev 18953
record: abort on malformed patches instead of crashing
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18952
localrepo: use "vfs.rename()" instead of "util.rename()"
This patch makes "_journalfiles()" return a list of pairs of journal
file and corresponded vfs instance instead of a list of journal files
in full path, to use "vfs.rename()" instead of "util.rename()" in
"aftertrans()".
"undofiles()" still returns a list of undo files in full path, because
"repair.strip()" expects such list. It'll be also made to return a
list of pairs of undo file and corresponded vfs at vfs migration for
"repair.strip()" in the near future.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18951
localrepo: use "vfs.setflags()" instead of "util.setflags()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18950
localrepo: use "vfs.readlink()" instead of "os.readlink()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18949
localrepo: use "vfs.islink()" instead of "os.path.islink()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18948
localrepo: use "vfs.rename()" instead of "util.rename()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18947
localrepo: use "vfs.exists()" instead of "os.path.exists()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18946
localrepo: use vfs instead of "os.path.*" in sharedpath checking
In the point of view of efficiency, "vfs" instance created in this
patch should be passed to and reuse in "store.store()" invocation just
after patched code block, because "store" object is initialized by vfs
created with "self.sharedpath".
eBut to focus just on migration from direct file I/O API accessing to
vfs, this patch uses created vfs as temporary one. Refactoring around
"store.store()" invocation will be done in the future.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 15 Apr 2013 01:22:15 +0900] rev 18945
vfs: split "expand" into "realpath"/"expandpath" to apply each separately
Before this patch, vfs constructor applies both "util.expandpath()"
and "os.path.realpath()" on "base" path, if "expand" is True.
This patch splits it into "realpath" and "expandpath", to apply each
functions separately: this splitting can allow to use vfs also where
one of each is not needed.
Mads Kiilerich <madski@unity3d.com> [Fri, 18 Jan 2013 15:54:09 +0100] rev 18944
unionrepo: read-only operations on a union of two localrepos
unionrepo is just like bundlerepo without bundles.
The implementation is very similar to bundlerepo, but I don't see any obvious
way to generalize it.
Some most obvious use cases for this would be log and diff across local repos,
as a kind of preview of pulls, for instance:
$ hg -R union:repo1+repo2 heads
$ hg -R union:repo1+repo2 log -r REPO1REV -r REPO2REV
$ hg -R union:repo1+repo2 log -r '::REPO1REV-::REPO2REV'
$ hg -R union:repo1+repo2 log -r 'ancestor(REPO1REV,REPO2REV)'
$ hg -R union:repo1+repo2 diff -r REPO1REV -r REPO2REV
This is going to be used in RhodeCode, and Bitbucket already uses something
similar. Having a core implementation would be beneficial.
Yuya Nishihara <yuya@tcha.org> [Mon, 15 Apr 2013 23:52:57 +0900] rev 18943
subrepo: fix exception on revert when "all" option is omitted
Since fafdff7e9c43, backout does not set opts['all'], which causes KeyError
at hgsubrepo.revert.
Matt Mackall <mpm@selenic.com> [Sun, 14 Apr 2013 19:05:19 -0500] rev 18942
histedit: update tests for new intervention framework
Angel Ezquerra <angel.ezquerra@gmail.com> [Fri, 08 Mar 2013 21:50:27 +0100] rev 18941
test-subrepo: add tests for subrepo "storeclean" checks
These tests verify that subrepos are not pushed when their store is clean versus
a given target repository.
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 16 Feb 2013 01:21:40 +0100] rev 18940
subrepo: do not push mercurial subrepos whose store is clean
This patch stops mercurial from pushing unmodified subrepos. An unmodified
subrepo is one whose store is "clean" versus a given target subrepo.
Note that subrepos may have a clean store versus a target repo but not versus another. This patch handles this scenario by individually keeping track of the state of the store versus all push targets.
Tests will be added on the following revision.
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 16 Feb 2013 01:18:53 +0100] rev 18939
subrepo: implement "storeclean" method for mercurial subrepos
The mercurial subrepo "storeclean" method works by calculating a "store hash" of
the repository state and comparing it to a cached store hash. The store hash is
always cached when the repository is cloned from or pushed to a remote
repository, but also on pull as long as the repository already had a clean
store. If the hashes match the store is "clean" versus the selected repository.
Note that this method is currenty unused, but it will be used by a later patch.
The store hash is calculated by hashing several key repository files, such as
the bookmarks file the phaseroots file and the changelog. Note that the hash
comparison is done file by file so that we can exit early if a pair of hashes
do not match. Also the hashes are calculated starting with the file that is
most likely to be smaller upto the file that is more likely to be larger.
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 16 Feb 2013 11:44:13 +0100] rev 18938
util: add notindexed optional parameter to makedirs function
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 16 Feb 2013 01:11:20 +0100] rev 18937
subrepo: introduce storeclean method
Currently this method is unused and it is not implemented for any specific
subrepo type (it always returns False). It receives a remote repository path
because a repository may have a clean store versus a given repository but not
versus another.
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 16 Feb 2013 00:07:00 +0100] rev 18936
subrepo: introduce storeclean helper functions
These helper functions are currently unused but will be used to implement the
cleanstore method that will be introduced later.
Augie Fackler <raf@durin42.com> [Fri, 08 Feb 2013 16:17:46 -0600] rev 18935
dispatch: exit with status 1 for an InterventionRequired exception (bc)
Augie Fackler <raf@durin42.com> [Fri, 08 Feb 2013 16:27:49 -0600] rev 18934
histedit: switch from util.Abort to util.InterventionRequired where appropriate (bc)
Augie Fackler <raf@durin42.com> [Fri, 08 Feb 2013 16:27:59 -0600] rev 18933
rebase: switch from util.Abort to util.InterventionRequired where appropriate (bc)
Augie Fackler <raf@durin42.com> [Fri, 08 Feb 2013 16:28:24 -0600] rev 18932
dispatch: catch InterventionRequired and print the message with no prefix
Augie Fackler <raf@durin42.com> [Fri, 08 Feb 2013 14:26:03 -0600] rev 18931
error: introduce new InterventionRequired exception
Future changes will use this type instead of util.Abort for signalling
the user that intervention is required, as in some rebase and histedit
aborts.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 19:48:07 -0700] rev 18930
util: remove unreachable code
Found by Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 19:33:48 -0700] rev 18929
util: remove no-op assignment
Found by Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 18:49:14 -0700] rev 18928
merge more evolve stuff away (what?)
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 18:48:02 -0700] rev 18927
synthrepo: add missing import of sys
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 18:44:22 -0700] rev 18926
transplant: pass source through to recover
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:25:27 -0700] rev 18925
repoview: remove more unreachable code
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 18:35:26 -0700] rev 18924
merge away some failed evolve fat-fingering
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:35:56 -0700] rev 18923
pager: add missing imports of errno and shlex
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:33:24 -0700] rev 18922
largefiles: quiet (and document) undefined name errors (issue3886)
These names were found using Cython; I was completely puzzled until
I searched the rest of the tree. It's icky to mess with another
module's namespace, but ickier yet to do so without a comment :-)
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:27:09 -0700] rev 18921
color: add missing import of error
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:20:09 -0700] rev 18920
pvec: use the correct name for an identifier
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:18:52 -0700] rev 18919
repoview: remove unreachable code
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:20:09 -0700] rev 18918
pvec: use the correct name for an identifier
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:18:52 -0700] rev 18917
repoview: remove unreachable code
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:17:35 -0700] rev 18916
mail: add missing import of sys
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:17:05 -0700] rev 18915
statichttprepo: add missing import of os
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 17:16:37 -0700] rev 18914
worker: add missing import of errno
Found using Cython.
Bryan O'Sullivan <bryano@fb.com> [Fri, 12 Apr 2013 16:01:18 -0700] rev 18913
histedit: support editing of the first commit (issue3767)