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.