Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 05 Mar 2014 18:49:47 -0800] rev 20704
cmdutil: changed walkchangerevs to use spanset instead of baseset
Using a spanset takes almost no memory at all. A baseset builds the entire
list in memory and is much slower for methods like __contains__.
Lucas Moscovicz <lmoscovicz@fb.com> [Mon, 24 Feb 2014 16:36:17 -0800] rev 20703
revset: added sort methods to generatorsets
Method needed to propagate sort calls amongst lazy structures.
The generated list (stored in the object) is sorted.
If the generated list did not contain all elements from the generator, we
take care of that before sorting the list.
Matt Mackall <mpm@selenic.com> [Thu, 13 Mar 2014 12:05:08 -0500] rev 20702
merge with stable
Augie Fackler <raf@durin42.com> [Tue, 04 Feb 2014 18:33:25 -0500] rev 20701
fix_bytesmod: use the "from mercurial" form of the import to avoid breaking httpclient
Without this patch, 2to3's rewrites to httpclient cause it to fail to
import. With this patch, it's probably hopelessly broken, but at least
won't block forward progress on non-http2 functionality on Python 3.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 13 Mar 2014 19:48:41 +0900] rev 20700
commit: create new amend changeset as secret correctly for "--secret" option
Before this patch, "hg commit --amend --secret" doesn't create new
amend changeset as secret, even though the internal function
"commitfunc()" passed to "cmdutil.amend()" make "phases.new-commit"
configuration as "secret" temporarily.
"cmdutil.amend()" uses specified "commitfunc" only for temporary amend
commit, and creates the final amend commit changeset by
"localrepository.commitctx()" directly with memctx.
This patch creates new amend changeset as secret correctly for
"--secret" option, by changing "phases.new-commit" configuration
temporarily before "localrepository.commitctx()".
Cristian Zamfir <cristi_zmf@yahoo.com> [Wed, 12 Mar 2014 10:26:48 +0200] rev 20699
hg log: solves bug regarding hg log -r 0:null (
issue4039)
'hg log -r 0:null' was showing only one changeset(the '-1' one) instead of the first two changesets.
Augie Fackler <raf@durin42.com> [Mon, 10 Mar 2014 17:52:42 -0400] rev 20698
killdaemons: drop superfluous L suffix from constant
As far as I'm aware PEP 237[0] means this suffix is superfluous even
on Python 2.4, and we can just drop it, which makes this code happy on
Python 3.
0: http://legacy.python.org/dev/peps/pep-0237/
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 18:28:57 -0400] rev 20697
setup.py: fix 2.4 breakage in
77ab0abb
Augie Fackler <raf@durin42.com> [Thu, 19 Sep 2013 15:38:42 -0400] rev 20696
setup: handle more invalid python3 syntax
This should keep the file portable to both python2 and python3.
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Mar 2014 14:06:49 -0800] rev 20695
revset: changed __add__ methods on lazy sets to return addsets (
issue4191)
Performance Benchmarking:
$ hg --time log --graph --style compact --limit 6 -r 'sort((::. or bookmark()
or heads(public())), "-rev")'
time: real 1.540 secs (user 1.510+0.000 sys 0.020+0.000)
$ ./hg --time log --graph --style compact --limit 6 -r 'sort((::. or
bookmark() or heads(public())), "-rev")'
time: real 1.240 secs (user 1.190+0.000 sys 0.040+0.010)
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Mar 2014 13:48:31 -0800] rev 20694
revset: added addset class with its basic methods
This class addresses the problem of losing performance on the __contains__
method when adding two smart structures with fast membership testing.
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Feb 2014 14:03:43 -0800] rev 20693
revset: changed _children method to use lazy structures
Lucas Moscovicz <lmoscovicz@fb.com> [Mon, 10 Feb 2014 12:26:45 -0800] rev 20692
revset: changed descendants revset to use lazy generators
Performance Benchmarking:
$ time hg log -qr "0:: and 0:5"
...
real 0m3.665s
user 0m3.364s
sys 0m0.289s
$ time ./hg log -qr "0:: and 0:5"
...
real 0m0.492s
user 0m0.394s
sys 0m0.097s
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Feb 2014 13:44:57 -0800] rev 20691
revset: optimized _revancestors method based on order of revisions
If the revisions for which the ancestors are required are in descending order,
it lazily loads them into a heap to be able to yield values faster.
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Feb 2014 10:32:02 -0800] rev 20690
revset: changed ancestors revset to return lazy generators
This will not improve revsets like "::tip" but will do when that gets
intersected or substracted with another revset.
Performance Benchmarking:
$ time hg log -qr "draft() and ::tip"
...
real 0m3.961s
user 0m3.640s
sys 0m0.313s
$ time ./hg log -qr "draft() and ::tip"
...
real 0m1.080s
user 0m0.987s
sys 0m0.083s
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 11 Mar 2014 14:36:40 +0900] rev 20689
doc: show short description of each commands in generated documents
Before this patch, short description of each commands is not shown in
generated documents (HTML file and UNIX man page). This omitting may
prevent users from understanding about commands.
This patch show it as the 1st paragraph in the help section of each
commands. This style is chosen because:
- showing it as the section title in "command - short desc" style
disallows referencing by "#command" in HTML file: in "en" locale,
hyphen concatenated title is used as the section ID in HTML file
for this style
- showing it as the 1st paragraph in "command - short desc" style
seems to be redundant: "command" appears also just before as the
section title
- showing it just after synopsis like "hg help command" seems not to
be reasonable in UNIX man page
This patch just writes short description ("d['desc'][0]") before "::",
because it should be already "strip()"-ed in "get_desc()", or empty
string for the command without description.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:31:27 -0400] rev 20688
check-code: disallow use of dict(key=value) construction
{} literals are faster and more consistent across Python 2 and 3.
Whitelisted the one use of dict() that is using a generator expresion.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:29:29 -0400] rev 20687
setup.py: move from dict() construction to {} literals
The latter are both faster and more consistent across Python 2 and 3.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:21:30 -0400] rev 20686
test-wireproto: move from dict() construction to {} literals
The latter are both faster and more consistent across Python 2 and 3.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:21:17 -0400] rev 20685
test-url: move from dict() construction to {} literals
The latter are both faster and more consistent across Python 2 and 3.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:21:02 -0400] rev 20684
test-filelog: move from dict() construction to {} literals
The latter are both faster and more consistent across Python 2 and 3.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:20:42 -0400] rev 20683
templatekw: move from dict() construction to {} literals
The latter are both faster and more consistent across Python 2 and 3.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:20:24 -0400] rev 20682
minirst: move from dict() construction to {} literals
The latter are both faster and more consistent across Python 2 and 3.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:20:04 -0400] rev 20681
webutil: move from dict() construction to {} literals
The latter are both faster and more consistent across Python 2 and 3.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:19:43 -0400] rev 20680
run-tests: move from dict() construction to {} literals
The latter are both faster and more consistent across Python 2 and 3.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:19:20 -0400] rev 20679
util: move from dict() construction to {} literals
The latter are both faster and more consistent across Python 2 and 3.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:29:07 -0400] rev 20678
webcommands: move from dict() construction to {} literals
The latter are both faster and more consistent across Python 2 and 3.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:15:37 -0400] rev 20677
hgwebdir_mod: move from dict() construction to {} literals
The latter are both faster and more consistent across Python 2 and 3.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:15:09 -0400] rev 20676
filemerge: move from dict() construction to {} literals
The latter are both faster and more consistent across Python 2 and 3.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:14:31 -0400] rev 20675
changegroup: move from dict() construction to {} literals
The latter are both faster and more consistent across Python 2 and 3.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:13:42 -0400] rev 20674
extdiff: move from dict() construction to {} literals
The latter are both faster and more consistent across Python 2 and 3.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:13:10 -0400] rev 20673
bugzilla: move from dict() construction to {} literals
The latter are both faster and more consistent across Python 2 and 3.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:12:26 -0400] rev 20672
synthrepo: move from dict() construction to {} literals
The latter are both faster and more consistent across Python 2 and 3.
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:00:51 -0400] rev 20671
wireproto: remove todict() and use {} literals instead
Matt Mackall <mpm@selenic.com> [Tue, 11 Mar 2014 16:19:08 -0500] rev 20670
merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 10 Mar 2014 15:00:41 -0500] rev 20669
templater: deprecate --style now that -T exists
Matt Mackall <mpm@selenic.com> [Sat, 08 Mar 2014 17:38:50 -0600] rev 20668
templating: make -T much more flexible
It can now accept styles and paths and references to settings in
[templates].
Matt Mackall <mpm@selenic.com> [Sat, 08 Mar 2014 16:14:08 -0600] rev 20667
changeset_templater: remove use_template method
Matt Mackall <mpm@selenic.com> [Sat, 08 Mar 2014 16:01:58 -0600] rev 20666
cmdutil: make helper function to process template args
Matt Mackall <mpm@selenic.com> [Sat, 08 Mar 2014 15:27:25 -0600] rev 20665
commands: add -T alternative to --template
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 07 Mar 2014 14:29:26 -0500] rev 20664
config: clarify and exemplify the user name in the sample config file
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 10 Mar 2014 01:01:43 +0900] rev 20663
templater: make strings in template expressions be "string-escape"-ed correctly
Changeset
64b4f0cd7336 (released with 2.8.1) fixed "recursively
evaluate string literals as templates" problem (
issue4102) by moving
the location of "string-escape"-ing from "tokenizer()" to
"compiletemplate()".
But some parts in template expressions below are not processed by
"compiletemplate()", and it may cause unexpected result.
- 'expr' of 'if(expr, then, else)'
- 'expr's of 'ifeq(expr, expr, then, else)'
- 'sep' of 'join(list, sep)'
- 'text' and 'style' of 'rstdoc(text, style)'
- 'text' and 'chars' of 'strip(text, chars)'
- 'pat' and 'repl' of 'sub(pat, repl, expr)'
For example, '\n' of "{join(extras, '\n')}" is not "string-escape"-ed
and treated as a literal '\n'. This breaks "Display the contents of
the 'extra' field, one per line" example in "hg help templates".
Just "string-escape"-ing on each parts above may not work correctly,
because inside expression of nested ones already applies
"string-escape" on string literals. For example:
- "{join(files, '\n')}" doesn't return "string-escape"-ed string, but
- "{join(files, if(branch, '\n', '\n'))}" does
To fix this problem, this patch does:
- introduce "rawstring" token and "runrawstring" method to handle
strings not to be "string-escape"-ed correctly, and
- make "runstring" method return "string-escape"-ed string, and
delay "string-escape"-ing until evaluation
This patch invokes "compiletemplate()" with "strtoken=exp[0]" in
"gettemplate()", because "exp[1]" is not yet evaluated. This code path
is tested via mapping ("expr % '{template}'").
In the other hand, this patch invokes it with "strtoken='rawstring'"
in "_evalifliteral()", because "t" is the result of "arg" evaluation
and it should be "string-escape"-ed if "arg" is "string" expression.
This patch doesn't test "string-escape"-ing on 'expr' of 'if(expr,
then, else)', because it doesn't affect the result.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 10 Mar 2014 01:01:43 +0900] rev 20662
templater: apply "stringify()" on sub expression to get string correctly
Templating syntax allows nested expression to be specified as parts
below, but they are evaluated as a generator and don't work correctly.
- 'sep' of 'join(list, sep)'
- 'text' and 'chars' of 'strip(text, chars)'
In the former case, 'sep' returns expected string only for the first
separation, and empty one for the second or later, because the
generator has only one element.
In the latter case, templating is aborted by exception, because the
generator doesn't have 'strip()' method (as 'text') and can't be
passed as the argument to 'str.strip()' (as 'chars').
This patch applies "stringify()" on these sub expression to get string
correctly.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 10 Mar 2014 01:01:42 +0900] rev 20661
templater: avoid recursive evaluation of string literals completely
Changeset
3d8bfe2ecf6d (released with 2.8.1) fixed "recursively
evaluate string literals as templates" problem (
issue4103) by
introducing "_evalifliteral()".
But some parts in template expressions below are still processed by
the combination of "compiletemplate()" and "runtemplate()", and may
cause same problem unexpectedly.
- 'init' and 'hang' of 'fill(text, width, init, hang)'
- 'expr' of 'sub(pat, repl, expr)'
- 'label' of 'label(label, expr)'
This patch processes them by "_evalifliteral()" instead of the
combination of "compiletemplate()" and "runtemplate()" to avoid
recursive evaluation of string literals completely.
Matt Mackall <mpm@selenic.com> [Thu, 06 Mar 2014 17:26:49 -0600] rev 20660
status: improve explanation of ' ' status
a) it shows for states other than 'A'
b) it only shows with --copies
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 18 Feb 2014 13:07:08 -0800] rev 20659
revset: changed methods in spanset to return ordered sets
Now __sub__ and __and__ can smartly return ordered lazysets.
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 25 Feb 2014 10:36:23 -0800] rev 20658
revset: added sort method to orderedlazyset
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Feb 2014 08:44:18 -0800] rev 20657
revset: added order methods to lazyset classes
This will allow revsets to ask for an ordered set when possible to be able to
work lazily with it.
Olle Lundberg <geek@nerd.sh> [Thu, 06 Mar 2014 12:37:28 +0100] rev 20656
setdiscovery: document algorithms used
This is taken from:
http://programmers.stackexchange.com/questions/208998
And modified slightly.
Simon Heimberg <simohe@besonet.ch> [Thu, 20 Feb 2014 09:17:22 +0100] rev 20655
doc: gendoc.py creates valid output for option descriptions with newlines
gendoc.py did not handle the hanging indentation for descriptions. Work around
this by joining all in one single line (same as in minirst since previous
patch).
This problem occurred when translations of option lines were very long. Do not
bother the translators with this detail.
On a long option description, the translator continued on a new line as usual.
gendoc.py created invalid rst syntax like this:
-o, --option
Description line 1
description line 2
The new output is:
-o, --option
Description line 1 description line 2
The lines could theoretically become very long, but line breaking is handled
when generating the final documentation.
Simon Heimberg <simohe@besonet.ch> [Wed, 19 Feb 2014 17:32:21 +0100] rev 20654
minirst: create valid output when table data contains a newline
When table data contained a newline, the result of minirst.maketable
did not look nice plus it was not recognised by minirst.format:
== === ====
l1 1 one
l2 2 2
22
l3
== === ====
This problem occurred when the description of options had a very long
translation which was split by newlines. Do not bother a translator with
this detail.
The multiline translations for option descriptions have been fixed in
baf1600adfbe in it.po, de.po and ro.po. I manually did the same as this patch
does, I removed the newlines.
When a newline was in the description, this created unusable help output:
$ hg help somecommand
hg somecommand [option]...
with somecommand, you can...
options:
== =================== =======================================================
=================================== --longdesc VALUE xxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -n --norm
normal desc --newline VALUE line1 line2 == =================== ===============
===========================================================================
now this looks much nicer:
...
options:
--longdesc VALUE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-n --norm normal desc
--newline VALUE line1 line2
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Mar 2014 14:03:08 +0100] rev 20653
tests: match time by a glob to fix intermittent failures of test-lock-badness.t
Sometimes the lock was a bit slower and took 2 seconds. Do not fail the test by
this.
The glob ? matches from 0 to 9 seconds, which should be enough safety.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 05 Mar 2014 10:49:43 -0800] rev 20652
merge: adds documentation to the mergestate class
Document most the new function involved in the new serialisation process (and a
few others).
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 05 Mar 2014 10:22:43 -0800] rev 20651
merge: add blank line between mergestate's method
This class is now too big to be a single big block of continuous text.
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 23:21:24 +0900] rev 20650
cmdserver: allow to start server without repository
Typical use case is to clone repository through command server. Clone may
require user interaction, so command-server protocol is beneficial over
raw stdio channels.
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 23:11:17 +0900] rev 20649
cmdserver: prepare test for starting server without repository
Olle Lundberg <geek@nerd.sh> [Thu, 06 Mar 2014 01:24:03 +0100] rev 20648
histedit: move logic for finding child nodes to new function
This function will be used in later patches.
Olle Lundberg <geek@nerd.sh> [Wed, 05 Mar 2014 22:02:45 +0100] rev 20647
histedit: clean up lock imports
We are alread importing the release function from lock, no need
to actually import the module too.
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 05 Mar 2014 17:42:05 -0800] rev 20646
localrepo: changed revs to use spanset instead of baseset
Performance benchmarking:
$ time hg log -qf -l1
...
real 0m1.420s
user 0m1.249s
sys 0m0.167s
$ time ~/local/hg/hg log -qf -l1
...
real 0m0.719s
user 0m0.614s
sys 0m0.103s
Ed Morley <emorley@mozilla.com> [Wed, 05 Mar 2014 09:31:05 +0000] rev 20645
extensions: use normpath to allow trailing '\' on Windows (
issue4187)
Fixes same issue as
5c794e7331e7 but now works on Windows too.
With this patch a trailing backward slash won't prevent the extension from
being found on Windows, and we continue to support any combination of forward
and back slashes within the path.
Matt Mackall <mpm@selenic.com> [Tue, 04 Mar 2014 09:56:59 -0600] rev 20644
tests: fix unused imports from inotify removal caught by pyflakes
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 27 Feb 2014 17:27:03 -0800] rev 20643
revset: added ordered generatorset classes with __contains__ method
They stop iterating as soon as they go past the value they are looking for,
so, for values not in the generator they return faster.
Mads Kiilerich <madski@unity3d.com> [Tue, 25 Feb 2014 20:29:46 +0100] rev 20642
merge: use the right ancestor when both sides copied the same file
The tests shows no real changes because of this ... but there must be some
weird corner cases where using the right ancestor for the merge planning is
better than using the wrong one.
Mads Kiilerich <madski@unity3d.com> [Tue, 25 Feb 2014 20:29:14 +0100] rev 20641
copies: when both sides made the same copy, report it as a copy
Not used yet ... but shows up in debug output.
Mads Kiilerich <madski@unity3d.com> [Sun, 02 Mar 2014 18:36:02 +0100] rev 20640
merge: handle create+delete prompts in calculateupdates
I would like to move it all the way to the interactive resolve state like
merges are ... but this is a first intermediate step.
Mads Kiilerich <madski@unity3d.com> [Fri, 28 Feb 2014 02:26:03 +0100] rev 20639
merge: handle acceptremove of create+delete early in manifest merge
Mads Kiilerich <madski@unity3d.com> [Sun, 02 Mar 2014 18:30:41 +0100] rev 20638
largefiles: override calculateupdates instead of manifestmerge
That will give calculateupdates a purpose in life ... and be convenient later.
Mads Kiilerich <madski@unity3d.com> [Tue, 25 Feb 2014 20:28:40 +0100] rev 20637
tests: add systematic test of merge ancestor calculation
There is probably some overlap with the existing tests - it is hard to figure
out what these tests are doing.
Mads Kiilerich <madski@unity3d.com> [Sun, 02 Mar 2014 18:25:19 +0100] rev 20636
tests: add test case for criss cross merge
The test do not fit in any existing test file...
Matt Mackall <mpm@selenic.com> [Mon, 03 Mar 2014 15:34:09 -0600] rev 20635
merge with stable
Lucas Moscovicz <lmoscovicz@fb.com> [Mon, 03 Mar 2014 12:54:46 -0800] rev 20634
revset: changed generatorset code to remove unnecesary function call
Removed _nextitem() method, now __iter__ has that logic and __contains__ uses
__iter__ to check for membership.
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 15:50:45 +0900] rev 20633
phase: say "Returns 0" instead of "Return 0" like other command help
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 15:50:41 +0900] rev 20632
dirstate: remove double imports of errno
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 15:50:51 +0900] rev 20631
cmdserver: mask return code of runcommand in the same way as dispatch.run
"hg help" does not state that the code for abort is 255, but it's confusing
to have different code between hg command and command server.
Tests of python-hglib 1.2 passed with this change.
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 15:50:48 +0900] rev 20630
cmdserver: include non-zero return code of runcommand in test output
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 19:41:30 +0900] rev 20629
cmdserver: recreate mq object on runcommand in case queue path was changed
repo.mq needs to be recreated after queue path change. Since there is little
benefit to keep invalidated mq object, it always delete repo.mq.
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 19:41:26 +0900] rev 20628
cmdserver: reload mq on each runcommand request to avoid corruption
If mq was changed by another process, command server should invalidate caches.
Otherwise, mq status would go wrong.
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 19:41:23 +0900] rev 20627
localrepo: add hook point to invalidate everything on each command-server run
MQ extension will wrap this function to invalidate its state.
repo.invalidate cannot be wrapped for this purpose because qpush obtains
repo.lock in the middle of the operation, triggering repo.invalidate. Also,
it seems wrong to obtain lock earlier because mq data is non-store parts.
anuraggoel <anurag.dsps@gmail.com> [Mon, 03 Mar 2014 23:37:59 +0530] rev 20626
paper: overlapping of section title on help pages (
issue4051)
Now there will be no overlap lines between various section title
on help pages. http://selenic.com/repo/hg/help/config
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 20:08:41 -0600] rev 20625
contrib: drop tmplrewrite
Needed for the 1.3 transition in 2009, no longer relevant
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 19:51:22 -0600] rev 20624
extensions: mark win32text deprecated
Happened a long time ago.
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 19:44:14 -0600] rev 20623
extensions: remove interhg
Has been built-in for a few releases.
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 16:20:15 -0600] rev 20622
extensions: remove the inotify extension (BC)
This extension has always had correctness issues and has been
unmaintained for years. It is now removed in favor of the third-party
hgwatchman which is maintained and appears to be correct.
Users with inotify enabled in their config files will fall back to
standard status performance.
Augie Fackler <raf@durin42.com> [Sat, 01 Mar 2014 21:08:43 -0500] rev 20621
merge main and crew
Augie Fackler <raf@durin42.com> [Sat, 01 Mar 2014 21:08:28 -0500] rev 20620
merge with stable
Augie Fackler <raf@durin42.com> [Sat, 01 Mar 2014 09:30:23 -0500] rev 20619
merge with mpm
Augie Fackler <raf@durin42.com> [Sat, 01 Mar 2014 09:21:45 -0500] rev 20618
test-help.t: fix for non-Linux platforms
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 15:22:49 -0600] rev 20617
Added signature for changeset
b96cb15ec9e0
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 15:22:30 -0600] rev 20616
Added tag 2.9.1 for changeset
b96cb15ec9e0
Mads Kiilerich <madski@unity3d.com> [Sat, 01 Mar 2014 18:09:39 +0100] rev 20615
merge: audit the right destination file when merging with dir rename
Augie Fackler <raf@durin42.com> [Mon, 03 Feb 2014 02:09:46 -0500] rev 20614
setup: specify --prefix="" for install-home-bin to avoid badness with defaults
Sometimes (I'm not sure when) setup.py gets a default value for
--prefix, which breaks --home. This fixes that for me.
Durham Goode <durham@fb.com> [Sat, 16 Nov 2013 08:57:08 -0800] rev 20613
revset: add 'only' revset
Adds a only() revset that has two forms:
only(<set>) is equivalent to "::<set> - ::(heads() - heads(<set>::))"
only(<include>,<exclude>) is equivalent to "::<include> - ::<exclude>"
On a large repo, this implementation can process/traverse 50,000 revs in 0.7
seconds, versus 4.2 seconds using "::<include> - ::<exclude>".
This is useful for performing histedits on your branch:
hg histedit -r 'first(only(.))'
Or lifting branch foo off of branch bar:
hg rebase -d @ -s 'only(foo, bar)'
Or a variety of other uses.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 17:42:08 -0800] rev 20612
revset: added basic operators to orderedlazyset
Now __and__ and __sub__ return orderedlazyset.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 09:28:41 -0800] rev 20611
revset: changed revset code to use filter method
Revset methods now use the filter code to apply a condition.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 17:18:11 -0800] rev 20610
revset: added filter method to revset classes
This method will replace the creation of lazysets inside the revset methods.
Instead, the classes that handle lazy structures will create them based on
their current order.
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 05 Feb 2014 15:24:08 -0800] rev 20609
revset: added orderedlazyset class
Matt Mackall <mpm@selenic.com> [Thu, 27 Feb 2014 23:17:37 -0600] rev 20608
config: make repo optional again
Olle Lundberg <geek@nerd.sh> [Fri, 28 Feb 2014 02:28:12 +0100] rev 20607
merge: fix spelling of length
Alexander Drozdov <al.drozdov@gmail.com> [Mon, 10 Feb 2014 07:13:10 +0400] rev 20606
ui: edit(): transplant: set HGREVISION environment variable for an editor
transplant command set 'transplant_source' extra for the revision.
Allow an editor to access the extra using HGREVISION environment variable.
This may be useful when an editor is actually a script which modifies a commit
message. Transplant filters is an alternative way to do it.
Alexander Drozdov <al.drozdov@gmail.com> [Thu, 06 Feb 2014 12:21:20 +0400] rev 20605
ui: edit(): rebase, graft: set HGREVISION environment variable for an editor
rebase and graft commands set 'rebase_source' or 'source' extras for the revision.
Allow an editor to access the extras using HGREVISION environment variable.
This may be useful when an editor is actually a script which modifies a commit
message.
The name 'HGREVISION' has been selected as transplant already sets this variable
for its filters (--filter).
Alexander Drozdov <al.drozdov@gmail.com> [Thu, 06 Feb 2014 10:15:20 +0400] rev 20604
cmdutil: make commitforceeditor() to pass revision extras to ui.edit()
Alexander Drozdov <al.drozdov@gmail.com> [Thu, 06 Feb 2014 11:38:28 +0400] rev 20603
ui: allow edit() to work with revision extras
Make edit() to accept optional 'extra' dictionary. Revision extras will be
used in upcoming patches to set some environment variables.
Simon Heimberg <simohe@besonet.ch> [Fri, 14 Feb 2014 00:36:44 +0100] rev 20602
tests: glob match has a glob character for not getting a warning on windows
When / matches on / on windows, and there is no other glob character, this
results in a warning. Avoid this by using an other glob character.
Simon Heimberg <simohe@besonet.ch> [Sun, 16 Feb 2014 23:41:24 +0100] rev 20601
run-tests: fixed warn detection on failures with too many output
The state "warned" was reported too often. The problem fixed here is that
warnonly was only reset when a line did not match. When there was a line too
much, warnonly remained set.
Fix this by setting more states to warnonly.
More negative testing (testing on result "Failed") has been done this time.
Simon Heimberg <simohe@besonet.ch> [Sun, 16 Feb 2014 23:36:02 +0100] rev 20600
run-tests: fixed warn detection on detecting warn only for lines
The state "warned" was reported too often. The main problem was that
"False == 0" is true in python. Therefore use an empty string instead of 0
for reporting warn only for a line.
The other problem is fixed in the next patch.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 27 Feb 2014 20:01:28 -0800] rev 20599
obsolete: extract encoding of marker for pushkey from the list key function
We now have a function taking a list and marker and returning an encoded
version. This will allow obsolescence marker exchange experimentation to easily
pushkey-encode markers to be pushed after selection.
Danek Duvall <danek.duvall@oracle.com> [Wed, 19 Feb 2014 13:46:49 -0800] rev 20598
solaris: diff -u emits "No differences encountered"
Solaris diff -u isn't silent when two files are identical, and tests that
don't account for that will fail. Fix those tests, and introduce a check
that prevents reintroduction.
Simon Heimberg <simohe@besonet.ch> [Fri, 14 Feb 2014 00:34:20 +0100] rev 20597
rebase: do not raise an UnboundLocalError when called wrong (
issue4106)
When the base is not found, we should not raise a traceback about a not defined
variable. This hides the real problem: the function rebasenode was (probably)
called wrong.
An AssertionError is raised to highlight that the caller of the function did
something wrong.
An alternative approach is to only assign None to the variable "base" and let
the merge mechanism raise an abort message. This was the behaviour for this
case before
ad9db007656f. But the only known case for this problem is when an
extension calls this function wrong. An AssertionError makes this clearer than
an abort message. When a different case is detected, the behaviour can be
improved then.
Siddharth Agarwal <sid0@fb.com> [Thu, 27 Feb 2014 19:56:36 -0800] rev 20596
exchange: fix docs for pulloperation
'remote' is actually the remote, not the repo one is pulling into. This
confused me quite a bit.
Matt Mackall <mpm@selenic.com> [Thu, 27 Feb 2014 18:57:03 -0600] rev 20595
merge with stable
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 25 Feb 2014 18:45:01 -0800] rev 20594
resolve: use "other" changeset from merge state (
issue4163)
We can use the "other" data from the recorded merge state instead of inferring
what the other could be from working copy parent. This will allow resolve to
fulfil its duty even when the second parent have been dropped.
Most direct benefit is fixing a regression in backout.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 25 Feb 2014 18:54:47 -0800] rev 20593
merge: add "other" file node in the merge state file
This data is mostly redundant with the "other" changeset node (+ other changeset
file path). However, more data never hurt.
The old format do not store it so this require some dancing to add and remove it
on demand.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 27 Feb 2014 14:14:57 -0800] rev 20592
merge: infer the "other" changeset when falling back to v1 format
When we have to fallback to the old version of the file, we infer the
"other" from current working directory parent. The same way it is currently done
in the resolve command. This is know to have shortcoming… but we cannot do
better from the data contained in the old file format. This is actually the
motivation to add this new file format.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 25 Feb 2014 18:42:11 -0800] rev 20591
merge: record the "other" node in merge state
We need to record the merge we were merging with. This solve multiple
bug with resolve when dropping the second parent after a merge. This
happen a lot when doing special merge (overriding the ancestor).
Backout, shelve, rebase, etc. can takes advantage of it.
This changeset just add the information in the merge state. We'll use it in the
resolve process in a later changeset.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 25 Feb 2014 18:37:06 -0800] rev 20590
merge: introduce new format for the state file
This new format will allow us to address common bugs while doing special merge
(graft, backout, rebase…) and record user choice during conflict resolution.
The format is open so we can add more record for future usage.
This file still store hexified version of node to help human willing to debug
it by hand. The overhead or oversize are not expected be an issue.
The old format is still used. It will be written to disk along side the newer
format. And at parse time we detect if the data from old version of the
mergestate are different from the one in the new version file. If its the same,
both have most likely be written at the same time and you can trust the extra
data from the new file. If it differs, the old file have been written by an
older version of mercurial that did not knew about the new file. In that case we
use the content of the old file.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 27 Feb 2014 12:59:41 -0800] rev 20589
merge: change the merge state serialisation to use a record based logic
The format of the file is unchanged. But we are preparing a new file with a new
format that would be record based. So we change all the read/write logic to
handle a list of record until a very low level. This will allow simple plugging
of the new format in the current code.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 25 Feb 2014 17:14:49 -0800] rev 20588
merge: move merge state file path into a constant
We are about to change the format. Having the file path in a single place make
it easier to update the filename for the new version.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Feb 2014 09:18:16 -0800] rev 20587
revset: changed spanset __add__ implementation to work lazily
$ time hg log -qr "first(0:tip or draft())"
...
real 0m1.032s
user 0m0.841s
sys 0m0.179s
$ time ./hg log -qr "first(0:tip or draft())"
...
real 0m0.378s
user 0m0.291s
sys 0m0.085s
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Feb 2014 09:00:25 -0800] rev 20586
revset: changed lazyset __add__ implementation to work lazily
Performance Benchmarking:
$ time hg log -qr "first(author(mpm) or branch(default))"
0:
9117c6561b0b
real 0m3.875s
user 0m3.818s
sys 0m0.051s
$ time ./hg log -qr "first(author(mpm) or branch(default))"
0:
9117c6561b0b
real 0m0.213s
user 0m0.174s
sys 0m0.038s
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 25 Feb 2014 10:32:54 -0800] rev 20585
obsstore: add a __len__ method
We can already use "for mark in store:" it make sense to allow
"len(store)" too.