Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 13 Dec 2012 15:38:43 +0100] rev 18068
obsolete: compute successors set
Successors set are an important part of obsolescence. It is necessary to detect
and solve divergence situation. This changeset add a core function to compute
them, a debug command to audit them and solid test on the concept.
Check function docstring for details about the concept.
Mads Kiilerich <mads@kiilerich.com> [Sun, 09 Dec 2012 00:25:21 +0100] rev 18067
mq: don't fail when removing a patch without patch file from series file
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 19:19:06 +0100] rev 18066
largefiles: align rm warnings with warnings used in core
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 21:34:55 +0100] rev 18065
merge with stable
Levi Bard <levi@unity3d.com> [Mon, 10 Dec 2012 14:58:42 +0100] rev 18064
largefiles: commit directories that only contain largefiles (issue3548)
If we pass a directory to commit whose only commitable files
are largefiles, the core commit code aborts before finding
the largefiles.
So we do the following:
For directories that only have largefiles as matches,
we explicitly add the largefiles to the matchlist and remove
the directory.
In other cases, we leave the match list unmodified.
Siddharth Agarwal <sid0@fb.com> [Fri, 07 Dec 2012 10:37:43 -0800] rev 18063
revset.children: ignore rev numbers that are too low
This replaces unnecessary parentrevs() calls with calculating min(parentset).
Even though the min operation is O(size of parentset), since parentrevs is
relatively expensive, this tradeoff almost always works in our favour. In a
repository with over 400,000 changesets, hg perfrevset "children(X)" takes:
Set X Before After
-1 0.51s 0.06s
-1000: 0.55s 0.08s
-10000: 0.56s 0.10s
-100000: 0.60s 0.25s
-100000:-99000 0.55s 0.19s
0:100000 0.60s 0.61s
all() 0.72s 0.74s
The relative performance is similar for Mercurial's own repository -- several
times faster in most cases, slightly slower for revisions close to 0 and
all().
Siddharth Agarwal <sid0@fb.com> [Thu, 06 Dec 2012 11:21:11 -0800] rev 18062
perf: add a command to measure revset performance
Bryan O'Sullivan <bos@serpentine.com> [Wed, 12 Dec 2012 15:17:18 -0800] rev 18061
run-tests: fix whitespace nonsense
Bryan O'Sullivan <bos@serpentine.com> [Wed, 12 Dec 2012 15:12:28 -0800] rev 18060
merge with mpm
Bryan O'Sullivan <bryano@fb.com> [Wed, 12 Dec 2012 14:52:58 -0800] rev 18059
run-tests: on windows, put correct python at front of PATH
The older approach of trying to copy the python executable into the test
directory was doomed to fail.
There remains one weakness with this approach: if you've run "make local",
tests may pick up the wrong extension DLLs from inside the source tree. I
don't know why this happens.
A reasonable workaround for now is to test either using --local or with
a working directory that does not contain built DLLs.
Siddharth Agarwal <sid0@fb.com> [Tue, 11 Dec 2012 15:38:42 -0800] rev 18058
run-tests: fix exename on Windows
Bryan O'Sullivan <bryano@fb.com> [Tue, 11 Dec 2012 15:13:23 -0800] rev 18057
run-tests: support running tests in parallel on windows
Previously, we used os.spawnvp, which doesn't exist on Windows, and
isn't needed anyway (the command line begins with an absolute path).
We also need a slightly more convoluted way to wait for processes
without specifying an order on Windows, as it lacks os.wait.
Bryan O'Sullivan <bryano@fb.com> [Tue, 11 Dec 2012 13:44:00 -0800] rev 18056
makefile: allow local builds to work on windows/mingw32
Mads Kiilerich <madski@unity3d.com> [Sun, 09 Dec 2012 23:33:16 +0100] rev 18055
check-code: make 'missing whitespace in assignment' more aggressive
New warnings:
> a.b=ab
missing whitespace in assignment
(the pattern did not accept '.' on the left hand side)
> a=a
missing whitespace in assignment
(the right hand side pattern never matched a single character)
> a=a + 7
missing whitespace in assignment
(the pattern only matched one character after the identifier following =)
Mads Kiilerich <madski@unity3d.com> [Sun, 09 Dec 2012 23:33:16 +0100] rev 18054
check-code: there must also be whitespace between ')' and operator
The check pattern only checked for whitespace between keyword and operator.
Now it also warns:
> x = f(),7
missing whitespace after ,
> x = f()+7
missing whitespace in expression
Mads Kiilerich <madski@unity3d.com> [Sun, 09 Dec 2012 23:33:16 +0100] rev 18053
rm: drop misleading 'use -f' hint for the rm --after 'not removing' warning
A warning mentioning 'forgetting' or 'recording delete' would be more correct
than 'not removing' but also more confusing.
Mads Kiilerich <madski@unity3d.com> [Sun, 09 Dec 2012 23:33:16 +0100] rev 18052
contrib: state explicitly how hgtest.vim can be installed
Mads Kiilerich <madski@unity3d.com> [Sun, 09 Dec 2012 23:33:16 +0100] rev 18051
tests: kill daemons early, making breaking at "Accept" prompt safe
Bryan O'Sullivan <bryano@fb.com> [Mon, 10 Dec 2012 12:14:55 -0800] rev 18050
run-tests: use correct python safely under --jobs
Bryan O'Sullivan <bryano@fb.com> [Mon, 10 Dec 2012 12:09:02 -0800] rev 18049
run-tests: check for the correct python when starting
Bryan O'Sullivan <bryano@fb.com> [Mon, 10 Dec 2012 12:07:42 -0800] rev 18048
run-tests: use correct python when run with --local
Bryan O'Sullivan <bryano@fb.com> [Mon, 10 Dec 2012 11:18:03 -0800] rev 18047
synthrepo: do not crash if a list is empty
Angel Ezquerra <angel.ezquerra@gmail.com> [Tue, 27 Nov 2012 22:24:02 +0100] rev 18046
hgwebdir: do not show RSS and Atom links for plain directories
Up until now the templates that show RSS and Atom feeds on the "repository
lists" (i.e. gitweb and monoblue) showed them for all entries, including regular
folders. Clicking on those "folder RSS" links would result in an error page
being shown.
This patch hides those links for regular folders.
Angel Ezquerra <angel.ezquerra@gmail.com> [Tue, 04 Dec 2012 00:37:50 +0100] rev 18045
hgweb: add branches RSS and Atom feeds
There were no RSS nor Atom feeds for the branches page. Different hgweb
templates linked to different feeds on their branches page (some linked to the
tags feed, some to the log feed and some to the unexisting branches feed).
Kevin Bullock <kbullock@ringworld.org> [Fri, 07 Dec 2012 12:03:37 -0600] rev 18044
push: reunite comment with the line of code it describes
Kevin Bullock <kbullock@ringworld.org> [Fri, 07 Dec 2012 11:30:38 -0600] rev 18043
bookmarks: spelling correction in docstring
Kevin Bullock <kbullock@ringworld.org> [Thu, 06 Dec 2012 22:07:44 -0600] rev 18042
merge: fix mistake in moved _checkcollision call from 5881d5b7552f
Matt Mackall <mpm@selenic.com> [Thu, 06 Dec 2012 16:56:44 -0600] rev 18041
windows: correctly pass a mode to S_IFMT in statfiles
Siddharth Agarwal <sid0@fb.com> [Wed, 05 Dec 2012 14:33:15 -0800] rev 18040
strip: make query to get new bookmark target cheaper
The current query to get the new bookmark target for stripped revisions
involves multiple walks up the DAG, and is really expensive, taking over 2.5
seconds on a repository with over 400,000 changesets even if just one
changeset is being stripped.
A slightly simplified version of the current query is
max(heads(::<tostrip> - <tostrip>))
We make two observations here.
1. For any set s, max(heads(s)) == max(s). That is because revision numbers
define a topological order, so that the element with the highest revision
number in s will not have any children in s.
2. For any set s, max(::s - s) == max(parents(s) - s). In other words, the
ancestor of s with the highest revision number not in s is a parent of one
of the revs in s. Why? Because if it were an ancestor but not a parent of s,
it would have a descendant that would be a parent of s. This descendant
would have a higher revision number, leading to a contradiction.
Combining these two observations, we rewrite the revset query as
max(parents(<tostrip>) - <tostrip>)
The time complexity is now linear in the number of changesets being stripped.
For the above repository, the query now takes 0.1 seconds when one changeset
is stripped. This speeds up operations that use repair.strip, like the rebase
and strip commands.
David Schleimer <dschleimer@fb.com> [Tue, 04 Dec 2012 12:54:18 -0800] rev 18039
graft: explicit current node tracking
This changes graft to explicitly track the progression of commits it
makes, and updates it's idea of the current node based on it's last
commit, rather than from the working copy parent. This should have no
effect on the value of current since we were reading the working copy
parent immediately after commiting to it.
The motivation for this change is that a subsequent patch will break
the current node and working copy relationship. Splitting this out
into a separate patch will make that one more readible.
David Schleimer <dschleimer@fb.com> [Tue, 04 Dec 2012 12:54:18 -0800] rev 18038
graft: move commit info building
This moves the logic for generating the commit metadata ahead of the
merge operation. The only purposae of this patch is to make
subsequent patches easier to read, and there should be no behavior
changes.
Matt Mackall <mpm@selenic.com> [Thu, 06 Dec 2012 16:42:15 -0600] rev 18037
merge with stable
David Schleimer <dschleimer@fb.com> [Tue, 04 Dec 2012 12:54:18 -0800] rev 18036
merge: support calculating merge actions against non-working contexts
This is not currently used. It is instead a pre-requisite to
performing non-conflicting grafts in memory, which a subsequent patch
will do.
David Schleimer <dschleimer@fb.com> [Tue, 04 Dec 2012 12:54:18 -0800] rev 18035
merge: refactor action calculation into function
This pulls the code used to calculate the changes that need to happen
during merge.update() into a separate function. This is not useful on
its own, but is instead preparatory to performing grafts in memory
when there are no potential conflicts.
Siddharth Agarwal <sid0@fb.com> [Mon, 03 Dec 2012 14:21:45 -0800] rev 18034
dirstate: inline more properties and methods in status
hg perfstatus -u on a working directory with 170,000 files, without this
change:
! wall 1.839561 comb 1.830000 user 1.120000 sys 0.710000 (best of 6)
With this change:
! wall 1.804222 comb 1.790000 user 1.140000 sys 0.650000 (best of 6)
hg perfstatus on the same directory, without this change:
! wall 1.016609 comb 1.020000 user 0.670000 sys 0.350000 (best of 10)
With this change:
! wall 0.985573 comb 0.980000 user 0.650000 sys 0.330000 (best of 10)
Siddharth Agarwal <sid0@fb.com> [Mon, 03 Dec 2012 13:53:53 -0800] rev 18033
perf: add option to perfstatus to get the status of unknown files
When status needs to look at unknown files (e.g. when running hg status), it
needs to use a completely different algorithm than when it doesn't (e.g. when
running hg diff).
Siddharth Agarwal <sid0@fb.com> [Tue, 04 Dec 2012 10:29:18 -0800] rev 18032
dirstate: test normalize is truthy instead of using a no-op lambda
hg perfstatus -u on a working directory with 170,000 files, without this
change:
! wall 1.869404 comb 1.850000 user 1.170000 sys 0.680000 (best of 6)
With this change:
! wall 1.839561 comb 1.830000 user 1.120000 sys 0.710000 (best of 6)
Kevin Bullock <kbullock@ringworld.org> [Tue, 04 Dec 2012 11:19:32 -0600] rev 18031
merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 06 Dec 2012 13:21:27 -0600] rev 18030
hgweb: avoid generator exhaustion with branches
Matt Mackall <mpm@selenic.com> [Wed, 05 Dec 2012 15:38:18 -0600] rev 18029
hgweb: fix iterator reuse in atom feed generation
Julien Cristau <julien.cristau@logilab.fr> [Tue, 04 Dec 2012 14:35:02 +0100] rev 18028
tests: don't hardcode errno==2 for ENOENT
Hurd seems to set ENOENT to 2 + 2**30, unlike everyone else.
Bryan O'Sullivan <bryano@fb.com> [Mon, 03 Dec 2012 13:17:01 -0800] rev 18027
osutil: tab damage, how i hate thee
Bryan O'Sullivan <bryano@fb.com> [Mon, 03 Dec 2012 12:40:24 -0800] rev 18026
osutil: write a C implementation of statfiles for unix
This makes a big difference to performance.
In a clean working directory containing 170,000 files, performance of
"hg --time diff" improves from 2.38 seconds to 1.69.
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 03 Dec 2012 19:37:36 -0200] rev 18025
merge with i18n
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 30 Nov 2012 21:39:01 +0900] rev 18024
i18n-ja: synchronized with f94ead934067
Matt Mackall <mpm@selenic.com> [Mon, 03 Dec 2012 14:03:57 -0600] rev 18023
Added signature for changeset 0c10cf819146
Matt Mackall <mpm@selenic.com> [Mon, 03 Dec 2012 14:03:52 -0600] rev 18022
Added tag 2.4.1 for changeset 0c10cf819146
Bryan O'Sullivan <bryano@fb.com> [Fri, 30 Nov 2012 17:40:11 -0800] rev 18021
osutil: fix tab damage
Bryan O'Sullivan <bryano@fb.com> [Fri, 30 Nov 2012 15:56:09 -0800] rev 18020
Merge with crew
Bryan O'Sullivan <bryano@fb.com> [Fri, 30 Nov 2012 15:55:09 -0800] rev 18019
osutil: factor out creation and init of listdir_stat
Bryan O'Sullivan <bryano@fb.com> [Fri, 30 Nov 2012 15:55:08 -0800] rev 18018
dirstate: avoid use of zip on big lists
In a clean working directory containing 170,000 tracked files, this
improves performance of "hg --time diff" from 1.69 seconds to 1.43.
This idea is due to Siddharth Agarwal.
Bryan O'Sullivan <bryano@fb.com> [Fri, 30 Nov 2012 15:55:07 -0800] rev 18017
dirstate: move file type filtering to its source
This prepares us to move to a much faster statfiles implementation on Unix.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 30 Nov 2012 22:34:21 +0100] rev 18016
clfilter: rename `unfilteredmeth` to `unfilteredmethod`
As originally intended.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 30 Nov 2012 21:47:04 +0100] rev 18015
clfilter: fix a false positive in the test-obsolete.t
We push between two repo which once filtered looks unrelated. Weakness in the
current implementation allows this push to be done without -f. But later
improvement with filtering will make this push fails for unrelatedness. However
we want this push to fail for including bumped changeset. So we had a smaller
push --force to make them related.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 08 Oct 2012 19:34:04 +0200] rev 18014
clfilter: ensure that filecache on localrepo is unfiltered
All filecache usage on repo is for logic that should be unfiltered. The
caches should be common to all filtered instances, and computation must
be done unfiltered. A dedicated storecache subclass is created for
this purpose.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 08 Oct 2012 20:02:20 +0200] rev 18013
clfilter: add a propertycache that must be unfiltered
Some of the localrepo property caches must be computed unfiltered and
stored globally. Some others must see the filtered version and store data
relative to the current filtering.
This changeset introduces two classes `unfilteredpropertycache`
and `filteredpropertycache` for this purpose. A new function
`hasunfilteredcache` is introduced for unambiguous checking for cached
values on unfiltered repos.
A few tweaks are made to the property cache class to allow overriding
the way the computed value is stored on the object.
Some logic relative to _tagcaches is cleaned up in the process.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 18:11:56 +0200] rev 18012
largefile: status is buggy on repoproxy, so run unfiltered
For some yet-unkown reason, largefile status does not work on
repoproxy. As status is not affected by filtering, we run it unfiltered.
Na'Tosha Bard's view on this issue:
"but, well, largefiles status is kind of an unholy piece of code"
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 20:01:40 +0200] rev 18011
clfilter: mq should not warn about filtered mq patches
MQ warns when qstatus contains unknown nodes. With changelog filtering,
a node may be unknown because it is filtered. Thus, an unfiltered repo
is used for this check.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 18:02:25 +0200] rev 18010
clfilter: ensure that mq performs commits on unfiltered repos
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 17:50:02 +0200] rev 18009
clfilter: use unfiltered repo for bookmark push logic
The remote location of the bookmark may be filtered locally. This
changeset ensures that bookmark movement logic has access to all the
repo's content.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 17:26:23 +0200] rev 18008
clfilter: `bookmark.validdest` should run on unfiltered repo
The logic recently added to `bookmark.validdest` uses data about obsolete
changesets to see if a bookmark destination is valid. Obsolete changesets
are likely to be filtered, so we need to work on an unfiltered repository.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 17:41:07 +0200] rev 18007
clfilter: unfilter some parts of the push logic
Computation of common changesets during push needs to be done on the
widest set possible. An unfiltered version of the repo is kept for
discovery and various revset calls. The discovery code itself enforces
the filtering of unserved outgoing changeset.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 30 Nov 2012 00:43:55 +0900] rev 18006
subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)
Color extension achieves colorization by overriding the class of
"ui" object just before command execution.
Before this patch, "diff()" of abstractsubrepo and classes
derived from it has no "ui" argument, so "diff()" of hgsubrepo
uses "self._repo.ui" to invoke "cmdutil.diffordiffstat()".
For separation of configuration between repositories, revision
573bec4ab7ba changed the initialization source of "self._repo.ui"
from "ui"(overridden) to "baseui"(plain) of parent repository.
And this caused break of colorization.
This patch adds "ui" argument to "diff()" of abstractsubrepo and
classes derived from it to pass "ui" object of caller side.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 17:15:08 +0200] rev 18005
clfilter: prevent unwanted warning about filtered parents as unknown
During changectx __init__ the dirstate's parents MAY be checked. If
the repo is filtered, this check will complain "working directory has
unknown parents" even if the parents are perfectly known.
This may happen when the repo is used for serving and the dirstate has
parents that are secret, as those secret changesets will be filtered.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 17:12:09 +0200] rev 18004
clfilter: strip logic should be unfiltered
Strip is a "write" operation that needs to be aware of the whole repo's
content before destroying changesets.
Only the low level function is altered. The top level command will still
process its argument filtered (if any filtering is in place).
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 17:08:52 +0200] rev 18003
clfilter: verify logic should be unfiltered
To verify a changelog obviously needs all of it. The verify logic now
ensures it works on an unfiltered repository.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 21 Nov 2012 00:53:45 +0100] rev 18002
clfilter: phases logic should be unfiltered
Phase computations and boundary movements need to be aware of all
revisions that exist in the repository to return correct results.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 16:55:00 +0200] rev 18001
clfilter: unfilter computation of obsolescence related computation
All obsolescence related sets need to be computed on the full unfiltered
version of the repository, in particular because several of them
(obsolete, extinct) are used to compute the hidden revisions.
On a filtered repo, revset predicates related to these sets will be
properly filtered because of revset's own pre-filtering.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 26 Nov 2012 19:24:11 +0100] rev 18000
clfilter: ensure changeset creation in the repo is run unfiltered
This applies to both creation of new commits and application of
changegroups.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 26 Nov 2012 19:23:25 +0100] rev 17999
clfilter: ensure changegroup generation is run unfiltered
Changegroup generation logic needs to be aware of the whole repository
to work properly.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 26 Nov 2012 19:21:24 +0100] rev 17998
clfilter: ensure `rollback` is run unfiltered
Rollback logic needs to be aware of the whole repository to work properly.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 26 Nov 2012 19:22:12 +0100] rev 17997
clfilter: ensure cache invalidation is done on the main unfiltered repo
The proxy version will not hold any cache for now. But we have to ensure
all cache operations are done on the unfiltered version.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 26 Nov 2012 19:26:24 +0100] rev 17996
clfilter: ensure that tag logic runs unfiltered
The current tag logic is not aware of filtering. We keep the status quo,
ensuring that the tag cache is computed as before: without any filtering.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 26 Nov 2012 19:25:44 +0100] rev 17995
clfilter: ensure `branchcache` logic runs unfiltered
The current branchcache construction is not aware of filtering. We keep
the status quo, ensuring that the branch cache logic is computed as
before: without any filtering.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 26 Nov 2012 19:11:13 +0100] rev 17994
clfilter: introduce an `unfilteredmethod` decorator
This decorator ensure the method in run on an unfiltered version of the
repository. See follow-up commit for details.
This decorator is not named `unfiltered` because it would clash with the
`unfilteredmethod` on `localrepo` itself.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 21 Nov 2012 00:36:29 +0100] rev 17993
clfilter: introduce an "unfiltered" method on localrepo
This commit is part of the changelog level filtering effort. It returns
the main "unfiltered" version of a repo-like object. For localrepo this
means the same localrepo object. But this method will be overwritten
by the filtered versions of a repository to return the core unfiltered
version of the repo.
Introducing this simple method first allows later commits to prepare
for the use of a filtered version of a repository.
A new repo method is added because a lot of users may call it. At the
end of this series of commits, about 40 calls exist in core and hgext.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 20 Nov 2012 19:05:46 +0100] rev 17992
clfilter: remove usage of `range` and `xrange` in scmutil.revrange
For changelog level filtering to take effect it need to be used for any
iteration.
This changeset removes usage of `range` and `xrange` that survived the first
pass.
Weiwen <weiwen@fb.com> [Mon, 12 Nov 2012 14:05:39 -0800] rev 17991
hgweb: display diff for a changeset against any parents (issue2810)
During merge of branches, it is useful to compare merge results against
the two parents. This change adds this support to hgweb. To specify
which parent to compare to, use rev/12300:12345 where 12300 is a
parent changeset number. Two links are added to changeset web page so
that one can choose which parent to compare to.
Tim Henigan <tim.henigan@gmail.com> [Thu, 29 Nov 2012 08:49:21 -0500] rev 17990
branch: add missing repo argument to checknewlabel
scmutil.checknewlabel takes a repo object as its first argument.
When the call to this function was added in e689b0d91546, the
first argument was mistakenly set to 'None'.
Augie Fackler <raf@durin42.com> [Thu, 29 Nov 2012 11:44:22 -0600] rev 17989
Merge with stable.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 29 Nov 2012 16:37:15 +0100] rev 17988
rebase: fix pull --rev options clashing with --rebase (issue3619)
Rebase also have a plain `--rev` option used to select the rebase set (as
`--base` or `--source` would). But the content of the --rev option was intended
for the remote repo and is irrelevant for the local rebase operation. We expect
`hg pull --rebase` to stick with the default behavior here:
hg rebase --base . --dest tip(branch(.))
The `rev` option is dropped from the option passed to rebase.
Tim Henigan <tim.henigan@gmail.com> [Thu, 29 Nov 2012 08:44:54 -0500] rev 17987
dirstate: remove obsolete comment from setbranch
This comment should have been removed in e689b0d91546, when the call
to scmutil.checknewlabel was removed.
Matt Mackall <mpm@selenic.com> [Wed, 28 Nov 2012 18:08:51 -0600] rev 17986
merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 28 Nov 2012 17:53:52 -0600] rev 17985
tests: fix broken fix of test-phases output
Tim Henigan <tim.henigan@gmail.com> [Tue, 27 Nov 2012 08:47:35 -0500] rev 17984
update: allow update to existing branches with invalid names (issue3710)
Starting with 361ab1e2086f, users are no longer able to update a
working copy to a branch named with a "bad" character (such as ':').
Prior to v2.4, it was possible to create branch names using "bad"
characters, so this breaks backwards compatibility.
Mercurial must allow users to update to existing branches with bad
names. However, it should continue to prevent the creation of new
branches with bad names.
A test was added to confirm that 'hg update' works as expected. The
test uses a bundled repo that was created with an earlier version of
Mercurial.
Durham Goode <durham@fb.com> [Mon, 19 Nov 2012 16:05:40 -0800] rev 17983
commit: increase perf by building a new addlist instead of editing the old one
When commiting to a repo with lots of files (>170000),
manifest.py:addlistdelta takes some time because it's editing a large
array many times. Changing it to build a new array instead of editing
the old one saves around 0.04 seconds on a 1.64 second commit. A 2.5%
gain.
The gain here is pretty minor, but it was blatantly at the top of the
profiler report and the fix is straight forward.
I tested it by comparing the arrays produced by the new and old logic
while running all of the tests.
Weiwen <weiwen@fb.com> [Wed, 28 Nov 2012 14:55:42 -0800] rev 17982
template engine: convert generator-based iterator to list-based iterator
If a template iterator is implemented with generator, the iterator is exhau=
sted
after we use it. This leads to undesired behavior in template. This chang=
e
converts a generator-based iterator to list-based iterator when template en=
gine
first detects a generator-based iterator. All future usages of iterator wi=
ll
use list instead.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 28 Nov 2012 11:20:56 +0100] rev 17981
command: remove phase from the list of basic command
This is not a basic command. There is no reason new user should needs to know
about it. Thanks to Matt Mackall for pointing this.
Matt Mackall <mpm@selenic.com> [Wed, 28 Nov 2012 16:15:05 -0600] rev 17980
merge with stable
André Sintzoff <andre.sintzoff@gmail.com> [Sun, 25 Nov 2012 20:39:37 +0100] rev 17979
phases: fix missing "error" module import (issue3707)
Adrian Buehlmann <adrian@cadifra.com> [Thu, 08 Nov 2012 11:54:08 +0100] rev 17978
test-mq-qrefresh: test that the patch at qtip is indeed empty
...after qrefreshing a non-existent file
Matt Mackall <mpm@selenic.com> [Mon, 26 Nov 2012 15:59:02 -0600] rev 17977
tests: only call check-code once
The accepted warnings list is now empty, let's try to keep it that way.
Siddharth Agarwal <sid0@fb.com> [Wed, 28 Nov 2012 10:35:12 -0800] rev 17976
ancestor: fix a comment (followup to 0b03454abae7)
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 21 Nov 2012 00:42:05 +0100] rev 17975
revlog: allow reverse iteration with revlog.revs
We often need to perform rev iteration in reverse order. This
changeset makes it possible to do so, in order to avoid costly reverse
or reversed() calls later.
Julian Cowley <julian@lava.net> [Sun, 18 Nov 2012 12:26:50 -1000] rev 17974
convert: add config option to use the local time zone
The default for the time zone offset in a converted changeset has
always been 0 (UTC). With this patch, the converted changeset is
modified so that the local offset from UTC is specified as the time
zone offset.
The option is specified as the boolean convert.localtimezone (default
False). Example usage:
hg convert -s cvs --config convert.localtimezone=True example-cvs example-hg
IMPORTANT: the patch only applies to conversions from cvs or svn.
The documentation for the option only appears in those two sections
in the convert help text.
Siddharth Agarwal <sid0@fb.com> [Tue, 27 Nov 2012 16:24:21 -0800] rev 17973
rebase: use revlog.findmissingrevs to compute detach set
Siddharth Agarwal <sid0@fb.com> [Mon, 26 Nov 2012 10:48:24 -0800] rev 17972
revlog: add rev-specific variant of findmissing
This will be used by rebase in an upcoming commit.
Siddharth Agarwal <sid0@fb.com> [Mon, 26 Nov 2012 11:02:48 -0800] rev 17971
revlog: switch findmissing to use ancestor.missingancestors
This also speeds up other commands that use findmissing, like
incoming and merge --preview. With a large linear repository (>400000
commits) and with one incoming changeset, incoming is sped up from
around 4-4.5 seconds to under 3.
Siddharth Agarwal <sid0@fb.com> [Mon, 26 Nov 2012 11:46:51 -0800] rev 17970
ancestor: faster algorithm for difference of ancestor sets
One of the major reasons rebase is slow in large repositories is
the computation of the detach set: the set of ancestors of the
changesets to rebase not in the destination parent. This is currently
done via a revset that does two walks all the way to the root of
the DAG. Instead of doing that, to find ancestors of a set <revs>
not in another set <common> we walk up the tree in reverse revision
number order, maintaining sets of nodes visited from <revs>, <common>
or both.
For the common case where the sets are close both topologically and
in revision number (relative to repository size), this has been
found to speed up rebase by around 15-20%. When the nodes are farther
apart and the DAG is highly branching, it is harder to say which
would win.
Here's how long computing the detach set takes in a linear repository
with over 400000 changesets, rebasing near tip:
Rebasing across 4 changesets
Revset method: 2.2s
New algorithm: 0.00015s
Rebasing across 250 changesets
Revset method: 2.2s
New algorithm: 0.00069s
Rebasing across 10000 changesets
Revset method: 2.4s
New algorithm: 0.019s
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 23 Nov 2012 11:59:44 -0500] rev 17969
bisect: add example for limiting bisection to specified directories
The bisect command does not have an option to limit itself only to
subdirectories, but it's possible to use revsets for the --skip option
for the same effect. Given the relative obscurity of revsets, it helps
to have this as another example for bisect.
Bryan O'Sullivan <bryano@fb.com> [Tue, 27 Nov 2012 14:58:00 -0800] rev 17968
subrepo: use posixpath when diffing, for consistent paths
This fixes a Windows failure in test-subrepo-recursion.t introduced
by c84ef0047a94.
Bryan O'Sullivan <bryano@fb.com> [Tue, 27 Nov 2012 13:09:05 -0800] rev 17967
run-tests: fix an unnoticed check-code violation
Bryan O'Sullivan <bryano@fb.com> [Tue, 27 Nov 2012 11:18:33 -0800] rev 17966
run-tests: add a --compiler option
Without this option, it is not possible to run the test suite on Windows
using mingw's gcc as the compiler.
Bryan O'Sullivan <bryano@fb.com> [Tue, 27 Nov 2012 11:18:31 -0800] rev 17965
run-tests: make build command line less intimidating
Use a dict for parameters to the format string, instead of a
ridiculous number of positional parameters.
Matt Mackall <mpm@selenic.com> [Mon, 26 Nov 2012 17:48:39 -0600] rev 17964
hooks: be even more forgiven of non-fd descriptors (issue3711)
Looks like there are instances where sys.stdout/stderr contain file
handles that are invalid. We should be tolerant of this for hook I/O
redirection, as our primary concern is not garbling our own output stream.
Matt Mackall <mpm@selenic.com> [Mon, 26 Nov 2012 16:14:22 -0600] rev 17963
hooks: delay I/O redirection until we actually run a hook (issue3711)
We were attempting to redirect I/O even if no hook was actually
getting called. This defers redirection until we've found something to
do.
Matt Mackall <mpm@selenic.com> [Mon, 26 Nov 2012 15:42:52 -0600] rev 17962
util: make chunkbuffer non-quadratic on Windows
The old str-based += collector performed very nicely on Linux, but
turns out to be quadratically expensive on Windows, causing
chunkbuffer to dominate in profiles.
This list-based version has been measured to significantly improve
performance with large chunks on Windows, with negligible overall
overhead on Linux (though microbenchmarks show it to be about 50% slower).
This may increase memory overhead where += didn't behave quadratically. If we
want to gather up 1G of data to join, we temporarily have 1G in our
list and 1G in our string.
Matt Mackall <mpm@selenic.com> [Mon, 26 Nov 2012 13:44:11 -0600] rev 17961
revset: backed out changeset 54cedee86e51
This was causing clones of the hg repo to go from 12.4s to 14.7s.
Andrew Shadura <bugzilla@tut.by> [Wed, 07 Nov 2012 14:49:44 +0100] rev 17960
hgk: specify some colours explicitly in hex
Tk 8.6b3 uses web colours, where green is defined as #008000, not #00ff00, and grey
is #c0c0c0, not #808080, so specify those colours explicitly.
Andrew Shadura <bugzilla@tut.by> [Tue, 16 Oct 2012 22:19:08 +0200] rev 17959
hgk: no committer please
Generate committer only if we really have it.
Update test-hgk.t accordingly.
Andrew Shadura <bugzilla@tut.by> [Tue, 16 Oct 2012 14:54:51 +0200] rev 17958
hgk: use Ttk instead of plain Tk
Use Ttk (themed Tk) for most of the widgets. Default to xpnative theme on
Windows, clam otherwise.
Provide a shim for Tk 8.4 without Tile/Ttk.
Matt Mackall <mpm@selenic.com> [Sun, 25 Nov 2012 13:57:00 -0600] rev 17957
check-code: move i18n check from warning to error
Matt Mackall <mpm@selenic.com> [Sun, 25 Nov 2012 13:53:47 -0600] rev 17956
i18n: wrap false positives for translation detection
Bryan O'Sullivan <bryano@fb.com> [Tue, 20 Nov 2012 14:21:56 -0800] rev 17955
eol: don't refer to a random name-captured ui object
Previously, we used a ui object captured at the time of monkeypatching.
Bryan O'Sullivan <bryano@fb.com> [Tue, 20 Nov 2012 11:52:47 -0800] rev 17954
mq: don't refer to a random name-captured repo object
Previously, we used a repo object captured at the time of monkeypatching.
Bryan O'Sullivan <bryano@fb.com> [Tue, 20 Nov 2012 10:09:06 -0800] rev 17953
Merge with crew-stable
Durham Goode <durham@fb.com> [Fri, 16 Nov 2012 15:39:12 -0800] rev 17952
commit: increase perf by avoiding checks against entire repo subsets
When commiting to a repo with lots of history (>400000 changesets)
checking the results of revset.py:descendants against the subset takes
some time. Since the subset equals the entire changelog, the check
isn't necessary. Avoiding it in that case saves 0.1 seconds off of
a 1.78 second commit. A 6% gain.
We use the length of the subset to determine if it is the entire repo.
There is precedence for this in revset.py:stringset.
Durham Goode <durham@fb.com> [Fri, 16 Nov 2012 15:39:12 -0800] rev 17951
commit: increase perf by avoiding unnecessary filteredrevs check
When commiting to a repo with lots of history (>400000 changesets)
the filteredrevs check (added with 5c89e7fa5bc2) in changelog.py
takes a bit of time even if the filteredrevs set is empty. Skipping
the check in that case shaves 0.36 seconds off a 2.14 second commit.
A 17% gain.
Kevin Bullock <kbullock@ringworld.org> [Fri, 16 Nov 2012 10:20:32 -0600] rev 17950
merge with crew-stable
Kevin Bullock <kbullock@ringworld.org> [Thu, 15 Nov 2012 11:27:30 -0600] rev 17949
grep: remove useless while condition
A revised version of 35ba170c0f82 was sent to the list that fixed this
<http://markmail.org/message/jmfuiise5igcyh2m>, but the older version of
the patch was applied.
Kevin Bullock <kbullock@ringworld.org> [Fri, 16 Nov 2012 10:01:26 -0600] rev 17948
merge with mpm
Bryan O'Sullivan <bryano@fb.com> [Thu, 15 Nov 2012 22:24:36 -0800] rev 17947
test-pathencode: more aggressively check for python < 2.6
Guillermo Pérez <bisho@fb.com> [Thu, 15 Nov 2012 15:16:41 -0800] rev 17946
diff: move index header generation to patch
In an upcoming patch, we will add index information to all git diffs, not
only binary diffs, so this code needs to be moved to a more appropriate
place.
Also, since this information is used for patch headers, it makes more
sense to be in the patch module, along with other patch-related metadata.
Guillermo Pérez <bisho@fb.com> [Thu, 15 Nov 2012 15:06:32 -0800] rev 17945
patch: make _addmodehdr a function under trydiff
addmodehdr is a header helper, same as diffline, so it doesn't
need to be a top-level function and can be nested under trydiff.
In upcoming patches we will generalize this approach for
all headers.
Guillermo Pérez <bisho@fb.com> [Thu, 15 Nov 2012 13:57:03 -0800] rev 17944
diff: rewrite diffline
Make diffline more readable, using strings with placeholders
rather than appending to a list from many ifs that makes
difficult to understand the actual output format.
Guillermo Pérez <bisho@fb.com> [Thu, 15 Nov 2012 13:52:51 -0800] rev 17943
diff: swap and simplify diffline args
Args order swapped, since a, b are more important than revs
(which is only used on non-git format), and change to read opts
from context.
Guillermo Pérez <bisho@fb.com> [Thu, 15 Nov 2012 13:49:04 -0800] rev 17942
diff: change how quiet mode supresses diffline
Before, quiet mode produced no diffline header for mercurial as a
side effect of not populating "revs". This was a weird side effect,
and we will always need revs for git index header that will be added
in upcoming patches, so now we just check ui.quiet from diffline
directly.
Guillermo Pérez <bisho@fb.com> [Thu, 15 Nov 2012 12:19:03 -0800] rev 17941
diff: move diffline to patch module
diffline is not part of diff computation, so it makes more sense
to place it with other header generation in patch module.
In upcoming patches we will generalize this approach for
all headers added in the patch, including the git index
header.
Guillermo Pérez <bisho@fb.com> [Thu, 15 Nov 2012 12:16:08 -0800] rev 17940
diff: unify calls to diffline
diffline was called from trydiff for binary diffs and from unidiff
for text diffs. In this patch we unify those calls into one.
diffline is also a header, not part of diff mechanisms, so it makes
sense to remove that responsibility from the mdiff module. In
upcoming patches we will move diffline to patch module and
keep grouping responsibilities.
Guillermo Pérez <bisho at fb.com> [Tue, 06 Nov 2012 14:04:05 -0800] rev 17939
diff: move b85diff to mdiff module
b85diff generates a binary diff, so we move this code to mdiff module
along with unidiff for text diffs. All diffing mechanisms will be in the
same place.
In an upcoming patch we will remove the responsibility to print the
index header from b85diff and move it back to patch, since it's
a patch metadata header, not part of the diff generation.
simon@laptop-tosh [Sat, 27 Oct 2012 12:38:59 +0200] rev 17938
share: always set default path to work with subrepos (issue3518)
set the default path in any case because creating subrepo looks this up.
Subrepos are cloned, not shared.
Adrian Buehlmann <adrian@cadifra.com> [Sat, 03 Nov 2012 10:40:36 +0100] rev 17937
vfs: optimize __call__ by not calling util.split for reads
dirname and basename are not used on reads
Matt Mackall <mpm@selenic.com> [Wed, 14 Nov 2012 18:08:39 -0600] rev 17936
run-tests: backout 4a4173519b63
This deleted work in progress to eliminate child processes for -j.
Bryan O'Sullivan <bryano@fb.com> [Thu, 15 Nov 2012 10:55:32 -0800] rev 17935
test-pathencode: make a 2.4-safe import of collections
Bryan O'Sullivan <bryano@fb.com> [Thu, 15 Nov 2012 10:04:29 -0800] rev 17934
tests: add a randomized test for pathencode
This is a probabilistic test - it generates different test cases on every
run, unless invoked from the command line with a specific seed.
The default number of tests run should make the tests take about a
second to complete on a semi-modern laptop.
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Mon, 29 Oct 2012 10:53:46 -0400] rev 17933
webcommands: allow hgweb's archive to recurse into subrepos
Currently when obtaining an archive snapshot of a repository via the
web interface, subrepositories are not taken in the snapshot. I
introduce an option, archivesubrepos, which allows this.
Augie Fackler <raf@durin42.com> [Tue, 13 Nov 2012 19:32:53 -0600] rev 17932
Merge with crew-stable.
Idan Kamara <idankk86@gmail.com> [Mon, 12 Nov 2012 19:27:03 +0200] rev 17931
grep: don't search past the end of the searched string
'*' causes the resulting RE to match 0 or more repetitions of the preceding RE:
>>> bool(re.search('.*', ''))
>>> True
This causes an infinite loop because currently we're only checking if there was
a match without looking at where we are in the searched string.
Bryan O'Sullivan <bryano@fb.com> [Tue, 13 Nov 2012 13:09:42 -0800] rev 17930
convert: fix a too-long line nag
YaNan Xu <robot9@fb.com> [Mon, 29 Oct 2012 17:40:13 -0700] rev 17929
convert: add support for converting git submodule (issue3528)
Previously, convert aborted upon encountering a git submodule. This patch
changes it so that it now succeeds. It modifies convert_git to manually generate
'.hgsub' and '.hgsubstate' files for each git revision, so as to convert git sub
modules to non-mercurial subrepositories.
Siddharth Agarwal <sid0@fb.com> [Thu, 08 Nov 2012 14:10:04 -0800] rev 17928
run-tests.py: remove runqueue's results parameter since it is now a global
Bryan O'Sullivan <bryano@fb.com> [Tue, 13 Nov 2012 09:56:09 -0800] rev 17927
makefile: don't use system hgrc when running hg in-place
This suppresses the printing of spurious error messages if a global
hgrc refers to extensions that the in-place hg can't access.
Bryan O'Sullivan <bryano@fb.com> [Tue, 13 Nov 2012 09:55:26 -0800] rev 17926
setup: print subprocess stderr if there is any
I just spent 1.5 days trying to debug a failing buildbot because
setup.py was silently dropping the errors that were being printed
by in-place hg.
Siddharth Agarwal <sid0@fb.com> [Sat, 10 Nov 2012 11:37:41 -0800] rev 17925
run-tests: open child-parent pipes in binary mode
Python's pickle is a binary format.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 13 Nov 2012 08:41:56 -0800] rev 17924
amend: force editor only if old message is reused (issue3698)
This regression was added by 9732473aa24b. It triggered the editor even if
--message or --logfile were provided.
Idan Kamara <idankk86@gmail.com> [Mon, 12 Nov 2012 19:27:03 +0200] rev 17923
grep: don't search past the end of the searched string
'*' causes the resulting RE to match 0 or more repetitions of the preceding RE:
>>> bool(re.search('.*', ''))
>>> True
This causes an infinite loop because currently we're only checking if there was
a match without looking at where we are in the searched string.
Augie Fackler <raf@durin42.com> [Wed, 07 Nov 2012 16:21:39 -0600] rev 17922
bookmarks: introduce a bmstore to manage bookmark persistence
Bookmarks persistence still showed a fair amount of its legacy as a
monkeypatching extension. This encapsulates all bookmarks
serialization and parsing in a single class, and offers a single
location where other bookmarks storage engines can be substituted
in. As a result, many files no longer import the bookmarks module,
which strikes me as an encapsulation win.
This doesn't do anything to the current bookmark state yet, but I'm
hoping put that in the bmstore class as well.
Siddharth Agarwal <sid0@fb.com> [Fri, 09 Nov 2012 14:49:30 -0800] rev 17921
run-tests: add --time option to log times for each test
--time also prints out the wall-clock time each test takes in descending order.
Siddharth Agarwal <sid0@fb.com> [Fri, 09 Nov 2012 15:09:35 -0800] rev 17920
run-tests: remove resultslock since it serves no useful purpose
Each child process has its own copy of the results dict, so all access to the results dict is serial.
Siddharth Agarwal <sid0@fb.com> [Fri, 09 Nov 2012 14:42:36 -0800] rev 17919
run-tests: use pickle to send results from children to parent
JSON would probably be preferable, but it isn't available for Python 2.4 or 2.5.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 24 Oct 2012 18:11:17 +0200] rev 17918
bookmark: remove useless line in `validdest`
This case is already covered by the `if old == new:` conditional at the start of
the function.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 24 Oct 2012 17:55:21 +0200] rev 17917
bookmark: issue a single call to `allsuccessors` per loop
Update to this code was minimalist when `allsuccessors` argument were changed
from a list to a set. As this code is getting my attention again I realised we
can drastically simplify this part of the code by issue a single call to
`allsuccessors`.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 24 Oct 2012 17:26:40 +0200] rev 17916
bookmark: simplify mutability check in `validdest`
There is no need to check phase by hand. We already have a ctx method for that.
Bryan O'Sullivan <bryano@fb.com> [Wed, 07 Nov 2012 09:59:46 -0800] rev 17915
Merge with stable
Bryan O'Sullivan <bryano@fb.com> [Tue, 06 Nov 2012 16:49:54 -0800] rev 17914
Merge with mpm
Tomasz Kleczek <tkleczek@fb.com> [Wed, 31 Oct 2012 16:23:23 -0700] rev 17913
bundle: add revset expression to show bundle contents (issue3487)
bundle() revset expression returns all changes that are present
in the bundle file (no matter whether they are in the repo or not).
Bundle file should be specified via -R option.
Matt Mackall <mpm@selenic.com> [Tue, 06 Nov 2012 17:38:22 -0600] rev 17912
tags: add formatter support
Matt Mackall <mpm@selenic.com> [Tue, 06 Nov 2012 17:30:49 -0600] rev 17911
manifest: add formatter support
Matt Mackall <mpm@selenic.com> [Tue, 06 Nov 2012 17:30:47 -0600] rev 17910
status: use condwrite to avoid zero-width format string hack
Matt Mackall <mpm@selenic.com> [Sat, 03 Nov 2012 14:37:50 -0500] rev 17909
formatter: add condwrite method
This makes handling conditional output tidier
Simon Heimberg <simohe@besonet.ch> [Wed, 24 Oct 2012 23:09:31 +0200] rev 17908
run-tests: skip unnecessary operations on the args in the child proces
The arguments are already sorted and never empty.
Adrian Buehlmann <adrian@cadifra.com> [Fri, 02 Nov 2012 20:47:03 +0100] rev 17907
test-subrepo: adapt for Windows after 17c030014ddf
Fixes
@@ -606,7 +606,7 @@
issue3276_ok
$ rm repo/s/b
$ hg -R repo revert --all
- reverting repo/.hgsubstate
+ reverting repo\.hgsubstate
reverting subrepo s
$ hg -R repo update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
on Windows
Adrian Buehlmann <adrian@cadifra.com> [Fri, 02 Nov 2012 20:22:09 +0100] rev 17906
test-mq-qrefresh: adapt for Windows after 39b7052b217b
Fixes
@@ -208,7 +208,7 @@
$ echo 'orphan' > orphanchild
$ hg add orphanchild
$ hg qrefresh nonexistentfilename # clear patch
- nonexistentfilename: No such file or directory
+ nonexistentfilename: The system cannot find the file specified
$ hg qrefresh --short 1/base
$ hg qrefresh --short 2/base
on Windows
Matt Mackall <mpm@selenic.com> [Thu, 01 Nov 2012 16:30:48 -0500] rev 17905
merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 01 Nov 2012 16:09:21 -0500] rev 17904
Added signature for changeset 195ad823b5d5
Matt Mackall <mpm@selenic.com> [Thu, 01 Nov 2012 16:09:17 -0500] rev 17903
Added tag 2.4 for changeset 195ad823b5d5
Matt Mackall <mpm@selenic.com> [Thu, 01 Nov 2012 14:59:55 -0500] rev 17902
tests: fix test for issue3581 for vfat on Linux
Keegan Carruthers-Smith <keegancsmith@fb.com> [Tue, 30 Oct 2012 17:23:51 -0700] rev 17901
filemerge: only run test for issue3581 on non-windows environments
Adrian Buehlmann <adrian@cadifra.com> [Thu, 01 Nov 2012 13:46:03 +0100] rev 17900
openpath: specify binary mode and use util.posixfile
follow-up to 0e2846b2482c
Wagner Bruna <wbruna@softwareexpress.com.br> [Thu, 01 Nov 2012 11:37:40 -0200] rev 17899
i18n-pt_BR: synchronized with afa7e6fa820b
Matt Mackall <mpm@selenic.com> [Wed, 31 Oct 2012 16:34:36 -0500] rev 17898
merge with i18n
Wagner Bruna <wbruna@softwareexpress.com.br> [Wed, 31 Oct 2012 11:13:44 -0200] rev 17897
i18n-pt_BR: synchronized with 36ed69d4593d
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 31 Oct 2012 18:44:40 +0900] rev 17896
i18n-ja: synchronized with 0188ddfa844e
Simon Heimberg <simohe@besonet.ch> [Wed, 24 Oct 2012 18:45:22 +0200] rev 17895
subrepo: only do clean update when overwrite is set (issue3276)
Files in a subrepo were overwritten on update. But this should only happen on a
clean update (example: -C is specified).
Use the overwrite parameter introduced for svn subrepos in c19b9282d3a7 to
decide whether to merge changes (as update) or remove them (as clean).
The new function hg.updaterepo is intruduced to keep all update calls in hg.
test-subrepo.t is extended to test if an untracked file is overwritten
(issue3276). (Update -C is already tested in many places.)
The first two chunks are debugging output which has changed. (Because overwrite
is not always true anymore for subrepos)
All other tests still pass without any change.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 31 Oct 2012 03:59:28 +0900] rev 17894
i18n: change output of largefiles for summary to distinguish from one for outgoing
Before this patch, largefiles extension uses "largefiles: No remote
repo" message not only for "outgoing" as status report, but also for
"summary" as summarized information.
This sharing prevents message translators from inserting white spaces
between "largefiles:" and "No remote repo" in translated message to
align column position of summarized information.
This patch changes output of largefiles for summary to distinguish
from one for outgoing.
This patch puts "no remote repo" into parentheses, because this is not
summarized information.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 31 Oct 2012 03:59:28 +0900] rev 17893
i18n: make column positioning message of MQ summary output translatable
Before this patch, one of column positioning messages of MQ summary
output is not translatable, and patches are always listed up at fixed
column position like below, when patch queue is not empty:
mq: 1 applied, 1 unapplied
But column positioning messages for other summarized information are
translatable, so other information may be displayed at different
column position on non-English locale environments.
This patch makes column positioning message of MQ summary output
translatable.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 31 Oct 2012 03:59:28 +0900] rev 17892
i18n: add "i18n" comment to column positioning messages of "hg summary"
This comment makes it easier to distinguish such messages from others
for message translators.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 31 Oct 2012 03:59:27 +0900] rev 17891
i18n: add "i18n" comment to column positioning messages of "hg log"
This comment makes it easier to distinguish such messages from others
for message translators.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 31 Oct 2012 03:59:27 +0900] rev 17890
i18n: add "i18n" comment to error messages of template functions
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 31 Oct 2012 16:50:22 +0900] rev 17889
icasefs: make case-folding collision detection as deletion aware (issue3648)
Before this patch, case-folding collision is checked simply between
manifests of each merged revisions.
So, files may be considered as colliding each other, even though one
of them is already deleted on one of merged branches: in such case,
merge causes deleting it, so case-folding collision doesn't occur.
This patch checks whether both of files colliding each other still
remain after merge or not, and ignores collision if at least one of
them is deleted by merge.
In the case that one of colliding files is deleted on one of merged
branches and changed on another, file is considered to still remain
after merge, even though it may be deleted by merge, if "deleting" of
it is chosen in "manifestmerge()".
This avoids fail to merge by case-folding collisions after choices
from "changing" and "deleting" of files.
This patch adds only tests for "removed remotely" code paths in
"_remains()", because other ones are tested by existing tests in
"test-casecollision-merge.t".
Durham Goode <durham@fb.com> [Tue, 30 Oct 2012 13:19:06 -0700] rev 17888
mq: fix qrefresh case sensitivity (issue3271)
When calling qrefresh with filenames, the filenames were being
treated as case-sensistive on case-insensitive file systems.
So 'qrefresh foo' would not match file 'Foo', and it failed silently.
This fix makes it work correctly on case-insensitive file systems.
Previously the matching function was applied directly to the filenames.
Now we apply the matching function through repo.status, which handles
the case logic for us. A side effect of using repo.status is that
if the qrefresh file doesn't exist, there is output stating it
doesn't exist.
Adds a test to an existing mq refresh case test.
Siddharth Agarwal <sid0@fb.com> [Wed, 17 Oct 2012 21:30:08 -0700] rev 17887
url: use open and not url.open for local files (issue3624)
Matt Mackall <mpm@selenic.com> [Tue, 30 Oct 2012 18:48:44 -0500] rev 17886
revset: accept @ in unquoted symbols (issue3686)
Keegan Carruthers-Smith <keegancsmith@fb.com> [Fri, 26 Oct 2012 12:02:58 -0700] rev 17885
filemerge: use util.shellquote when calling merge (issue3581)
Matt Mackall <mpm@selenic.com> [Tue, 30 Oct 2012 16:46:52 -0500] rev 17884
merge with i18n
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 23 Oct 2012 11:40:48 -0200] rev 17883
i18n-pt_BR: synchronized with 71c1513fd560
Adrian Buehlmann <adrian@cadifra.com> [Mon, 29 Oct 2012 14:02:30 +0100] rev 17882
clone: show status "updating to bookmark @"
if bookmark @ is not on the default branch, we show
updating to bookmark @ on branch <name>
Adrian Buehlmann <adrian@cadifra.com> [Sun, 28 Oct 2012 14:16:16 +0100] rev 17881
test-clone: fix directory level
92980a8dfdfe inserted a "cd a" but didn't restore the previous directory.
Julian Cowley <julian@lava.net> [Sun, 28 Oct 2012 05:44:50 -1000] rev 17880
patchbomb: -c is not an alias for the --confirm option
The help text shows "-c/--confirm", which implies that -c is an alias
for --confirm. Actually, it is an alias for --cc. Correct the text
by removing -c.
Bryan O'Sullivan <bryano@fb.com> [Tue, 23 Oct 2012 21:25:22 -0700] rev 17879
dirstate: handle dangling junctions on windows (issue2579)
Matt Harbison <matt_harbison@yahoo.com> [Tue, 23 Oct 2012 21:32:19 -0400] rev 17878
largefiles: don't copy largefiles from working dir to the store while converting
Previously, if one or more largefiles for a repo being converted were not in the
usercache, the convert would abort with a reference to the largefile being
missing (as opposed to the previous patch, where the standin was referenced as
missing). This is because commitctx() tries to copy all largefiles to the
local store, first from the user cache, and if the file isn't found there, from
the working directory. No files will exist in the working directory during a
convert, however. It is not sufficient to force the source repo to be local
before proceeding, because clone and pull do not download largefiles by default.
This is slightly less than ideal because while the conversion will now complete,
it won't be possible to update to revs with missing largefiles unless the user
intervenes manually, because there is no default path pointing back to the
source repo. Ideally these files would be cached during the conversion.
This check could have been done in reposetup.commitctx() instead, but this
ensures the local store directory is created, which is necessary to enable the
standin matcher.
The rm -> 'rm -f' change in the test is to temporarily suppress an error
clearing the cache- as noted, the cache is is not repopulated during convert.
When that is fixed, this can be changed back and the verification errors will
disappear too.
Matt Harbison <matt_harbison@yahoo.com> [Tue, 23 Oct 2012 21:07:14 -0400] rev 17877
largefiles: respect the rev when reading standins in copytostore() (issue3630)
When the rev isn't specified, the standin for the working copy gets read. But
convert doesn't update the working copy for each cset it processes, so there is
no standin and the 'hg convert' would abort complaining about the standin being
missing.
Note that if the largefile is not in the user cache, 'hg convert' complains
about the largefile itself missing from the destination repo.
Simon Heimberg <simohe@besonet.ch> [Wed, 10 Oct 2012 01:18:06 +0200] rev 17876
subrepo: subrepo isolation, pass baseui when cloning a new subrepo (issue2904)
Create the repo with baseui because it should only get the global configuration.
After this patch issue2904 is finally fixed.
Simon Heimberg <simohe@besonet.ch> [Thu, 04 Oct 2012 19:46:43 +0200] rev 17875
subrepo: more isolation, only use ui for hg.peer when there is no repo
ui contains repo specific configuration, so do not use it when there is a repo.
But pass it to hg.peer when there is no repo. Then it only contains global
configuration.
Simon Heimberg <simohe@besonet.ch> [Sat, 28 Jul 2012 23:28:36 +0200] rev 17874
peer: subrepo isolation, pass repo instead of repo.ui to hg.peer
Do not pass ui because it contains the configuration of the repo. It is the
same object as repo.ui.
When a repo is passed to hg.peer, the global configuration is read from
repo.baseui.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 29 Sep 2012 20:11:24 +0900] rev 17873
subrepo: isolate configuration between each repositories in subrepo tree
Before this patch, repository local configurations are not isolated
between repositories in subrepo tree, because "localrepository"
objects for each subrepositories are created with "ui" instance of the
parent of each ones.
So, local configuration of the parent or higher repositories are
visible also in children or lower ones.
This patch uses "baseui" instead of "ui" to create repository object:
the former contains only global configuration.
This patch also copies 'ui.commitsubrepos' configuration to commit
recursively in subrepo tree, because it may be set in not
"repo.baseui" but "repo.ui".
Matt Mackall <mpm@selenic.com> [Sat, 27 Oct 2012 16:39:47 -0500] rev 17872
bookmarks: backed out new message from changeset 52c7e171e355
Not strictly a bugfix, hasn't achieved consensus yet.
Thomas Arendsen Hein <thomas@intevation.de> [Fri, 26 Oct 2012 14:53:31 +0200] rev 17871
clone: print bookmark name when clone activates a bookmark
Similar to the message that prints the checked out branch name.
Without this, the user might accidentally move the @ bookmark.
Thomas Arendsen Hein <thomas@intevation.de> [Fri, 26 Oct 2012 14:37:03 +0200] rev 17870
clone: activate @ bookmark if updating to it
The message "updating bookmark @ failed!" in test-bookmarks-pushpull.t
is correct, because the changeset that the @ bookmark points to is not
pushed to the target repository.
Thomas Arendsen Hein <thomas@intevation.de> [Fri, 26 Oct 2012 13:20:44 +0200] rev 17869
test-clone.t: check that branch "@" is not automatically checked out
This verifies that c9339efed653 fixes the second problem mentioned in
issue3677.
Thomas Arendsen Hein <thomas@intevation.de> [Fri, 26 Oct 2012 13:09:55 +0200] rev 17868
test-bookmarks.t: check that bookmark "default" is not automatically checked out
This verifies that c9339efed653 fixes the problem originally reported in
issue3677.
Thomas Arendsen Hein <thomas@intevation.de> [Fri, 26 Oct 2012 12:36:15 +0200] rev 17867
clone: make sure to use "@" as bookmark and "default" as branch (issue3677)
Before this change a bookmark named "default" or a branch named "@" would
cause the wrong changeset to be checked out.
The change in output of test-hardlinks.t is due to the fact that no unneeded
tag lookups for the tags "@" or "default" happen, therefore the cache file is
not created.
Thomas Arendsen Hein <thomas@intevation.de> [Fri, 26 Oct 2012 09:29:50 +0200] rev 17866
bookmark: simplify nodemap check introduced in the previous changeset
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 25 Oct 2012 23:43:52 +0200] rev 17865
bookmark: prevent crashing when a successor is unknown locally (issue3680)
The `%ln` revset substitution does not accept unknown node. We prune unknown
node from potential successors before computing descendants.
This have no impact on the result of this function.
- Descendants of unknown changeset as unknown,
- all successors of unknown changesets are already return by the call who
returned those same unknown changesets,
- unknown changesets are never a valid destination for a bookmark.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 25 Oct 2012 23:36:03 +0200] rev 17864
bookmark: complexity pull-push test to have deeper tree
This changeset only touch test.
The previous test was correct, it tested that the successors of an old bookmark
position was seen as a valid destination for bookmark.
However, a newer version is made for two reason:
(1) The new test check further. It check that the descendant of the successors
is a valid destination
(2) An ever more complexe test is needed to validate a future fix to issue 3680
Splitting complexification of the test and actual bugfix help to reduce the
noise in the bugfix changeset. Issue 3680 is NOT fixed by this changeset.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 24 Oct 2012 15:37:32 +0200] rev 17863
amend: fix incompatibity between logfile and message option (issue3675)
Bug introduced by 9732473aa24b
Adrian Buehlmann <adrian@cadifra.com> [Wed, 24 Oct 2012 11:51:24 +0200] rev 17862
test-remove: adapt to differing error message on Windows
On Windows, this part of the test failed with
$ hg rm --after nosuch
- nosuch: No such file or directory
+ nosuch: The system cannot find the file specified
[1]
Fixed by glob-ing away the error message if the test is run on Windows
(see for example test-bad-pull.t line 3 for precedent).
test-remove.t now passes on Windows.
Adrian Buehlmann <adrian@cadifra.com> [Wed, 24 Oct 2012 11:38:31 +0200] rev 17861
test-remove: fix \ vs. / issues on Windows
This part of the test failed with
$ hg rm --after d1
- removing d1/a
+ removing d1\a
on Windows.
Bryan O'Sullivan <bryano@fb.com> [Wed, 24 Oct 2012 09:27:47 -0700] rev 17860
verify: fix all doubled-slash sites (issue3665)
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 24 Oct 2012 09:53:10 +0200] rev 17859
patchbomb: respect --in-reply-to for all mails if no intro message is sent
Before this change, the thread hierarchy looked like this:
PARENT
PATCH1/x
PATCH2/x
PATCH3/x
...
Now it is:
PARENT
PATCH1/x
PATCH2/x
PATCH3/x
...
With an introductory message the behaviour is unchanged:
PARENT
INTRO
PATCH1/x
PATCH2/x
PATCH3/x
...
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 23 Oct 2012 17:06:31 +0900] rev 17858
test: add test for the issue introduced by e410be860393 (issue3669)
e410be860393 (released as Mercurial 2.3) introduced the issue that the
revset program started with 40 hexadecimal letters caused unexpected
result at "hg log" execution.
This issue was already fixed by bde1185f406c (released as 2.3.1), but
there is no test to examine whether this issue is certainly fixed or
not: no test fails even if bde1185f406c is backed out.
This patch adds test for this issue.
Added test is also confirmed to fail, when it is tested against:
- Mercurial 2.3, or
- Mercurial 2.3.1 or later with backing bde1185f406c out
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 19 Oct 2012 13:52:34 +0200] rev 17857
obsolete: add missing line feed in debug error message
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 23 Oct 2012 09:28:42 +0200] rev 17856
merge with stable
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 23 Oct 2012 09:22:46 +0200] rev 17855
localrepo: translate "push includes X changeset" only once
This was introduced in 12fdaa30063a
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 23 Oct 2012 09:27:48 +0200] rev 17854
merge stable heads
Bryan O'Sullivan <bryano@fb.com> [Mon, 22 Oct 2012 21:56:13 -0700] rev 17853
Merge with stable
Bryan O'Sullivan <bryano@fb.com> [Mon, 22 Oct 2012 21:54:36 -0700] rev 17852
Merge repeated-slash fix
Bryan O'Sullivan <bryano@fb.com> [Mon, 22 Oct 2012 18:05:40 -0700] rev 17851
verify: tolerate repeated slashes in a converted repo (issue3665)
These slashes are a hangover from issue3612, fixed in e4da793998bf.
Although the bugfix in that commit is correct, the test it adds
does not replicate the conditions for the bug correctly.
Wagner Bruna <wbruna@yahoo.com> [Sun, 21 Oct 2012 11:20:33 -0200] rev 17850
scmutil: generalize message to make it more i18n-friendly
Matt Mackall <mpm@selenic.com> [Mon, 22 Oct 2012 17:23:31 -0500] rev 17849
update: check for missing files with --check (issue3595)
Matt Mackall <mpm@selenic.com> [Mon, 22 Oct 2012 16:06:47 -0500] rev 17848
remove: don't return error on directories with tracked files
Spotted by Sergey <sergemp@mail.ru>
Matt Harbison <matt_harbison@yahoo.com> [Sat, 20 Oct 2012 21:43:46 -0400] rev 17847
largefiles: use 'default' instead of 'default-push' when pulling (issue3584)
This only applies to downloading largefiles, and only when no source for the
pull is explicitly provided. The repository itself was properly being pulled
via 'default' previously.
Using --all-largefiles is not necessary on a bare pull to test this (this
existing test is merely a convenience), but it is required to test pulling on
the rebase path.
Note that the errors generated in the --rebase case are because the repo
specified doesn't have the largefiles in its cache (though they are in the user
cache), so the errors are misleading. Specifying --all-largefiles when cloning
to 'b' fixes this, but instead of errors, it reports caching only 5 largefiles
instead of the 9 that come up missing. Likely this is because the largefile
download procedure tries to download missing files for each rev, and some of the
files have standins in more than one rev that gets pulled.
Bryan O'Sullivan <bryano@fb.com> [Mon, 22 Oct 2012 12:00:21 -0700] rev 17846
scmutil: add mustaudit delegation to filtervfs (issue3673)
Bryan O'Sullivan <bryano@fb.com> [Mon, 22 Oct 2012 11:59:11 -0700] rev 17845
scmutil: abstract out mustaudit delegation
Matt Mackall <mpm@selenic.com> [Fri, 19 Oct 2012 14:47:55 -0500] rev 17844
clone: don't %-escape the default destination (issue3145)
Adrian Buehlmann <adrian@cadifra.com> [Fri, 19 Oct 2012 15:45:16 +0200] rev 17843
test-largefiles: fix failing test on Windows
The test failed due to / vs. \ in paths issues. Fixes 08d11b82d9fc.
Adrian Buehlmann <adrian@cadifra.com> [Fri, 19 Oct 2012 15:03:35 +0200] rev 17842
test-push-http: fix failing test on Windows
The test failed due to problems with escaping. Fixes 8474be4412ca.
Matt Mackall <mpm@selenic.com> [Fri, 19 Oct 2012 01:38:53 -0500] rev 17841
Added signature for changeset d118a4f4fd16
Matt Mackall <mpm@selenic.com> [Fri, 19 Oct 2012 01:38:49 -0500] rev 17840
Added tag 2.4-rc for changeset d118a4f4fd16
Matt Mackall <mpm@selenic.com> [Fri, 19 Oct 2012 01:34:50 -0500] rev 17839
merge default into stable for 2.4 code freeze
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 26 Jul 2012 21:29:39 +0200] rev 17838
hgwebdir: make collapsed folders easier to distinguish from repositories
Add a "/" character after the collapsed folder names, to make them easier to
distinguish from regular repository and subrepository entries.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 18 Oct 2012 10:31:15 +0900] rev 17837
help: indicate help omitting if help document is not fully displayed
Before this patch, there is no information about whether help document
is fully displayed or not.
So, some users seem to misunderstand "-v" for "hg help" just as "the
option to show list of global options": experience on "hg help -v" for
some commands not containing verbose containers may strengthen this
misunderstanding.
Such users have less opportunity for noticing omitted help document,
and this may cause insufficient understanding about Mercurial.
This patch indicates help omitting, if help document is not fully
displayed.
For command help, the message below is displayed at the end of help
output, if help document is not fully displayed:
use "hg -v help xxxx" to show more complete help and the global
options
and otherwise:
use "hg -v help xxxx" to show the global options
For topics and extensions help, the message below is displayed, only
if help document is not fully displayed:
use "hg help -v xxxx" to show more complete help
This allows users to know whether there is any omitted information or
not exactly, and can trigger "hg help -v" invocation.
This patch causes formatting help document twice, to switch messages
one for omitted help, and another for not omitted. This decreases
performance of help document formatting, but it is not mainly focused
at help command invocation, so this wouldn't become problem.
Matt Mackall <mpm@selenic.com> [Thu, 18 Oct 2012 23:55:15 -0500] rev 17836
httpclient: fix calling convention violation
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 08 Oct 2012 23:49:36 +0900] rev 17835
largefiles: distinguish "no remote repo" from "no files to upload" (issue3651)
Before this patch, when no files to upload, "hg outgoing --large" and
"hg summary --large" show "no remote repo", even though valid remote
repository is specified.
It is because that "getoutgoinglfiles()" returns None, not only if no
valid remote repository is specified, but also if no files to upload.
This patch makes "getoutgoinglfiles()" return empty list when no files
to upload, and makes largefiles show "no files to upload" message at
that time.
This patch doesn't test "if toupload is None" route in
"overrideoutgoing()", because this route is not executed unless remote
repository becomes inaccessible just before largefiles specific
processing: successful execution of "orig()" means that at least one
of "default", "default-push" or dest is valid one, and that
"getoutgoinglfiles()" never returns None in such cases.
At "hg summary --large" invocation, this patch shows message below:
largefiles: (no files to upload)
This follows the message shown by "hg summary" with MQ:
mq: (empty queue)
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 19 Oct 2012 00:50:12 +0200] rev 17834
push: refuse to push bumped changeset
This applies the same logic as used for `obsolete` and `unstable` changesets.
Refuse to push them without force.
We'll probably want to factor this logic with two new functions
`pctx.troubled()` and `ctx.troubles()`. But I'm waiting for the third
"trouble" to make it into core.
push includes an xxx changeset: yyyyyyyyyy [Fri, 19 Oct 2012 00:46:39 +0200] rev 17833
obsolete: simplify push abort message
to: push includes xxx changeset: yyyyyyyyyy
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 19 Oct 2012 00:43:44 +0200] rev 17832
context: add a `bumped` method to `changectx`
Same as `unstable()`, returns true if the changeset is bumped.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 19 Oct 2012 00:41:53 +0200] rev 17831
obsolete: add a flag that allows fixing "bumped" changeset
The first obsolescence flag is introduced to allows for fixing the "bumped"
changeset situation.
bumpedfix == 1.
Creator of new changesets intended to fix "bumped" situation should not forget
to add this flag to the marker. Otherwise the newly created changeset will be
bumped too. See inlined documentation for details.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 15 Oct 2012 14:45:27 +0200] rev 17830
debugobsolete: add --flags option
This options allows to specify the `flag` part of obsolete markers. For details
about marker flags, check the `mercurial/obsolete.py` documentation. Some random
flag are added to a marker to test this feature.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 19 Oct 2012 00:39:06 +0200] rev 17829
revset: add a bumped revset
Select bumped changesets.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 19 Oct 2012 00:36:18 +0200] rev 17828
obsolete: add the detection of bumped changeset.
Bumped changesets are non-public changesets that tries to succeed a public()
changeset.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Oct 2012 15:49:58 +0200] rev 17827
obsolete: have `allsuccessors` takes a list of nodes
Additional logic, used to detect mutable history troubles, will need to quickly
compute successors of a whole set of changeset.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 19 Oct 2012 00:30:11 +0200] rev 17826
obsolete: rename `anysuccessors` into `allsuccessors`
The "any" prefix looks like it returned a boolean. `allsuccessors` is more
accurate.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 19 Oct 2012 00:28:13 +0200] rev 17825
obsolete: rename `getobscache` into `getrevs`
The old name was not very good for two reasons:
- caller does not care about "cache",
- set of revision returned may not be obsolete at all.
The new name was suggested by Kevin Bullock.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 14 Oct 2012 15:10:13 -0400] rev 17824
largefiles: always create the cache and standin directories when cloning
The standin matcher only works if the .hglf directory exists (and it won't exist
if 'clone -U' is used, unless --all-largefiles is also specified). Since not
even 'update -r null' will get rid of the standin directory, this ensures that
the standin directory always exists if the repo has the 'largefiles'
requirement. This requirement is only set after a largefile is committed, so
these directories will not be created for repos that have the extension enabled
but have not committed a largefile.
With the standin directory in place, 'lfconvert --to-normal' will now be able to
download the required largefiles when converting a repo that was created with
'clone -U', and whose files are not in the usercache.
The downloadlfiles command could probably be put inside the 'largefiles'
requirement conditional too, but given that the user specified --all-largefiles,
there is likely an expectation to print out the number of largefiles downloaded,
even if it is 0.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 14 Oct 2012 14:44:08 -0400] rev 17823
largefiles: fix a traceback in lfconvert if a largefile is missing (issue3519)
The largefile may be missing for various reasons, including that a remote
repository was cloned without the --all-largefiles option. Therefore, it seems
reasonable to attempt to download the missing files and failing that, abort and
indicate the affected file and revision so the user can manually fix the
problem.
Kevin Bullock <kbullock@ringworld.org> [Thu, 18 Oct 2012 16:34:13 -0500] rev 17822
bookmarks: further flatten code
This hopefully clarifies the behavior when no NAME is passed, by
separating the branches for listing bookmarks vs. deactivating the
current bookmark.
Kevin Bullock <kbullock@ringworld.org> [Wed, 17 Oct 2012 21:42:06 -0500] rev 17821
scmutil: add bad character checking to checknewlabel
This factors out the checks from tags and bookmarks, and newly applies
the same prohibitions to branches. checknewlabel takes a new parameter,
kind, indicating the kind of label being checked.
Test coverage is added for all three types of labels.
Kevin Bullock <kbullock@ringworld.org> [Wed, 17 Oct 2012 21:39:07 -0500] rev 17820
tag: disallow '\0' in tag names
This brings the list of disallowed characters in line with bookmarks.
Kevin Bullock <kbullock@ringworld.org> [Wed, 17 Oct 2012 21:32:19 -0500] rev 17819
dirstate: use scmutil.checknewlabel to check new branch name
Kevin Bullock <kbullock@ringworld.org> [Wed, 17 Oct 2012 17:23:39 -0500] rev 17818
bookmarks: use scmutil.checknewlabel
Validation is pulled up into the commands module to avoid an import
cycle.
Kevin Bullock <kbullock@ringworld.org> [Wed, 17 Oct 2012 16:34:46 -0500] rev 17817
scmutil: add function to validate new branch, tag, and bookmark names
For now the new function only checks to make sure the new label name
isn't a reserved name ('tip', '.', or 'null'). Eventually more of the
checks will be unified between the different types of labels.
The `tag` command is trivially updated to use it. Updating branches and
bookmarks to use it is slightly more invasive and thus reserved for
later patches.
Kevin Bullock <kbullock@ringworld.org> [Wed, 17 Oct 2012 16:32:43 -0500] rev 17816
bookmarks: disallow bookmarks named 'tip', '.', or 'null'
This makes bookmarks reject the same reserved names as tags and branches.
Kevin Bullock <kbullock@ringworld.org> [Wed, 17 Oct 2012 17:03:01 -0500] rev 17815
bookmarks: abort directly on invalid name
This consolidates the abort message for a bookmark name containing
invalid characters into one place, and renames the valid() method to
checkvalid() to reflect the fact that it's no longer a predicate.
Kevin Bullock <kbullock@ringworld.org> [Wed, 17 Oct 2012 16:23:42 -0500] rev 17814
bookmarks: remove redundant check for newline
New bookmarks are already checked for illegal characters (':', '\0',
'\n', and '\r') in bookmarks.valid().
Kevin Bullock <kbullock@ringworld.org> [Wed, 17 Oct 2012 22:25:41 -0500] rev 17813
test-tag: test that all reserved names are rejected
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Oct 2012 17:54:34 +0200] rev 17812
amend: do a bare kill of temporary changeset
Before this changeset the temporary changeset created by amend was made a
precursors on the amend result. This add unnecessary complexity to the
obsolescence graph. This temporary commit will probably disappear in the future.
It is an unwanted byproduct of amend that nobody cares about.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 18 Oct 2012 22:12:15 +0200] rev 17811
amend: add noise in extra to avoid creating obsolescence cycle (issue3664)
Obsolescence cycle are bad and should be avoided as much as possible. The
current amend implemented touch changeset meta data as few as possible. This
make is easy for amend to result in the same node than a precursors. We add some
deterministic noise in extra to avoid this. In practice, the hex of the amended
changeset is stored in 'amend_source' extra key.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 18 Oct 2012 22:04:49 +0200] rev 17810
changelog: extract description cleaning logic in a dedicated function
The amend logic have use for it.
Adrian Buehlmann <adrian@cadifra.com> [Thu, 18 Oct 2012 22:35:28 +0200] rev 17809
bookmarks: replace code-redundant comment with something more useful
Adrian Buehlmann <adrian@cadifra.com> [Thu, 18 Oct 2012 22:33:58 +0200] rev 17808
bookmarks: remove another uneeded return
Kevin Bullock <kbullock@ringworld.org> [Sat, 05 May 2012 15:30:54 -0500] rev 17807
update: remove unnecessary argument check
Idan Kamara <idankk86@gmail.com> [Sun, 14 Oct 2012 20:27:55 +0200] rev 17806
grep: colorize all fields
Colors were picked in accordance to GNU grep.
Idan Kamara <idankk86@gmail.com> [Sun, 14 Oct 2012 20:40:23 +0200] rev 17805
test-grep: add a test for -l
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 15:54:53 +0200] rev 17804
clfilter: remove use of xrange in revset
For changelog level filtering to take effect it need to be used for any
iteration. Some remaining use of `xrange` in revset code is replace by proper
use of `changelog.revs` or direct iteration over changelog.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 15:41:58 +0200] rev 17803
largefile: use `self` in repo method instead of `repo`
Most method added (or overwritten) to repo by largefile works on `repo`
instead of `self`. This currently works without trouble because `self` and
`repo` are likely the same. However this is semantically dubious and this may
cause issue for filtering. `self` may be proxy object different from the `repo`
one.
This changeset fix that and use `self` when applicable.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 16 Oct 2012 23:12:07 +0200] rev 17802
test: use proper subclassing in `test-issue2137.t`.
To use changelog filtering on the repository, we plan to use "proxy" object that
perfectly mock a repository but with a filtered changelog.
Altering the `repo.commit` function using `extensions.wrapfunction` will prevent
the logic to propagate to the proxy class by the mean of inheritance.
We changes the extension to use subclassing as expectable.
Mads Kiilerich <mads@kiilerich.com> [Thu, 18 Oct 2012 00:44:32 +0200] rev 17801
run-tests: remove dead code for supporting old test scripts
Mads Kiilerich <mads@kiilerich.com> [Thu, 18 Oct 2012 00:33:29 +0200] rev 17800
run-tests: handle windows crlf in .py tests again
Before af7c6bc48d8d all crlf occurrences in test output on Windows were simply
changed to lf. In af7c6bc48d8d it was replaced by more clever handling in the
.t test runner ... but the .py runner was forgotten and many .py tests were
failing on Windows.
The crlf/lf replacement is now reintroduced in the py test runner.
Mads Kiilerich <mads@kiilerich.com> [Thu, 18 Oct 2012 00:33:26 +0200] rev 17799
test-run-tests.t: fix wrong test case for cr handling on Windows
An incorrect and failing test case was introduced in af7c6bc48d8d.
Shun-ichi GOTO <shunichi.goto@gmail.com> [Wed, 17 Oct 2012 18:09:00 +0900] rev 17798
win32mbcs: add reversing wrapper for some unicode-incompatible functions.
This changeset fix the problem to use win32mbcs with mercurial 2.3 or
later.
The problem is brought by side effect of modification of
encoding.upper() (changeset 17236:9fb8312dbdbd) because upper() does
not accept unicode string argument. So wrapped util.normcase() which
uses upper() will fail. In other words, upper() and lower() are
unicode incompatible.
To fix this issue, this changeset adds new wrapper for reversed
conversion (unicode to str) for lower() and upper() to use them
safely.
Huayang <huayang@fb.com> [Fri, 05 Oct 2012 16:27:34 -0700] rev 17797
convert: normalize paths in filemaps (issue3612)
convert doesn't normalise double slashes in paths. Path normalization
is applied when a path is loaded into filemap and when a file lookup
request is issued to filemap.
Matt Mackall <mpm@selenic.com> [Wed, 17 Oct 2012 15:37:25 -0500] rev 17796
repair: use node to track post-strip bookmark target
Revision numbers are unstable when non-consecutive revs are stripped.
Christian Ebert <blacktrash@gmx.net> [Wed, 17 Oct 2012 17:32:01 +0200] rev 17795
keyword: move commands.inferrepo for code maintenance
Matt Harbison <matt_harbison@yahoo.com> [Mon, 08 Oct 2012 22:43:54 -0400] rev 17794
largefiles: update lfutil.findoutgoing() discovery method
It looks like this method missed the updates in 30273f0c776b (which changed the
preferred discovery method from findcommonincoming() to findcommonoutgoing()),
and cd956049fc14 (which rolls up the outgoing lists into a single object).
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 15 Oct 2012 18:37:34 -0300] rev 17793
wireproto: fix pushkey hook failure and output on remote http repo
Over http, a failed pushkey hook simply crashed the server, and
successful hook output was never sent to the client.
Sean Farley <sean.michael.farley@gmail.com> [Tue, 16 Oct 2012 17:09:50 -0500] rev 17792
phases: add a phase and phasestr method to file context
Kevin Bullock <kbullock@ringworld.org> [Wed, 17 Oct 2012 12:15:23 -0500] rev 17791
bookmarks: simplify code
Remove some unnecessary return statements and collect some checks into
one place. As requested by Thomas Arendsen Hein <thomas@intevation.de>.
David Soria Parra <dsp@php.net> [Wed, 17 Oct 2012 11:50:47 +0200] rev 17790
bookmarks: abort when incompatible options are used (issue3663)
Options like --delete and --rename are incompatible with each
other. In this case we abort. We do not abort if the result is a nullop.
Nullops are: '--delete --inactive', '--delete --force'.
David Soria Parra <dsp@php.net> [Wed, 17 Oct 2012 08:44:49 +0200] rev 17789
bookmarks: check bookmark format during rename (issue3662)
Sean Farley <sean.michael.farley@gmail.com> [Tue, 16 Oct 2012 13:35:58 -0500] rev 17788
color: add additional changeset.phase label to log.changeset and log.parent
This allows the user to set different colors for each phase, e.g.
[color]
changeset.public = blue
changeset.draft = green
changeset.secret = red
In addition, this doesn't affect current configuration for custom log.changeset
colors, but rather adds the option for users that want to visually see which
changesets are amendable.
Augie Fackler <raf@durin42.com> [Tue, 16 Oct 2012 18:05:33 -0500] rev 17787
http2: make it possible to connect w/o ssl on port 443
The fix is just to make sure we always pass use_ssl=False to non-SSL
connections.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 15 Oct 2012 17:43:05 +0200] rev 17786
branchpoint: remove useless intermediate set creation
We don't need to compute the set of all branchpoints. We can just check the
number of children that element of subset have. The extra work did not seems to
had particular performance impact but the code is simpler this way.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 15 Oct 2012 17:42:40 +0200] rev 17785
clfilter: use changelog to iterate over the repo in branchpoint
Otherwise filtered changesets may cause false positives in `branchpoint()`.
Adrian Buehlmann <adrian@cadifra.com> [Fri, 12 Oct 2012 10:52:33 +0200] rev 17784
store: fncache may contain non-existent entries (fixes b9a56b816ff2)
Adrian Buehlmann <adrian@cadifra.com> [Fri, 12 Oct 2012 10:52:32 +0200] rev 17783
store: add new _exists helper function on fncachestore
Adrian Buehlmann <adrian@cadifra.com> [Fri, 12 Oct 2012 10:40:09 +0200] rev 17782
store: move __contains__() implementation from class fncache into fncachestore
This restores the previous semantics of fncache.__contains__().
(a followup to b9a56b816ff2)
Adrian Buehlmann <adrian@cadifra.com> [Fri, 12 Oct 2012 10:12:26 +0200] rev 17781
test-log: fix / vs \ issues on Windows introduced with 6d218e47cf9b
test-log.t fails on Windows with
--- c:\Users\buildbot\w2k8\Windows_2008_R2_hg_tests\build\tests\test-log.t
+++ c:\Users\buildbot\w2k8\Windows_2008_R2_hg_tests\build\tests\test-log.t.err
@@ -1225,12 +1225,12 @@
$ echo 1 > d5.d/f1
$ echo 1 > .d6/f1
$ hg add .
- adding .d6/f1
- adding D2/f1
- adding D3.i/f1
- adding d1/f1
- adding d4.hg/f1
- adding d5.d/f1
+ adding .d6\f1
+ adding D2\f1
+ adding D3.i\f1
+ adding d1\f1
+ adding d4.hg\f1
+ adding d5.d\f1
$ hg commit -m "a bunch of weird directories"
$ hg log -l1 d1/f1 | grep changeset
changeset: 0:65624cd9070a
Adrian Buehlmann <adrian@cadifra.com> [Fri, 12 Oct 2012 19:43:24 +0200] rev 17780
perf: simply use repo.store for perffncache* commands
This makes sure that .hg/requires is observed and the correct kind of store
object is created. Otherwise we might mutilate our test repos when experimenting
with new repo formats.
Mads Kiilerich <mads@kiilerich.com> [Sun, 14 Oct 2012 18:30:47 +0200] rev 17779
test-subrepo-recursion.t: re-introduce glob to handle \ slashes on Windows
Regression was introduced in 6047947afb6b.
Resolved by using the fine line noise '\r (no-eol) (glob) (esc)'.
Mads Kiilerich <mads@kiilerich.com> [Sun, 14 Oct 2012 18:30:42 +0200] rev 17778
run-tests: make it possible to combine (esc) with (glob) and (re)
This makes it possible to combine the annotations ... if done in the right
order.
Mads Kiilerich <mads@kiilerich.com> [Mon, 15 Oct 2012 02:33:12 +0200] rev 17777
run-tests: alternative way of handling \r on Windows
After f71d60da58fb all \r was stripped from output on Windows, and the places
where a \r explicitly was expected it was accepted that it was missing. Ugly
hack.
Instead we now accept that an extra \r might appear at the end of lines on
Windows. That is more to the point and less ugly.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Oct 2012 15:39:12 +0200] rev 17776
obsolete: flip `obstore.successors` and `obsolete.precursors`
People were confused by the fact `obstore.precursors` contained marker allowing
to find "precursors" and vice-versa.
This changeset changes their meaning to:
- precursors[x] -> set(markers on precursors edges of x)
- successors[x] -> set(markers on successors edges of x)
Some documentation is added to clarify the situation.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 14 Oct 2012 23:33:10 +0200] rev 17775
obsolete: add example of marker usage in the documentation
Recent discussion with Augie Fackler pointed the lack of such example in the
documentation.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 15 Oct 2012 00:12:06 +0200] rev 17774
obsolete: cheap detection of nullid as successors
Nullid as successors create multiple issues:
- Nullid revnum is -1, confusing algorithm that use revnum unless you add
special handling in all of them.
- Nullid confuses "divergent" changeset detection and resolution. As you can't
add any successors to Nullid without being in even more troubles
Fortunately, there is no good reason to use nullid as a successor. The only
sensible meaning of "succeed by nullid" is "dropped" and this meaning is already
covered by obsolescence marker with empty successors set.
However, letting some nullid successors to slip in may cause terrible damage in
such algorithm difficult to debug. So I prefer to perform and clear detection of
of such pathological changeset. We could be much smarter by cleaning up nullid
successors on the fly but it would be much for expensive. As core Mercurial does
not create any such changeset, I think it is fine to just abort when suspicious
situation is detected.
Earlier experimental version created such changesets, so there are some out
there. The evolve extension added the necessary logic to clean up its mess.
Siddharth Agarwal <sid0@fb.com> [Tue, 16 Oct 2012 11:43:15 -0700] rev 17773
commands: don't infer repo for commands like update (issue2748)
Maintain a whitelist of commands to infer the repo for instead. The whitelist
contains those commands that take file(s) in the working dir as arguments.
Siddharth Agarwal <sid0@fb.com> [Mon, 15 Oct 2012 09:43:34 -0700] rev 17772
hgweb: make the escape filter remove null characters (issue2567)
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 16 Oct 2012 16:56:14 +0200] rev 17771
histedit: create obsolescence markers in deterministic order
I arbitrary use the revnum of the precursor because it sound a right order.
David M. Carr <david@carrclan.us> [Mon, 15 Oct 2012 23:54:54 -0400] rev 17770
bookmarks: when @ bookmark diverges, don't double the @ sign (BC)
This changeset treats the bookmark "@" as a special case for the naming of
divergent bookmarks, as per the tables below. For the <no alias> case, the
actual suffix will vary, depending on what suffixes are already in use.
Before:
Bookmark | Remote | Divergent Bookmark
--------------------------------------
foo | bar | foo@bar
foo | <no alias> | foo@1
@ | bar | @@bar
@ | <no alias> | @@1
After:
Bookmark | Remote | Divergent Bookmark
--------------------------------------
foo | bar | foo@bar
foo | <no alias> | foo@1
@ | bar | @bar
@ | <no alias> | @1
This case is likely to be more common now that 92980a8dfdfe has made the "@"
bookmark have special meaning to clone.
The change in behavior was discussed on the mailing list in the thread below:
http://markmail.org/thread/rwedgxp7le5j2h2f
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 16 Oct 2012 16:04:28 +0200] rev 17769
histedit: max(x, key=y) and min(x, key=y) are not available in python 2.4
Use sorted(x, key=y)[-1] or sorted(x, key=y)[0] instead.
Matt Mackall <mpm@selenic.com> [Sat, 13 Oct 2012 15:10:39 -0500] rev 17768
vfs: use self.write to write symlink placeholders
The existing write() path is much more robust than the hand-rolled
version that was inlined here.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 14 Oct 2012 23:49:28 +0200] rev 17767
histedit: do not use "min" on ctx
It does not crash but does not compare revision number at all. We actually
remove any call to min because the list is already topologically sorted.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 14 Oct 2012 23:58:02 +0200] rev 17766
histedit: clean abort when there is nothing to edit
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 15 Oct 2012 00:05:16 +0200] rev 17765
histedit: rename `revs` in `ctxs` inside the `between` function
The variable content is actually contexts, not revision numbers.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 14 Oct 2012 23:03:58 +0200] rev 17764
test: fix invalid redirection for histedit text
Appending to the file is wrong, we want new content.
Matt Mackall <mpm@selenic.com> [Sat, 13 Oct 2012 15:03:00 -0500] rev 17763
vfs: backout fchmod change from 76b73ce0ffac
Only works on Unix with Python >= 2.6, need a different fix.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 12 Oct 2012 21:41:08 +0200] rev 17762
histedit: refuse to edit public changeset
Public changeset are immutable. This changeset enforce that in histedit.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Sep 2012 14:00:52 +0200] rev 17761
histedit: ignores hidden revision when checking for orphaned nodes
We do not want hidden revision to block histedit. They are already "dead"
and we do not care about dead orphans. see similar changeset 9e2dc0d292cd for
rebase.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 10 Oct 2012 06:27:06 +0200] rev 17760
histedit: simplify computation of edited set (issue3620)
This complex code can be replaced by two simple revset calls.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Sep 2012 13:59:48 +0200] rev 17759
histedit: add obsolete support
When the obsolete feature is enabled, histedit creates obsolescence marker
instead of stripping replaced changesets.
For now, we keep stripping temporary nodes created along the way.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 11 Oct 2012 08:36:50 +0200] rev 17758
histedit: replace various nodes lists with replacement graph (and issue3582)
This changeset rewrites the change tracking logic of histedit to record every
operation it does. Tracked operations record the full list of "old" node that
will eventually be removed to the list of new nodes that replace it. Operations
on temporary nodes are tracked too. Dropped changesets are also recorded as an
"old" node replacement by nothing. This logic is similar to the obsolescence
marker one and will be used for this purpose in later commit.
This new logic implies a big amount of change in the histedit code base.
histedit action functions now always return a tuple of
(new-ctx, [list of rewriting operations])
The old `created`, `replaced` and `tmpnodes` are no longer returned and stored
during histedit operation. When such information is necessary it is computed
from the replacement graph. This computation is done in the `processreplacement`
function.
The `replacemap` is also dropped. It is computed at the end of the command from the
graph. The `bootstrapcontinue` methods are altered to compute this different kind of
information.
This new mechanism requires much less information to be written on disk.
Note:
This changes allows a more accurate bookmark movement. bookmark on dropped
changeset are now move of their parent (or replacement of their parent)
instead of their children.
This fix issue3582
Matt Mackall <mpm@selenic.com> [Fri, 12 Oct 2012 15:52:59 -0500] rev 17757
merge with durin42
Kevin Bullock <kbullock@ringworld.org> [Wed, 21 Mar 2012 16:53:39 -0500] rev 17756
clone: update to @ bookmark if it exists
Christian Ebert <blacktrash@gmx.net> [Fri, 10 Aug 2012 20:37:20 +0100] rev 17755
templatefilters: avoid traceback caused by bogus date input (issue3344)
Wrap datefilters which split date texts with util.parsedate.
We do not abort, as the bogus date must have been given by the user.
Michal Sznajder <michalsznajder@gmail.com> [Mon, 13 Aug 2012 22:42:10 +0200] rev 17754
notify: support revset selection for subscriptions
A repo pattern for any notify configuration contains a glob matching the
path to the repo. Additionally, it may now contain a revset spec, separated
from the glob by '#'.
Example:
[reposubs]
*/widgets#branch(release) = qa-team@example.com
This sends to ``qa-team@example.com`` whenever a changeset on the ``release``
branch triggers a notification in any repository ending in ``widgets``.
This patch was completely done by David Champion <dgc@uchicago.edu> with me
making tiny changes to his tests.
Ivan Andrus <darthandrus@gmail.com> [Mon, 13 Aug 2012 21:50:45 +0200] rev 17753
revsets: add branchpoint() function
The branchpoint() function returns changesets with more than one child.
Eventually I would like to be able to see only branch points and merge
points in a graphical log to see the topology of the repository.
Matt Mackall <mpm@selenic.com> [Thu, 11 Oct 2012 22:58:34 -0500] rev 17752
vfs: use fchmod for _fixfilemode
On general principle, we should use fchmod instead of chmod to avoid
security pitfalls, although none is likely possible here.
Bryan O'Sullivan <bryano@fb.com> [Thu, 11 Oct 2012 16:05:14 -0700] rev 17751
tests: correctly report a test killed by a signal
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 10 Oct 2012 05:54:38 +0200] rev 17750
histedit: update bookmark movement notice
New format is:
histedit: moving bookmarks <bookmark> from <old> to <new>
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 10 Oct 2012 06:20:14 +0200] rev 17749
histedit: simplify computation of `newchildren` during --continue
We are now checking for any changesets between the previous `parentctx` and the
current working directory parent. If the current working directory parent is
inconsistent, we abort.
This change is useful as it simplifies the --continue process, easing upcoming
changes.
While working on this changeset, I spotted an unhandled corner case. This corner
case is now documented and have an appropriate issue in the tracker (issue3655).
However, the corner case is still unhandled. handling this test case would
required some additional work:
- actually decide what the proper behavior should be:
- change content of "histedit-state" to add missing data necessary to detect
the situation
- add proper testcase,
But leaving the case unhandled is "okay":
- this is not a regression,
- this is not the purpose of the current series,
- the freeze was near and I had more critical stuff to attend to,
- this is a simple but non trivial, (see above)
Adrian Buehlmann <adrian@cadifra.com> [Wed, 03 Oct 2012 19:43:10 +0200] rev 17748
test-fncache: enable for Windows
Should also fix
http://hgbuildbot.kublai.com/builders/vfat%20hg%20tests/builds/182
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Oct 2012 16:17:55 +0900] rev 17747
store: invoke "osutil.listdir()" via vfs
This patch invokes "osutil.listdir()" via vfs object.
The function added newly to "abstractvfs" is named not as "listdir()"
but as "readdir()", because:
- "os.listdir()" seems to be more familiar as "listdir()" than
"osutil.listdir()"
- "osutil.listdir()" returns also type of each files like
"readdir()" POSIX API: even though "d_type" field of "dirent"
structure is defined mainly only on BSD/Linux
This patch invokes "osutil.listdir()" via "rawvfs" object to avoid
filename encoding, because the path passed to "osutil.listdir()"
shouldn't be encoded.
This patch also omits importing "osutil" module, because it is no
longer used.
smuralid [Thu, 13 Sep 2012 23:50:45 -0700] rev 17746
log: speed up hg log for untracked files (issue1340)
'hg log' on untracked files tends to be fairly slow. The root cause is that we end up using the 'slowpath' when we can't find a revlog for the files listed. This could happen if the file in question is an untracked file, or it is a directory.
This diff tries to speed up 'hg log' (by avoiding the slowpath) for files if we can determine if that file is not (and was never) a directory. We use the previously added store.__contains__ methods to test if the directory exists (or existed) in the store.
To avoid changing any existing semantics, this 'optimization' kicks in only when none of the files listed as arguments to the hg log command exist in the store.
smuralid [Thu, 13 Sep 2012 17:57:43 -0700] rev 17745
store: add a contains method to fncachestore
Adds a __contains__ method to fncachestore to check for file/dir existence (using fncache.__contains__).
Also extends fncache.__contains__ to check for directories (by prefix matching)
smuralid [Thu, 13 Sep 2012 17:00:34 -0700] rev 17744
store: add a contains method to basicstore
Adds a __contains__ method to basicstore that checks if a file/dir is present in the store
Mads Kiilerich <mads@kiilerich.com> [Wed, 10 Oct 2012 01:37:54 +0200] rev 17743
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
Mads Kiilerich <mads@kiilerich.com> [Wed, 26 Sep 2012 00:56:27 +0200] rev 17742
run-tests: allow test output lines to be terminated with \r in addition to \n
str.splitlines could not be used in 546c76e5a3e6, but _now_ we would like to
have lines with other line endings than \n.
Some fine occurences of (esc) markup of \r is replaced with multiple lines
ending with '\r (no-eol) (esc)'. That is no win but also no significant loss.
This change makes it possible to drop filtercr.py - _that_ is a win.
Mads Kiilerich <mads@kiilerich.com> [Wed, 10 Oct 2012 01:37:53 +0200] rev 17741
run-tests: use more explicit criteria for detecting no-eol
Preparing for the situation where there could be unsalted lines not terminated
with \n.
Tomasz Kleczek <tomasz.kleczek@fb.com> [Wed, 03 Oct 2012 13:19:53 -0700] rev 17740
branchcache: fetch source branchcache during clone (issue3378)
Recomputing branch cache on clone may be expensive,
therefore if possible we fetch it along with the data.
- If the clone is performed by copying, we just copy branchcache file.
- If we localrepo.clone and streaming then we follow the procedure:
1. Fetch branchmap from the remote
2. Fetch the actual data.
3. Find the latest rev within branch heads (tip at the time of
branchmap fetch)
4. Update the cache for the revs in [remotetip+1, tip]
This way we ensure that the branchcache is correct even in case
of races with commits.
Mads Kiilerich <mads@kiilerich.com> [Wed, 10 Oct 2012 01:30:45 +0200] rev 17739
run-tests: drop unused enumerate
Mads Kiilerich <mads@kiilerich.com> [Wed, 10 Oct 2012 01:29:56 +0200] rev 17738
spelling: fix minor spell checker issues
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 09 Oct 2012 12:47:54 +0200] rev 17737
test-dirstate: remove test with date larger than 32 bit
When running on a 32bit system or with a touch command that only accepts
32bit dates, the following happened:
$ touch -t 250001011200 a
touch: invalid date format `250001011200'
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 09 Oct 2012 09:45:44 +0200] rev 17736
merge with crew-stable
Kevin Bullock <kbullock@ringworld.org> [Mon, 08 Oct 2012 00:19:30 +0200] rev 17735
bookmarks: deactivate current bookmark if no name is given
f57f891eb88e added this help text to hg bookmark:
If no NAME is given, the current active bookmark will be marked inactive.
But that was never actually the case.
Originally spotted by Idan Kamara <idankk86@gmail.com>.
Bryan O'Sullivan <bryano@fb.com> [Mon, 08 Oct 2012 15:57:21 -0700] rev 17734
contrib: add a commit synthesizer for reproducing scaling problems
This adds two new commands:
- analyze examines an existing repo and writes out a statistical
description of its properties that contains no identifying
information.
- synthesize creates new commits based on the description generated
by analyze.
The intention is that a repo constructed using synthesize will have
properties that are vaguely statistically similar to the originating
repo, but entirely random content.
This can be useful for forecasting performance as a repo grows, and
for developers who want to find bottlenecks in proprietary repos
to which they do not have access.
Matt Mackall <mpm@selenic.com> [Mon, 08 Oct 2012 17:50:42 -0500] rev 17733
dirstate: handle large dates and times with masking (issue2608)
Dates and times that are outside the 31-bit signed range are now
compared modulo 2^31. This should prevent it from behaving badly with
very large files or corrupt dates while still having a high
probability of detecting changes.
Adrian Buehlmann <adrian@cadifra.com> [Tue, 07 Aug 2012 11:04:41 +0200] rev 17732
exewrapper: adapt for legacy HackableMercurial
We give up using CPython's PythonXX.lib import libraries (and Python.h), and
now "manually" call the LoadLibrary() / GetProcAddress() Windows API's instead.
If there is a "hg-python" subdirectory (the canonical directory name for
HackableMercurial's private Python copy) next to the hg.exe, we load the
pythonXX.dll from there (feeding an absolute path to LoadLibrary) and we set
Py_SetPythonHome() to that directory, so that the Python libraries are used
from there as well.
If there is no "hg-python" subdir found next to the hg.exe, we do not feed an
absolute path to LoadLibrary. This continues to allow to find a globally
installed Python DLL, as before this change - that is, without having to edit,
delete, rename, or configure anything.
Note that the hg.exe built is still bound to a *specific* major version of the
pythonXX.dll (e.g. python27.dll). What version it is, is inferred from the
version of the python interpreter that was used when calling setup.py. For
example
C:\python27_x86\python.exe setup.py build_hgexe -i --compiler=mingw32
builds a hg.exe (using the mingw32 tool chain) bound to (x86) Python 2.7. And
C:\python27_x86\python.exe setup.py build_hgexe -i
builds the same using the Microsoft C compiler/linker. (Note that the Microsoft
toolchain combined with x64 CPython can be used to build an x64 hg.exe.)
setup.py is changed to write the name of the pythonlib into the generated header
file "mercurial/hgpythonlib.h", which is #included by exewrapper.c. For a Python
2.7 build, it for example contains:
#define HGPYTHONLIB "python27"
exewrapper.c then uses HGPYTHONLIB for the name of the Python dll to load.
We don't want to track mercurial/hgpythonlib.h, so we add it to .hgignore.
Matt Mackall <mpm@selenic.com> [Mon, 08 Oct 2012 16:46:11 -0500] rev 17731
store: restore getsize method
This method was created for subclassing.
David Soria Parra <dsp@php.net> [Mon, 01 Oct 2012 02:44:46 +0200] rev 17730
mq: update bookmarks during qrefresh
Bookmarks are updated during qpop and qpush, but they are not updated
during qrefresh. This behaviour makes it hard to work on an evolving
changeset at the head of a branch. qrefresh should update all bookmarks
that point to the refreshed commit with the new nodeid.
Matt Mackall <mpm@selenic.com> [Mon, 08 Oct 2012 16:21:24 -0500] rev 17729
templater: drop redundant return in _flatten
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Oct 2012 01:41:55 +0900] rev 17728
store: invoke "os.path.isdir()" via vfs
This patch invokes "os.path.isdir()" via "rawvfs" object to avoid
filename encoding, because the path passed to "os.path.isdir()"
shouldn't be encoded.
This patch newly adds "self.rawvfs" field only to "basicstore" and
"encodedstore", because "fncachestore" has "self.rawvfs" already.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Oct 2012 01:41:55 +0900] rev 17727
store: replace invocation of "getsize()" by "vfs.stat()"
This patch replaces invocation of "getsize()", which calls "os.stat()"
internally, by "vfs.stat()".
The object referred by "self.rawvfs" is used internally by
"_fncachevfs" and doesn't encode filename for each file API invocation.
This patch invokes "os.stat()" via "self.rawvfs" to avoid redundant
filename encoding: invocation of "os.stat()" via "self.vfs" hides
filename encoding and encoding result from caller, so it is not
appropriate, when both encoded and non-encoded filenames should be
yield.
Even though changeset b42b0729744d improved stream_out performance by
"self.pathsep + path", this patch replaces it by
"os.path.join(self.base, path)" of vfs. So, this may increase cost to
join path components.
But this shouldn't have large impact, because:
- such cost is much less than cost of "os.stat()" which causes
system call invocation
- "datafiles()" of store object is invoked only for "hg manifest
--all" or "hg verify" which are both heavy functions
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Oct 2012 01:41:55 +0900] rev 17726
store: invoke "os.stat()" for "createmode" initialization via vfs
This just replaces "os.stat()" invocation: refactoring around
"self.createmode" and "vfs.createmode" initialization is omitted.
This patch also newly adds "stat()" function to "abstractvfs".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Oct 2012 01:41:55 +0900] rev 17725
vfs: define "join()" in each classes derived from "abstractvfs"
This patch defines "join()" in each classes derived from "abstractvfs"
except "vfs", which already defines it.
This allows all vfs instances to be used for indirect file API
invocation.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Oct 2012 01:41:55 +0900] rev 17724
store: initialize vfs field first to use it for initialization of others
This patch initializes "vfs" field in the constructor of each store
classes to use it for initialization of others.
In this patch, "self.vfs.base" is used to initialize "self.path",
because redo join of path components for "self.path" is redundant.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Oct 2012 01:41:55 +0900] rev 17723
scmutil: reorder newly added functions for vfs support in dictionary order
Definition functions for vfs support in dictionary order increases
readability/maintainability, because there are functions which invoke
file API:
- with same name: "os.listdir" and "osutil.listdir", for example
- with ambiguous names: "os.mkdir" and "util.makedirs", for example
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Oct 2012 01:41:55 +0900] rev 17722
store: rename field name from "opener" to "vfs" in internal classes for fncache
These fields are used only in store module, so keeping "self.opener"
for backward compatibility like as "localrepository" class is not
needed.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 09 Oct 2012 01:41:55 +0900] rev 17721
store: rename argument name from "op"(ener) to "vfs"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 04 Oct 2012 01:24:05 +0900] rev 17720
verify: rename "hasmanifest" variable for source code readability
Before this patch, there are two ambiguous variables: "havemf" and
"hasmanifest".
"havemf" means whether there are any "manifest" entries.
"hasmanifest" means whether there are any "changelog" entries
referring to "manifest" entry.
This patch renames from "hasmanifest" to "refersmf" to clear
difference from "havemf".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 04 Oct 2012 01:24:05 +0900] rev 17719
verify: use appropriate local variable in "checkentry()"
Before this patch, "checkentry()" internal function uses both
"node"(argument of itself) and "n"(defined in outer of it) variables.
Because all callers of "checkentry()" use "n" to refer the object
which is passed to "checkentry()" as "node", both can refer same
object in "checkentry()". So, "checkentry()" works correctly.
But such usage is not good for independence of "checkentry()".
This patch replaces "n" in "checkentry()" with "node".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 04 Oct 2012 01:24:05 +0900] rev 17718
verify: use appropriate node information to show verification error
Before this patch, verify module shows verification error message
below:
unknown parent 2 <HASH_OF_P2> of <HASH_OF_P1>
even though it should show:
unknown parent 2 <HASH_OF_P2> of <HASH_OF_TARGET>
This patch uses appropriate node information.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 04 Oct 2012 01:24:05 +0900] rev 17717
help: add information about recovery from corruption to help of "verify"
Before this patch, there is no information about what users should (or
can) do for recovery from corruption of repositories.
This patch adds URL of the Mercurial Wiki page explaining about
recovery from corruption.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 03 Sep 2012 14:35:31 +0200] rev 17716
hidden: remove tags use in hidden computation
Tags initially prevented revision to be hidden. It seemed a bad idea to have
tags refer to revisions that one can't see. But proper filtering of hidden
revisions excludes them from tag computation. Coming changelog filtering will do
that. Anyway, tags that really matter will likely be public and therefore not
hidden.
The current working directory parent and bookmarked revision are still not
hidden. Bookmarks were likely automatically moved at rewrite time, bookmarks
that remain on obsolete revisions were probably moved there on purpose.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 03 Sep 2012 14:35:05 +0200] rev 17715
clfilter: do not use tags cache if there are filtered changesets
If there are filtered changesets the cache is not valid. We'll have to cache
tags for filtered state too, but for now recomputing the tags is enough.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 03 Sep 2012 14:34:19 +0200] rev 17714
clfilter: do not use branchmap cache if there are filtered changesets
If there are filtered changesets the cache is not valid. We'll have to cache
branchmap for filtered state too, but for now recomputing the branchmap is
enough.
Bryan O'Sullivan <bryano@fb.com> [Mon, 08 Oct 2012 09:55:41 -0700] rev 17713
Merge
Idan Kamara <idankk86@gmail.com> [Mon, 08 Oct 2012 15:35:16 +0200] rev 17712
fancyopts: don't show a traceback on invalid integer values
Idan Kamara <idankk86@gmail.com> [Wed, 03 Oct 2012 22:09:18 +0200] rev 17711
check-code: replace heredocs in unified tests
Heredocs are usually fed to other commands and
shouldn't follow the standard conventions of shell
commands.
This restores the old behaviour of how heredocs
were handled in old-style test files.
Adrian Buehlmann <adrian@cadifra.com> [Wed, 19 Sep 2012 20:33:20 +0200] rev 17710
test-fncache: test reserved / long paths
testing the store path encoding with real files
Bryan O'Sullivan <bryano@fb.com> [Fri, 05 Oct 2012 13:44:52 -0500] rev 17709
setup: calculate version more correctly
The old calculation code failed to properly identify revs that
weren't tagged, leaving us with a version of "unknown" most of the
time during development.
Bryan O'Sullivan <bryano@fb.com> [Thu, 04 Oct 2012 17:00:32 -0500] rev 17708
mq: improve qqueue message with patches applied (issue3036)
Thomas Arendsen Hein <thomas@intevation.de> [Thu, 04 Oct 2012 16:52:20 +0200] rev 17707
subrepo, hghave: use "svn --version --quiet" to determine version number
svn --version --quiet is implemented since svn 0.14.1 (August 2002)
and prints just the version number, not the long output (21 lines)
of "svn --version".
Additionally I expect this output format to be more stable, at least
it is not changed with different translations.
Thomas Arendsen Hein <thomas@intevation.de> [Thu, 04 Oct 2012 16:44:28 +0200] rev 17706
merge with crew-stable
Thomas Arendsen Hein <thomas@intevation.de> [Thu, 04 Oct 2012 16:30:40 +0200] rev 17705
subrepo: setting LC_MESSAGES only works if LC_ALL is empty or unset
For example LC_ALL=de_DE.utf-8 would cause the version check to fail,
because "svn, Version 1.6.12 (r955767)" with a capital "V" will be printed.
Using "svn --version --quiet" would only print the version number, but then
matching other messages, e.g. "Committed revision" would fail.
Thomas Arendsen Hein <thomas@intevation.de> [Thu, 04 Oct 2012 10:11:17 +0200] rev 17704
merge with crew-stable
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 02 Oct 2012 09:26:42 +0200] rev 17703
clone: activate bookmark specified with --updaterev
Bryan O'Sullivan <bryano@fb.com> [Tue, 02 Oct 2012 14:31:25 -0700] rev 17702
Merge with crew-stable
Bryan O'Sullivan <bryano@fb.com> [Tue, 02 Oct 2012 14:31:14 -0700] rev 17701
Merge
Bryan O'Sullivan <bryano@fb.com> [Tue, 02 Oct 2012 14:27:13 -0700] rev 17700
keepalive: drop python 2.2 legacy code
André Sintzoff <andre.sintzoff@gmail.com> [Sun, 30 Sep 2012 15:31:27 +0200] rev 17699
pathencode: change isset name to avoid name collision
On old Mac OS X versions (10.4), arpa/inet.h (included in mercurial/util.h)
includes system/param.h which defines isset macro.
Matt Mackall <mpm@selenic.com> [Mon, 01 Oct 2012 23:11:28 -0500] rev 17698
Added signature for changeset b3f0f9a39c4e
Matt Mackall <mpm@selenic.com> [Mon, 01 Oct 2012 23:11:25 -0500] rev 17697
Added tag 2.3.2 for changeset b3f0f9a39c4e
Matt Mackall <mpm@selenic.com> [Mon, 01 Oct 2012 23:06:14 -0500] rev 17696
merge with i18n
Matt Harbison <matt_harbison@yahoo.com> [Sun, 23 Sep 2012 00:08:13 -0400] rev 17695
largefiles: download missing subrepo revs when archiving
This is something plain hgsubrepos already do. Previously, an abort message
complained about an unknown revision.
Matt Mackall <mpm@selenic.com> [Mon, 01 Oct 2012 23:05:02 -0500] rev 17694
hgweb: change IE canvas test (issue3639)
suggested by Peter Hull
Adrian Buehlmann <adrian@cadifra.com> [Sun, 30 Sep 2012 23:53:56 +0200] rev 17693
store: optimize _pathencode by checking the length of the unencoded path
If the input path is already longer than _maxstorepathlen, then we can skip
doing the basic encoding (encodedir, _encodefname and _auxencode) and directly
proceed to the hashed encoding. Those encodings, if at all, will make the path
only longer.
Adrian Buehlmann <adrian@cadifra.com> [Sun, 30 Sep 2012 23:53:56 +0200] rev 17692
pathencode: skip encoding if input is already longer than maxstorepathlen
Calling basicencode may make the path longer, never shorter. If it's already
too long before, then we don't even need to basicencode it.
Adrian Buehlmann <adrian@cadifra.com> [Sun, 30 Sep 2012 23:53:56 +0200] rev 17691
pathencode: simplify basicencode
Adrian Buehlmann <adrian@cadifra.com> [Sun, 30 Sep 2012 23:53:56 +0200] rev 17690
test-hybridencode: in practice, extensions aren't really unbound in length
due to the fact that we only get to encode files ending in .i and .d inside
the store
Patrick Mezard <patrick@mezard.eu> [Mon, 01 Oct 2012 21:54:04 +0200] rev 17689
Merge
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 27 Sep 2012 01:53:28 +0200] rev 17688
histedit-test: clarify the reason of a failure
There is multiple conflict during this test. This add a small comment that
highligh the reason of a particular failure.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 24 Sep 2012 15:46:01 +0200] rev 17687
histedit-test: make test-fold more verbose
This helps to check the validity of fold result and debug potential issue.
David Soria Parra <dsp@php.net> [Mon, 01 Oct 2012 03:19:23 +0200] rev 17686
bookmarks: teach the -r option to use revsets
Juan Pablo Carbajal (desktop) <carbajal@ifi.uzh.ch> [Sat, 29 Sep 2012 13:41:02 +0200] rev 17685
help: add example of paths other than default in hgrc
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 28 Sep 2012 19:43:40 +0900] rev 17684
i18n-ja: synchronized with f36f11f2bfce
Matt Mackall <mpm@selenic.com> [Sat, 29 Sep 2012 12:28:52 -0500] rev 17683
merge with stable
Tomasz Kleczek <tomasz.kleczek@fb.com> [Thu, 27 Sep 2012 14:38:03 -0700] rev 17682
lock: fixed race condition in trylock/testlock (issue3506)
Suppose the following scenario:
1. Process A takes the lock (e.g. on commit).
2. Process B wants to grab the lock. Since lock file exists
the exception is raised. In the catch block the testlock
function is called.
3. Process A releases the lock.
4. Process B tries to read the lock file as a part of testlock
function. This results in OSError (ENOENT) and since we're
not inside the exception handler function this is propagated
and aborts the whole operation.
To fix this we now check in testlock function whether lock file
actually exists and if not (i.e. if readlock fails) we just return.
Matt Mackall <mpm@selenic.com> [Sat, 29 Sep 2012 11:57:16 -0500] rev 17681
scmutil: backout 83785bb56062 (issue3643)
Juan Pablo Carbajal (desktop) <carbajal@ifi.uzh.ch> [Sat, 29 Sep 2012 13:34:37 +0200] rev 17680
help: removing trailing spaces
Patrick Mezard <patrick@mezard.eu> [Sat, 29 Sep 2012 13:43:31 +0200] rev 17679
Merge with stable
Patrick Mezard <patrick@mezard.eu> [Sat, 29 Sep 2012 13:33:55 +0200] rev 17678
test-largefiles.t: fix find quirk on OSX
For some reason, find utility seems to preserve the trailing slash and
append a new one on OSX:
$ find somedir/
somedir/
somedir//somefile
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 20 Sep 2012 19:02:47 +0200] rev 17677
clfilter: introduce `filteredrevs` attribute on changelog
This changeset allows changelog object to be "filtered". You can assign a set of
revision numbers to the `changelog.filteredrevs` attributes. The changelog will
then pretends these revision does not exists in this repo.
A few methods need to be altered to achieve this behavior:
- tip
- __iter_
- irevs
- hasnode
- headrevs
For consistency and to help debugging, the following methods are altered too.
Tests tend to show it's not necessary to alter them but have them raise proper
exception helps to detect bad acces to filtered revisions.
- rev
- node
- linkrev
- parentrevs
- flags
The following methods would also need alteration for consistency purpose but
this is non-trivial and not done yet.
- nodemap
- strip
The C version of headrevs is not run if there is any revision to filter. It'll
need a proper rewrite later to restore performance.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 03 Sep 2012 14:29:05 +0200] rev 17676
clfilter: remove any explicit revision number from default cmdutil range
Revision "0" and "-1" may be filtered, we can't use them in any default
revrange.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 20 Sep 2012 19:01:53 +0200] rev 17675
clfilter: remove usage of `range` in favor of iteration over changelog
If we want to apply filtering at changelog level, we need to iterate over it.
See previous changeset description for details.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 03 Sep 2012 14:19:45 +0200] rev 17674
clfilter: split `revlog.headrevs` C call from python code
Make the pure python implementation of headrevs available to derived classes. It
is important because filtering logic applied by `revlog` derived class won't
have effect on `index`. We want to be able to bypass this C call to implement
our own.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 03 Sep 2012 14:12:45 +0200] rev 17673
clfilter: handle non contiguous iteration in `revlov.headrevs`
This prepares changelog level filtering. We can't assume that any revision can
be heads because filtered revisions need to be excluded.
New algorithm:
- All revisions now start as "non heads",
- every revision we iterate over is made candidate head,
- parents of iterated revisions are definitely not head.
Filtered revisions are never iterated over and never considered as candidate
head.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 20 Sep 2012 19:00:59 +0200] rev 17672
clfilter: make the revlog class responsible of all its iteration
This prepares changelog level filtering. We need the algorithms used in revlog to
work on a subset of revisions. To achieve this, the use of explicit range of
revision is banned. `range` and `xrange` calls are replaced by a `revlog.irevs`
method. Filtered super class can then overwrite the `irevs` method to filter out
revision.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 03 Sep 2012 14:05:19 +0200] rev 17671
clfilter: introduce a `hassecret` function
We can only use copy clone if the cloned repo do not have any secret changeset.
The current method for that is to run the "secret()" revset on the remote repo.
But with proper filtering of hidden or unserved revision by the remote this
revset won't return any revision even if some exist remotely. This changeset
adds an explicit function to know if a repo have any secret revision or not.
The other option would be to disable filtering for the query but I prefer the
approach above, lighter both regarding code and performance.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 03 Sep 2012 14:03:38 +0200] rev 17670
filter: `updatebranchcache` during `addchangegroup` instead of after lock
The forced recomputation of the branch cache was introduced by `ee317dbfb9d0`.
Back there, `addchangegroup` did not handle any lock logic.
Later `ee1ed6afac21` introduced lock logic to `addchangegroup`. Its description
does not explain why the `updatebranchcache` call is made outside locking. I
believe that the lock was released there because it fit well with the transaction
release already in the code.
Finally `926a06f7a353` moved all "unlocked" code of `addchangegroup` to an
`repo._afterlock` callback.
I do not think that the call to `updatebranchcache()` requires to be done
outside locking. That may even be a bad idea to do so. Bringing this call back
in the `addchangegroup` function makes the flow simpler and eases the following
up changelog level filtering business.
Augie Fackler <raf@durin42.com> [Wed, 01 Aug 2012 22:13:27 -0500] rev 17669
lock-checker: new contrib extension based on work done by Mads
This makes it possible to do lock validation as part of a normal test
run. I didn't attempt any wlock validation because that's a bit more
subtle to detect properly. Thanks to the initial patch from Mads for
the idea.
Sergey Kishchenko <voidwrk@gmail.com> [Tue, 25 Sep 2012 20:50:40 +0300] rev 17668
resolve: commit the changes after each item resolve (issue3638)
At the moment the resolve command doesn't save progress during the resolve process. In example if you try to resolve 100 conflicting files and interrupt the process (e.g., you close the external merge tool) after resolving 50 files you'll end up with 100 unresolved conflicts. Saving the progress helps a lot with long going merges. It's easy to achieve same behavior with simple script that calls resolve command for each unresolved file but it makes sense to make such behavior a default
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 22 Sep 2012 14:53:50 +0900] rev 17667
bookmarks: rename arguments/variables for source code readability
Before this patch, the argument bound to the source repository of
incoming bookmarks for "bookmarks.diff()" is named as "remote".
But in "hg outgoing" case, this argument is bound to local repository
object.
In addition to it, "local"/"remote" seem to mean not the direction of
propagation of bookmarks, but just the location of cooperative
repositories.
To indicate the direction of propagation of bookmarks clearly on the
source code, this patch uses "d(st)" and "s(rc)" combination instead
of "l(ocal)" and "r(emote)" one.
- "repo" and "remote" arguments are renamed to "dst" and "src"
- "lmarks" and "rmarks" variables are renamed to "dmarsk" and "smarks"
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 27 Sep 2012 13:54:47 +0200] rev 17666
histedit: move `continue` logic into a dedicated function
When histedit "continue", there is several complicated logic to apply in order to
detect intermediate changeset and concluded pending operation.
This changeset extract this logic in a dedicated function to lighten the main
one. No alteration to the logic is done.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Sep 2012 18:13:00 +0200] rev 17665
histedit: rename `tip` to `topmost`
I expected `tip` to be repo's tip when it was the rewritten set tip. I rename
the variable to the less ambiguous `topmost`.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Sep 2012 14:46:08 +0200] rev 17664
histedit: factorise node stripping logic
Create a function dedicated to stripping a group of node. All existing
duplicated code is replaced by call to this function.
This new function take care of stripping known and relevant node only.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Sep 2012 14:19:19 +0200] rev 17663
histedit: extract bookmark logic in a dedicated function
This lighten the main function and will help to see future changes to this
bookmark logic.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 26 Sep 2012 12:57:23 +0200] rev 17662
histedit: remove all usages of hex[:12]
- `node.hex(n)[:12]` is the same as `node.short(n)`
- `ctx.hex()[:12]` is the same as `str(ctx)`
Matt Mackall <mpm@selenic.com> [Thu, 27 Sep 2012 15:51:14 -0500] rev 17661
merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 27 Sep 2012 15:50:14 -0500] rev 17660
merge with i18n
Matt Harbison <matt_harbison@yahoo.com> [Mon, 30 Jul 2012 20:56:41 -0400] rev 17659
largefiles: enable islfilesrepo() prior to a commit (issue3541)
Previously, even if a file was added with --large, 'hg addremove' or 'hg ci -A'
would add all files (including the previously added large files) as normal
files. Only after a commit where a file was added with --large would subsequent
adds or 'ci -A' take into account the minsize or the pattern configuration.
This change more closely follows the help for largefiles, which mentions that
'add --large' is required to enable the configuration, but doesn't mention the
previously required commit.
Also, if 'hg add --large' was performed and then 'hg forget <file>' (both before
a largefile enabling commit), the forget command would error out saying
'.hglf/<file> not tracked'. This is also fixed.
This reports that a repo is largefiles enabled as soon as a file is added with
--large, which enables 'add', 'addremove' and 'ci -A' to honor the config
settings before the first commit. Note that prior to the next commit, if all
largefiles are forgotten, the repository goes back to reporting the repo as not
largefiles enabled.
It makes no sense to handle this by adding a --large option to 'addremove',
because then it would also be needed for 'commit', but only when '-A' is
specified. While this gets around the awkwardness of having to add a largefile,
then commit it, and then addremove the other files when importing an existing
codebase (and preserving that extra commit in permanent history), it does still
require finding and manually adding one of the files as --large. Therefore it
is probably desirable to have a --large option for init as well.
Matt Harbison <matt_harbison@yahoo.com> [Mon, 30 Jul 2012 20:56:41 -0400] rev 17658
largefiles: handle commit -A properly, after a --large commit (issue3542)
Previous to this, 'commit -A' would add as normal files, files that were already
committed as largefiles, resulting in files being listed twice by 'status -A'.
It also missed when (only) a largefile was deleted, even though status reported
it as '!'. This also has the side effect of properly reporting the state of the
affected largefiles in the post commit hook after a remove that also affected a
normal file (the largefiles used to be 'R', now are properly absent).
Since scmutil.addremove() is called both by the ui command (after some trivial
argument validation) and during the commit process when -A is specified, it
seems like a more appropriate method to wrap than the addremove command.
Currently, a repo is only enabled to use largefiles after an add that explicitly
identifies some file as large, and a subsequent commit. Therefore, this patch
only changes behavior after such a largefile enabling commit.
Note that in the test, if the final commit had a '-v', 'removing large8' would
be printed twice. Both of these originate in removelargefiles(). The first
print is in verbose mode after traversing remove + forget, the second is because
the '_isaddremove' attr is set and 'after' is not.
Alexander Sauta <demosito@gmail.com> [Tue, 25 Sep 2012 16:01:08 +0400] rev 17657
i18n-ru: synchronized with 6e2ab601be3f
Alexander Sauta <demosito@gmail.com> [Tue, 25 Sep 2012 15:25:12 +0400] rev 17656
merge with i18n
Nikolaj Sjujskij <sterkrig@myopera.com> [Fri, 14 Sep 2012 23:52:33 +0400] rev 17655
i18n-ru: fix spelling of "unrecognized response" translation
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 31 Aug 2012 02:06:29 +0900] rev 17654
localrepo: use "vfs" constructor/field for initialization around "store"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 31 Aug 2012 02:06:29 +0900] rev 17653
store: initialize "vfs" fields by "vfs" constructors
For backwards compatibility, "opener" fields are still left as aliases
for "vfs" ones.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 31 Aug 2012 02:06:29 +0900] rev 17652
store: rename "op" variables to "vfs"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 31 Aug 2012 02:06:29 +0900] rev 17651
store: rename "openertype" argument to "vfstype"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 31 Aug 2012 02:06:29 +0900] rev 17650
localrepo: use "vfs" constructor instead of "opener" one
This patch also changes initialization order of "*opener" and "*vfs"
fields: first, "*vfs" fields are initialized , and then, "*opener"
ones are initialized.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 31 Aug 2012 02:06:29 +0900] rev 17649
scmutil: rename classes from "opener" to "vfs"
For backwards compatibility, aliases for the old names are added,
except for "abstractopener", "statichttpopener" and "_fncacheopener",
because these are not used in Mercurial core implementation after this
patch.
"_fncacheopener" was only referred in "fncachestore" constructor, so
this patch also renames from "_fncacheopener" to "_fncachevfs" there.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 13 Aug 2012 21:25:48 +0900] rev 17648
doc: add the tool to check section marks in help documents
This patch adds "doc/check-seclevel.py" which checks below in help
documents:
- whether unknown or unavailable section marks are used or not
- whether appropriate section mark is used at sub-sectioning
It should be invoked in "doc" directory.
It checks all help documents of Mercurial (topics, commands,
extensions), if no file is specified by --file option.
With --file option, it checks contents of the specified file as help
document, for self testing purpose: -t/-c/-e/-C are used to specify
what kind of help document contents of the specified file is.
This checking is related to changeset 979b107eaea2.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 21 Sep 2012 19:27:22 +0200] rev 17647
histedit: replaces patching logic by merges
The old and fragile patching logic is replaced by smart merges (as rebase and
graft do). This should prevents some conflicts and smoother human resolution.
For this purpose the "foldchanges" function is renamed to "applychanges" and
handle a single revision only.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 21 Sep 2012 19:13:25 +0200] rev 17646
histedit-test: ensure that non commute test will never commute
The previous version would commute if using merge algorithm (to be accurate,
merge will cleanly prompt the user during the merge).
The new version create and initial commit with some content for all involved
files en ensure all changes are a content changes of the first lines. This lead
to guaranteed conflict when commuted.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 21 Sep 2012 19:25:19 +0200] rev 17645
histedit: display action being processed in debug mode
This is very useful when debugging histedit.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 21 Sep 2012 19:24:31 +0200] rev 17644
histedit: fold in memory
Update the folding code to works in memory instead of applying patches on the
working directory. This is cleaner, faster and prepare the removal of the whole
patching logic.
This new collapse function will probably move into core sooner or later. A lot
of other rewriting operation may benefit from it.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 21 Sep 2012 00:33:30 +0200] rev 17643
histedit: move makedesc function near other rules related function
Having it in the middle of action logic is confusing
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 21 Sep 2012 19:14:04 +0200] rev 17642
histedit: move `between function` outside the action logic
Having this function in the middle of action and patching logic did not make
sense
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 21 Sep 2012 00:30:22 +0200] rev 17641
histedit document the makedest function
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 21 Sep 2012 00:30:07 +0200] rev 17640
histedit: documents the between function
Matt Mackall <mpm@selenic.com> [Mon, 24 Sep 2012 15:54:45 -0500] rev 17639
templatefilters: add parameterized date method
Matt Mackall <mpm@selenic.com> [Mon, 24 Sep 2012 15:54:44 -0500] rev 17638
templatefilters: add parameterized fill function
Matt Mackall <mpm@selenic.com> [Mon, 24 Sep 2012 15:28:04 -0500] rev 17637
templater: pull in functions defined in templatefilters
Matt Mackall <mpm@selenic.com> [Mon, 24 Sep 2012 15:26:56 -0500] rev 17636
templater: add if/ifeq conditionals
Matt Mackall <mpm@selenic.com> [Mon, 24 Sep 2012 15:26:17 -0500] rev 17635
templater: add sub() function
Matt Mackall <mpm@selenic.com> [Mon, 24 Sep 2012 15:24:27 -0500] rev 17634
templater: correctly deal with r"" strings
Matt Mackall <mpm@selenic.com> [Sat, 22 Sep 2012 13:04:36 -0500] rev 17633
template: add join function
This allows:
{join(files % "{files}", ", ") }\n
to produce a properly comma-separated list
Matt Mackall <mpm@selenic.com> [Sat, 22 Sep 2012 13:02:33 -0500] rev 17632
templater: factor out runtemplate method
As a side-effect, this makes the output of runmap non-flattened
Matt Mackall <mpm@selenic.com> [Fri, 21 Sep 2012 18:54:00 -0500] rev 17631
templating: make new-style templating features work with command line lists
David M. Carr <david@carrclan.us> [Thu, 20 Sep 2012 23:30:59 -0400] rev 17630
formatter: improve implementation of data method
This alternate syntax was proposed by Bryan O'Sullivan in a review of
772b3764d3e8. I haven't been able to measure any particular performance
difference, but the new syntax is more concise and easier to read.
Bryan O'Sullivan <bryano@fb.com> [Wed, 19 Sep 2012 09:38:51 -0700] rev 17629
Merge with crew-stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 18 Sep 2012 19:46:15 +0900] rev 17628
archival: add "extended-timestamp" extra block for zip archives (issue3600)
Before this patch, zip archives created by "hg archive" are extracted
with unexpected timestamp, if TZ is not configured as GMT.
This patch adds "extended-timestamp" extra block to zip archives, and
unzip will extract such archives with timestamp specified in added
extra block, even though TZ is not configured as GMT.
Please see documents below for detail about specification of zip file
format and "extended-timestamp" extra block:
http://www.pkware.com/documents/casestudies/APPNOTE.TXT
http://www.opensource.apple.com/source/zip/zip-6/unzip/unzip/proginfo/extra.fld
Original implementation of this patch was suggested by "Jun Omae
<jun66j5@gmail.com>".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 18 Sep 2012 21:39:12 +0900] rev 17627
bookmarks: use "changectx.descendant()" for efficient descendant examination
This patch uses "old.descendant(new)" expression instead of
"new in old.descendants()" for efficiency.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 18 Sep 2012 21:39:12 +0900] rev 17626
context: add "descendant()" to changectx for efficient descendant examination
This patch adds "descendant()", which uses "revlog.descendant()" for
descendant examination, to changectx.
This implementation is more efficient than "new in old.descendants()"
expression, because:
- "changectx.descendants()" creates temporary "changectx" objects,
but "revlog.descendant()" doesn't
"revlog.descendant()" checks only revision numbers of descendants.
- "revlog.descendant()" stops scanning, when scanning of all
revisions less than one of examination target is finished
this can avoid useless scanning in "not descendant" case.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 18 Sep 2012 21:39:12 +0900] rev 17625
bookmarks: avoid redundant creation/assignment of "validdests" in "validdest()"
Adrian Buehlmann <adrian@cadifra.com> [Wed, 19 Sep 2012 14:00:23 +0200] rev 17624
store: add a fallback _pathencode Python function
which does the equivalent of parsers.pathencode, so it can be used as a
default
Adrian Buehlmann <adrian@cadifra.com> [Wed, 19 Sep 2012 13:58:51 +0200] rev 17623
store: move _plainhybridencode and _dothybridencode higher up in the file
no functional change
Adrian Buehlmann <adrian@cadifra.com> [Wed, 19 Sep 2012 11:39:18 +0200] rev 17622
test-hybridencode: use store._dothybridencode(s)
and compare it with the result of store._hybridencode(s, True)
Adrian Buehlmann <adrian@cadifra.com> [Wed, 19 Sep 2012 11:39:07 +0200] rev 17621
store: fix _hashencode call in _dothybridencode
Fixes 7840d81a80ec
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 19 Sep 2012 12:29:12 +0200] rev 17620
check-code: catch yield inside try/finally (with tests)
This is not allowed in Python 2.4.
Bryan O'Sullivan <bryano@fb.com> [Tue, 18 Sep 2012 16:30:21 -0700] rev 17619
Merge with mpm
Bryan O'Sullivan <bryano@fb.com> [Tue, 18 Sep 2012 16:25:20 -0700] rev 17618
store: use native fncache encoding function if available
This currently falls back to Python for hashed encoding.
Bryan O'Sullivan <bryano@fb.com> [Tue, 18 Sep 2012 16:09:02 -0700] rev 17617
tests: run test-hybridencode.py over both Python and C encoders
This ensures that the two always give the same answers.
Bryan O'Sullivan <bryano@fb.com> [Tue, 18 Sep 2012 15:42:19 -0700] rev 17616
store: implement fncache basic path encoding in C
(This is not yet enabled; it will be turned on in a followup patch.)
The path encoding performed by fncache is complex and (perhaps
surprisingly) slow enough to negatively affect the overall performance
of Mercurial.
For a short path (< 120 bytes), the Python code can be reduced to a fairly
tractable state machine that either determines that nothing needs to be
done in a single pass, or performs the encoding in a second pass.
For longer paths, we avoid the more complicated hashed encoding scheme
for now, and fall back to Python.
Raw performance: I measured in a repo containing 150,000 files in its tip
manifest, with a median path name length of 57 bytes, and 95th percentile
of 96 bytes.
In this repo, the Python code takes 3.1 seconds to encode all path
names, while the hybrid C-and-Python code (called from Python) takes
0.21 seconds, for a speedup of about 14.
Across several other large repositories, I've measured the speedup from
the C code at between 26x and 40x.
For path names above 120 bytes where we must fall back to Python for
hashed encoding, the speedup is about 1.7x. Thus absolute performance
will depend strongly on the characteristics of a particular repository.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 18 Sep 2012 23:32:42 +0200] rev 17615
rebase: ensure rebase does not revive extinct revision
Here, we exclude hidden changesets from a rebase operation. If we
don't, a rewritten version of the hidden changesets will be created
by rebase. Those rewritten versions won't be hidden and will likely
conflict with other rewriting or revive pruned changeset. Moreover,
rewriting hidden revisions will surprise the user.
This change would not be necessary if changelog filtering were
already in core. But it's fairly cheap and helps to increase the
test-suite for such filtering.
Once changelog level filtering is added, hidden changes will be
automatically excluded or included according to the global --hidden
flags. Plain ignoring them is good enough for now.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 18 Sep 2012 23:29:05 +0200] rev 17614
rebase: remove useless list around repo.revs
As repo.revs already returns a list.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 18 Sep 2012 23:42:27 +0200] rev 17613
rebase: properly handle --collapse when creating obsolescence marker
In collapse mode, that content of state is not suitable to compute obsolescence
markers. We explicitly pass the resulting revision instead and use it as the
successors for all elements of the rebased set.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 18 Sep 2012 23:13:31 +0200] rev 17612
rebase: allow creation obsolescence relation instead of stripping
When obsolescence feature is enabled we now create markers from the rebased
set to the resulting set instead of stripping. The "state" mapping built by
rebase holds all necessary data.
Changesets "deleted" by the rebase are marked "succeeded" by the changeset they
would be rebased one. That the best guess of "successors" we have. Getting a
successors as meaningful as possible is important for automatic resolution of
obsolescence troubles. In other word, emptied changeset will looks collapsed
with their former parents. (see "empty changeset" section of the test if you are
still confused)
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 18 Sep 2012 22:58:12 +0200] rev 17611
rebase: extract final changesets cleanup logic in a dedicated function
At the end of the rebase, rebased changesets are currently stripped. This
behavior will be eventually dropped in favor of obsolescence marker creation.
The main rebase function is already big and branchy enough. This changeset move
the clean-up logic in a dedicated function before we make it more complex.
Bryan O'Sullivan <bryano@fb.com> [Tue, 18 Sep 2012 14:37:32 -0700] rev 17610
store: refactor hashed encoding into its own function
Adrian Buehlmann <adrian@cadifra.com> [Tue, 18 Sep 2012 19:51:59 +0200] rev 17609
store: reuse direncoded path in _hybridencode
For a netbeans clone on Windows 7 x64:
Before:
$ hg perffncacheencode
! wall 3.516000 comb 3.525623 user 3.525623 sys 0.000000 (best of 3)
After:
$ hg perffncacheencode
! wall 3.443000 comb 3.447622 user 3.447622 sys 0.000000 (best of 3)
Adrian Buehlmann <adrian@cadifra.com> [Tue, 18 Sep 2012 19:51:48 +0200] rev 17608
store: extract functions _encodefname and _decodefname
Adrian Buehlmann <adrian@cadifra.com> [Tue, 18 Sep 2012 11:44:16 +0200] rev 17607
store: use fast C implementation of encodedir() if it's available
For a netbeans clone on Windows 7 x64:
Encoding all paths in the fncache:
Before:
$ hg perffncacheencode
! wall 3.639000 comb 3.634823 user 3.634823 sys 0.000000 (best of 3)
After:
$ hg perffncacheencode
! wall 3.470000 comb 3.463222 user 3.463222 sys 0.000000 (best of 3)
Writing fncache:
Before:
$ hg perffncachewrite
! wall 0.103000 comb 0.093601 user 0.093601 sys 0.000000 (best of 95)
After:
$ hg perffncachewrite
! wall 0.081000 comb 0.078001 user 0.062400 sys 0.015600 (best of 100)
Adrian Buehlmann <adrian@cadifra.com> [Tue, 18 Sep 2012 11:43:30 +0200] rev 17606
pathencode: new C module with fast encodedir() function
Not yet used (will be enabled in a later patch).
This patch is a stripped down version of patches originally created by
Bryan O'Sullivan <bryano@fb.com>
Adrian Buehlmann <adrian@cadifra.com> [Tue, 18 Sep 2012 07:58:50 +0200] rev 17605
store: add multiline doctest case for encodedir()
a followup to 64c6a0d4d4bd
Adrian Buehlmann <adrian@cadifra.com> [Mon, 17 Sep 2012 11:00:38 +0200] rev 17604
store: optimize fncache._load a bit by dirdecoding the contents in one go
For a netbeans clone on Windows 7 x64:
Before:
$ hg perffncacheload
! wall 0.124000 comb 0.124801 user 0.124801 sys 0.000000 (best of 76)
After:
$ hg perffncacheload
! wall 0.096000 comb 0.093601 user 0.078001 sys 0.015600 (best of 97)
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 18 Sep 2012 17:00:58 +0200] rev 17603
wireproto: workaround for yield inside try/finally incompatible with python2.4
Matt Mackall <mpm@selenic.com> [Tue, 18 Sep 2012 16:19:56 -0500] rev 17602
merge with stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 09 Sep 2012 12:43:24 -0400] rev 17601
largefiles: delegate to the wrapped clone command
This allows the wrapped command's validation code to run (which is currently
only to ensure 'noupdate' and 'updaterev' aren't both specified), the
copy/pasted unpacking of hg.clone() args to be removed, and any future changes
to the base command (however unlikely) to be inherited by largefiles.
Unfortunately, the command override can't be swapped entirely for an hg.clone()
override because the extra --all-largefiles arg needs to be injected. It also
isn't enough to call the wrapped clone command and leave the caching code after
it, because the file caching code needs access to the destination repo, which is
only available from hg.clone(). An alternative would be to use the dest path in
the clone command override to re-obtain a reference to the repo.
A slight deviation from the regular hg.clone() function is that the repo is NOT
deleted if the caching fails, but that was also the previous behavior. Maybe it
should for consistency?
Matt Harbison <matt_harbison@yahoo.com> [Sun, 09 Sep 2012 12:09:53 -0400] rev 17600
largefiles: don't convert dest=None to dest=hg.defaultdest() in clone command
A status message is output if hg.clone() determines the default destination
because None was provided. The previous code never passed None to hg.clone().
Matt Harbison <matt_harbison@yahoo.com> [Sun, 09 Sep 2012 03:37:38 -0400] rev 17599
largefiles: restore caching of largefiles with 'clone -U --all-largefiles'
This was broken when restoring normal -u and -U functionality.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 08 Sep 2012 13:31:06 -0400] rev 17598
largefiles: restore normal 'clone -u' and 'clone -U' functionality
Previously, tip would be checked out regardless of the -u or -U parameter. I'm
not sure what the 'required for successful walkchangerevs' comment meant, but it
appears to reference code which has since moved to downloadlfiles() in
7d6a660ca151. Perhaps it was to force caching when the -U parameter is given?
The price of this change is that -U --all-largefiles won't cache anything. That
will be fixed next.
Note that X + Y in the 'X largefiles updated, n removed' and 'Y additional
largefiles cached' lines do not add up to the same values in these tests, but
all of the largefiles have been downloaded. The reason being that several
largefiles have the same content (eb7338044 is pointed to by sub/large2, large3
and sub/large4). In the 'clone -u 1' operation, this largefile is cached to
populate the working directory, even without --all-largefiles. That means the
file isn't downloaded again and cached in the rev where large3 and sub/large4
both point to this file. Downloading that one file in that one rev seems to be
counted twice with 'clone -u 0'. (Maybe it is also being downloaded twice?)
David M. Carr <david@carrclan.us> [Sat, 15 Sep 2012 22:50:34 -0400] rev 17597
formatter: add base implementation of data method
Previously, nothing was done with the passed in values, which clearly wasn't
the intention.
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 18 Sep 2012 15:36:58 +0200] rev 17596
merge with stable
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 18 Sep 2012 15:30:22 +0200] rev 17595
merge with main
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 18 Sep 2012 15:29:43 +0200] rev 17594
largefiles: fix trailing spaces in test-largefiles.t
With the default branch this will cause warnings from check-code.
Adrian Buehlmann <adrian@cadifra.com> [Sun, 16 Sep 2012 22:43:24 +0200] rev 17593
test-hybridencode: add a case for direncode
Adrian Buehlmann <adrian@cadifra.com> [Mon, 17 Sep 2012 08:58:35 +0200] rev 17592
store: optimize fncache._write by direncoding the contents in one go
For a netbeans clone on Windows 7 x64:
Before:
$ hg perffncachewrite
! wall 0.210000 comb 0.218401 user 0.202801 sys 0.015600 (best of 47)
After:
$ hg perffncachewrite
! wall 0.104000 comb 0.109201 user 0.078000 sys 0.031200 (best of 95)
Adrian Buehlmann <adrian@cadifra.com> [Sun, 16 Sep 2012 11:41:02 +0200] rev 17591
store: move encode lambda logic into fncachestore
and define two named functions at module scope.
This again also speeds up perffncacheencode a little bit.
Adrian Buehlmann <adrian@cadifra.com> [Sun, 16 Sep 2012 11:36:14 +0200] rev 17590
store: eliminate one level of lambda functions on _hybridencode
Adrian Buehlmann <adrian@cadifra.com> [Sun, 16 Sep 2012 11:36:06 +0200] rev 17589
store: parameter path of _auxencode is now a list of strings
Adrian Buehlmann <adrian@cadifra.com> [Sun, 16 Sep 2012 11:36:00 +0200] rev 17588
store: keep an accumulated length for the shorted dirs in _hybridencode
so we don't have to repeatedly do '/'.join(sdirs) inside the loop
Adrian Buehlmann <adrian@cadifra.com> [Sun, 16 Sep 2012 11:35:55 +0200] rev 17587
store: reorder basename assignment in _hybridencode
Adrian Buehlmann <adrian@cadifra.com> [Sat, 15 Sep 2012 21:44:08 +0200] rev 17586
store: remove uneeded startswith('data/') checks in encodedir() and decodedir()
I don't think we will ever have anything in the store that resides inside a
directory that ends in .i or .d under store/ that we wouldn't want to have
direncoded. The files not under data/ surely don't need direncoding, but it
doesn't harm to let these few run through it. It hurts more to check whether the
thousands of other files start with 'data/'. They do anyway.
See also 810387f59696 (fixed with c31fe74a6633), which moved the direncoding
from filelog into store
Adrian Buehlmann <adrian@cadifra.com> [Sat, 15 Sep 2012 21:43:56 +0200] rev 17585
store: remove uneeded startswith('data/') check in _hybridencode()
Adrian Buehlmann <adrian@cadifra.com> [Sat, 15 Sep 2012 21:43:14 +0200] rev 17584
store: refactor splitting off of "data/" in _hybridencode()
encodefilename() already calls encodedir(). Note that encodedir() skips the
encoding if the path doesn't start with "data/".
Matt Mackall <mpm@selenic.com> [Mon, 17 Sep 2012 15:13:17 -0500] rev 17583
merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 17 Sep 2012 15:13:03 -0500] rev 17582
merge with crew
Patrick Mezard <patrick@mezard.eu> [Mon, 17 Sep 2012 21:53:50 +0200] rev 17581
Merge with stable
Tim Delaney <timothy.c.delaney@gmail.com> [Mon, 17 Sep 2012 21:33:16 +0200] rev 17580
hgweb: fix incorrect graph padding calculation (issue3626)
hgweb has an incorrect padding calculation, causing the text to move further
away from the graph the more branches there are (issue3626). This patch fixes
all existing templates (gitweb, monoblue, paper and spartan).
Tests updated by Patrick Mezard <patrick@mezard.eu>
Matt Harbison <matt_harbison@yahoo.com> [Wed, 05 Sep 2012 22:42:23 -0400] rev 17579
largefiles: preserve the exit status of the forget command
This maintains the exit codes documented in commands.py.
Matt Harbison <matt_harbison@yahoo.com> [Wed, 05 Sep 2012 22:31:03 -0400] rev 17578
largefiles: preserve the exit status of the rebase command
Matt Harbison <matt_harbison@yahoo.com> [Wed, 05 Sep 2012 22:12:40 -0400] rev 17577
largefiles: preserve the exit status of the log command
Matt Harbison <matt_harbison@yahoo.com> [Sun, 09 Sep 2012 20:18:08 -0400] rev 17576
largefiles: exit from remove with 1 on warnings
This maintains the exit codes documented in commands.py.
Matt Harbison <matt_harbison@yahoo.com> [Wed, 05 Sep 2012 21:26:08 -0400] rev 17575
largefiles: preserve exit code from outgoing command (issue3611)
This maintains the exit codes documented in commands.py.
Adrian Buehlmann <adrian@cadifra.com> [Sat, 15 Sep 2012 21:43:05 +0200] rev 17574
store: let _auxencode() return the list of path segments
so we can spare us splitting the path again in _hybridencode()
Adrian Buehlmann <adrian@cadifra.com> [Sat, 15 Sep 2012 21:42:58 +0200] rev 17573
store: eliminate unneded last assignment to n in _auxencode()
The check for period or space at the end of the string is the last one, the
local variable n is thus not used anymore.
Adrian Buehlmann <adrian@cadifra.com> [Sat, 15 Sep 2012 21:42:52 +0200] rev 17572
store: unindent most of the contents of the for loop in _auxencode()
by refactoring
for i, n in enumerate(res):
if n:
<main code block>
to
for i, n in enumerate(res):
if not n:
continue
<main code block>
(no functional change)
Adrian Buehlmann <adrian@cadifra.com> [Sat, 15 Sep 2012 21:42:43 +0200] rev 17571
store: optimize _auxencode() by assigning to the list elements of the path
Adrian Buehlmann <adrian@cadifra.com> [Sat, 15 Sep 2012 21:41:09 +0200] rev 17570
store: optimze _auxencode() a bit by grouping the reserved names by length
This reduces perffncacheencode wall time on Windows 7 x64 for my netbeans clone
here from 4.3 to 4.0 (7% faster).
Adrian Buehlmann <adrian@cadifra.com> [Sat, 15 Sep 2012 21:41:53 +0200] rev 17569
store: explain "aux.foo" versus "foo.aux" in doc of _auxencode()
Adrian Buehlmann <adrian@cadifra.com> [Sat, 15 Sep 2012 21:41:45 +0200] rev 17568
store: add 'com0' and 'lpt0' doctest cases for _auxencode()
These are already covered by test-hybridencode.py, but they are so noteworthy
that I think they deserve being shown right in that doctest.
Patrick Mezard <patrick@mezard.eu> [Sat, 15 Sep 2012 08:38:02 +0200] rev 17567
wireproto: fix check-code.py breakage introduced by 6d97dd630d79
Nikolaj Sjujskij <sterkrig@myopera.com> [Sat, 15 Sep 2012 00:06:08 +0400] rev 17566
record: fix display of non-ASCII names in chunk selection
b013baa3898e fixed display of non-ASCII names in file-selecting prompt, but
display in chunk selection remained broken. The reason is that using '%r' in
string formatting results in calling `repr` on file names, thus mangling
non-ASCII ones.
Patrick Mezard <patrick@mezard.eu> [Fri, 14 Sep 2012 21:05:24 +0200] rev 17565
tests: enable even more Windows server tests
Patrick Mezard <patrick@mezard.eu> [Fri, 14 Sep 2012 20:40:52 +0200] rev 17564
test-obsolete-checkheads: fix on windows
Bryan O'Sullivan <bryano@fb.com> [Fri, 14 Sep 2012 12:09:44 -0700] rev 17563
sshserver: avoid a multi-dot attribute lookup in a hot loop
This improves stream_out performance by about 3%.
Bryan O'Sullivan <bryano@fb.com> [Fri, 14 Sep 2012 12:09:05 -0700] rev 17562
store: reduce string concatenation when joining
This improves stream_out performance by a couple of percent.
Bryan O'Sullivan <bryano@fb.com> [Fri, 14 Sep 2012 12:08:55 -0700] rev 17561
scmutil: use the new faster path split
Combined with a few other patches in this series, this contributes
to improving stream_out performance by 10%.
Bryan O'Sullivan <bryano@fb.com> [Fri, 14 Sep 2012 12:08:17 -0700] rev 17560
util: implement a faster os.path.split for posix systems
This is not yet used.
Bryan O'Sullivan <bryano@fb.com> [Fri, 14 Sep 2012 12:07:33 -0700] rev 17559
scmutil: make join cheaper
Combined with a few followup patches, this contributes to improving
stream_out performance by 10%.
Bryan O'Sullivan <bryano@fb.com> [Fri, 14 Sep 2012 12:06:40 -0700] rev 17558
wireproto: don't format a debug string inside a hot loop
This improves stream_out performance by about 5%.
Bryan O'Sullivan <bryano@fb.com> [Fri, 14 Sep 2012 12:05:37 -0700] rev 17557
wireproto: bypass filechunkiter for small files when streaming
Merely creating and using a generator has a measurable impact,
particularly since the common case for stream_out is generators that
yield just once. Avoiding generators improves stream_out performance
by about 7%.
Bryan O'Sullivan <bryano@fb.com> [Fri, 14 Sep 2012 12:05:12 -0700] rev 17556
wireproto: don't audit local paths during stream_out
Auditing at this stage is both pointless (paths are already trusted by
the local repo) and expensive. Skipping the audits improves stream_out
performance by about 15%.
Bryan O'Sullivan <bryano@fb.com> [Fri, 14 Sep 2012 12:04:46 -0700] rev 17555
scmutil: delegate mustaudit property to the real opener
This will be used by an upcoming patch.
Bryan O'Sullivan <bryano@fb.com> [Fri, 14 Sep 2012 12:04:35 -0700] rev 17554
scmutil: turn opener._audit into a property, mustaudit
This will be used by an upcoming patch.
Adrian Buehlmann <adrian@cadifra.com> [Fri, 14 Sep 2012 13:02:31 +0200] rev 17553
perf: add perffncacheencode
Examples (all done with somewhat dated clones I found on my disk):
Netbeans (~120k entries in fncache):
$ hg perffncacheencode
! wall 4.338000 comb 4.336828 user 4.336828 sys 0.000000 (best of 3)
Openoffice (~77k entries in fncache)):
$ hg perffncacheencode
! wall 1.533000 comb 1.528810 user 1.528810 sys 0.000000 (best of 7)
Xen (~10k entries in fncache):
$ hg perffncacheencode
! wall 0.198000 comb 0.187201 user 0.187201 sys 0.000000 (best of 51)
Done on Windows 7 x64.
Bryan O'Sullivan <bryano@fb.com> [Thu, 13 Sep 2012 17:00:56 -0700] rev 17552
Merge with mpm
Pierre-Yves David <pierre-yves.david@logilab.fr> [Sun, 26 Aug 2012 01:28:22 +0200] rev 17551
bookmark: take successors into account when updating (issue3561)
When we rewrite a bookmarked changeset, we want to update the
bookmark on its successors. But the successors are not descendants
of its precursor (by definition). This changeset alters the bookmarks
logic to update bookmark location if the newer location is a successor
of the old one[1].
note: valid destinations are in fact any kind of successors of any kind
of descendants (recursively.)
This changeset requires the enabling of the obsolete feature in
some bookmark tests.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Sun, 26 Aug 2012 00:28:56 +0200] rev 17550
bookmarks: extract valid destination logic in a dedicated function
We usually update bookmarks only if the new location is descendant of the old
bookmarks location. We extract this logic into a function. This is the first
step to allow more complex logic using obsolescence in this validation of the
bookmark movement.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Sun, 26 Aug 2012 00:27:44 +0200] rev 17549
checkheads: don't warn about unsynced changes that we ill obsolete
We won't be able to pull them after this push.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Sun, 26 Aug 2012 00:25:33 +0200] rev 17548
checkheads: check successors for new heads in both missing and common
A relevant obsolete marker may have been added -after- we previously
exchanged the changeset. We have to search for remote heads that
disappear by the sole fact of pushing obsolescence.
This case will also happen when remote got the new version from a
repository that does not propagate obsolescence markers.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 24 Aug 2012 16:52:45 +0200] rev 17547
checkheads: attend to phases when computing new heads with obsolete
Checkheads was more permissive than expected. When the remote heads
are public we don't need to search for successors. None will make a
public head disappear.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 01 Aug 2012 19:35:05 +0200] rev 17546
test: add testing of checkheads behavior with obsolete
Expected behavior is quite complex. Explicit testing with clear
scenarios is welcome.
Matt Mackall <mpm@selenic.com> [Thu, 13 Sep 2012 14:33:10 -0500] rev 17545
merge with stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 11 Sep 2012 10:59:21 -0300] rev 17544
i18n-pt_BR: synchronized with f5e86b416e05
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 11 Sep 2012 10:56:23 -0300] rev 17543
merge with i18n
Martin Schröder <martin.schroeder@nerdluecht.de> [Mon, 10 Sep 2012 09:40:42 +0200] rev 17542
i18n-de: Remove unused sprintf parameter
Simon Heimberg <simohe@besonet.ch> [Sat, 28 Jul 2012 23:28:17 +0200] rev 17541
tests: unset variable HG if it is set
When hg tries to call itself it can call a different hg executable when this
variable is set. Some tests fail when the called hg version is different.
Adrian Buehlmann <adrian@cadifra.com> [Thu, 13 Sep 2012 17:46:34 +0200] rev 17540
test-hybridencode: a few more cases
Patrick Mezard <patrick@mezard.eu> [Wed, 12 Sep 2012 22:21:54 +0200] rev 17539
tests: enable more server tests on Windows
Patrick Mezard <patrick@mezard.eu> [Wed, 12 Sep 2012 22:31:54 +0200] rev 17538
test-static-http.t: enable on Windows
We cannot read $! to get the background job process identifier, with
MinGW it can return internal identifiers not matching the native Windows
ones. Instead we introduce a helper script polling on the pid file. We
assume the pid file data will be written in order.
Bryan O'Sullivan <bryano@fb.com> [Tue, 11 Sep 2012 08:36:09 -0700] rev 17537
Merge spelling fixes
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17536
spelling: requested
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17535
en-us: serialization
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17534
en-us: recognized
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17533
en-us: penalize
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17532
en-us: initialization
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17531
en-us: Initialize
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17530
grammar: it-handles
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17529
grammar: rolled-back
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17528
grammar: just-the-heads
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17527
spelling: value
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17526
spelling: update
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17525
spelling: transferred
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17524
spelling: transaction
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17523
spelling: thoroughly
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17522
spelling: syntactic
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17521
spelling: synchronize
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17520
spelling: supersede
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17519
spelling: successfully
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17518
spelling: succeeded
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17517
spelling: Structured
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17516
spelling: split
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17515
spelling: specific
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17514
spelling: shouldn't
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17513
spelling: sentinel
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:19 -0700] rev 17512
spelling: responsibility
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17511
spelling: relies
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17510
spelling: release
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17509
spelling: recursion
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17508
spelling: propagated
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17507
spelling: primarily
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17506
spelling: prior
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17505
spelling: precede
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17504
spelling: override
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17503
spelling: operations
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17502
spelling: multiple
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17501
spelling: Macintosh
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17500
en-us: labeled
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17499
spelling: just
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17498
spelling: journaling
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17497
spelling: deactivates
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17496
spelling: implementing
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17495
spelling: indented
* * *
spelling: indented
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17494
spelling: further
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17493
spelling: following
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17492
spelling: nonexistent
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17491
spelling: existence
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17490
spelling: exercise
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17489
spelling: equivalent
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17488
spelling: efficiently
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17487
spelling: don't/do not
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17486
spelling: doesn't/does not
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17485
spelling: destination
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17484
spelling: directly
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17483
spelling: descendants
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17482
spelling: deactivate
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17481
spelling: dependent
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17480
spelling: Failing
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17479
spelling: Explicitly
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17478
spelling: Environment
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17477
spelling: Construct
timeless@mozdev.org [Fri, 17 Aug 2012 13:58:18 -0700] rev 17476
spelling: Authoritative
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 11 Sep 2012 00:12:07 +0200] rev 17475
amend: add obsolete support
If the obsolete feature is enabled, `hg commit --amend` marks a
changeset as obsolete instead of stripping it.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 24 Aug 2012 21:16:23 +0200] rev 17474
obsolete: add a high level function to create an obsolete marker
This function is designed to be used by all code that creates new
obsolete markers in the local repository.
It is not used by debugobsolete because debugobsolete allows the
use of an unknown hash as argument.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Sat, 25 Aug 2012 16:20:41 +0200] rev 17473
amend: use an explicit commit message for temporary amending commit
Before this changeset, the extra commit created during amend had
the same description as the final commit. This was a bit confusing
when trying to understand what that extra commit was about.
This changeset changes the description of such commit to:
temporary amend commit for <ammend-commit-hash>
The old behaviour was not a big deal, but would become more confusing
once we use obsolescence marker instead of stripping the precursors.
This also helps if the user restores a strip backup.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 10 Sep 2012 23:44:24 +0200] rev 17472
amend: wrap all commit operations in a single transaction
This allows proper recovery of an interrupted amend process.
No changes are made to the logic besides:
- indent operations into a single try-except clause,
- some comment and code wrapping to 80 chars,
- strip logic should not be contained in the transaction and is extracted from
the main code.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 25 Aug 2012 15:37:28 +0200] rev 17471
amend: lock the repository during the whole process
Without this changes another writer can lock the repository in the middle the
amend process. The resulting mess can be pretty ugly.
Bryan O'Sullivan <bryano@fb.com> [Mon, 10 Sep 2012 14:08:10 -0700] rev 17470
Merge with crew
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 28 Aug 2012 20:52:04 +0200] rev 17469
obsolete: introduce caches for all meaningful sets
This changeset introduces caches on the `obsstore` that keeps track of sets of
revisions meaningful for obsolescence related logics. For now they are:
- obsolete: changesets used as precursors (and not public),
- extinct: obsolete changesets with osbolete descendants only,
- unstable: non obsolete changesets with obsolete ancestors.
The cache is accessed using the `getobscache(repo, '<set-name>')` function which
builds the cache on demand. The `clearobscaches(repo)` function takes care of
clearing the caches if any.
Caches are cleared when one of these events happens:
- a new marker is added,
- a new changeset is added,
- some changesets are made public,
- some public changesets are demoted to draft or secret.
Declaration of more sets is made easy because we will have to handle at least
two other "troubles" (latecomer and conflicting).
Caches are now used by revset and changectx. It is usually not much more
expensive to compute the whole set than to check the property of a few elements.
The performance boost is welcome in case we apply obsolescence logic on a lot of
revisions. This makes the feature usable!
Patrick Mezard <patrick@mezard.eu> [Sun, 09 Sep 2012 12:35:06 +0200] rev 17468
Merge with stable
Patrick Mezard <patrick@mezard.eu> [Sun, 09 Sep 2012 12:31:14 +0200] rev 17467
test-http-branchmap: enable on Windows
Tests using "hg serve --daemon" are currently disabled on Windows for
lack of proper kill utility. The one shipped with MinGW operates on
internal process identifiers and not on the ones recorded by hg serve.
Fortunately we can replace most of them by calls to killdaemons.py.
This patch is a proof of concept on how to run these tests on Windows.
The plan is:
- Check test-http-branchmap.t does not fail/hang on the buildbot
- Convert all kill utility calls to killdaemons.py calls.
- Add a rule in check-code.py to forbid kill calls, or ignore the
remaining ones (test-hup.t, etc.).
- Possibly drop the 'serve' rule from hghave.
The:
listening at http://*:$HGPORT1/
line does not appear on Windows because the detached process can no
longer write on its parent streams. Grepping hg serve stdout directly
causes the parent process to never return and hangs the test. This is a
bug, but I have no simple solution and prefer to pay this small price
and enable hg serve tests on Windows.
Patrick Mezard <patrick@mezard.eu> [Mon, 20 Aug 2012 22:36:51 +0200] rev 17466
killdaemons: take file argument explicitely
It makes it easier to use as a generic replacement for kill utility,
mostly for Windows tests.
Patrick Mezard <patrick@mezard.eu> [Sun, 19 Aug 2012 18:06:15 +0200] rev 17465
killdaemons: add windows implementation
Patrick Mezard <patrick@mezard.eu> [Sun, 19 Aug 2012 16:41:09 +0200] rev 17464
run-tests: do not duplicate killdaemons() code
Kevin Bullock <kbullock@ringworld.org> [Fri, 31 Aug 2012 13:17:16 -0500] rev 17463
bash_completion: add rebase rev completion
Jim Hague <jim.hague@acm.org> [Mon, 03 Sep 2012 17:25:50 +0100] rev 17462
tests: correct quoting of double quotes in here documents used to write hooks
Some shells, e.g. ksh89, will emit \" in a here document as ",
while others will emit \". To be sure of getting \", we specify \\".
This gets test-commit-amend.t and test-largefiles.t working on AIX.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Aug 2012 16:47:08 +0200] rev 17461
amend: preserve phase of amended revision (issue3602)
New commit from the amend process were created without any phase contraint. If
the amended changeset had a different phase from it's parent, the phases data
were lost.
The changeset ensure the new commit are created in the same phase than the
original changeset.
Ankur Dahiya <ankurd@fb.com> [Mon, 27 Aug 2012 09:37:49 -0700] rev 17460
color: enabled color support for export command (issue1507)
The export command didn't output the diffs in color, even when color support
was enabled. This patch fixes that by making the export command use the default
ui.write method, instead of directly manipulating the ui.fout file object.
Also added a test case to verify color output to test-export.t.
Adrian Buehlmann <adrian@cadifra.com> [Thu, 06 Sep 2012 22:51:32 +0200] rev 17459
test-hybridencode: extensions are replicated on hashed paths
unfortunately, this is done unbounded, so the length of the hashed path
is not really limited
Bryan O'Sullivan <bryano@fb.com> [Thu, 06 Sep 2012 10:57:49 -0700] rev 17458
Merge with crew-stable
Adrian Buehlmann <adrian@cadifra.com> [Thu, 06 Sep 2012 19:53:23 +0200] rev 17457
test-hybridencode: dropping dir eight in hashed path due to dot or space at end
Yuya Nishihara <yuya@tcha.org> [Wed, 05 Sep 2012 23:59:27 +0900] rev 17456
hgweb: respond 403 forbidden for ssl required error
It's preferable to report "ssl required" as an error, so that the client
can detect error and exit with 255. Currently hg exits with 1, which is
"nothing to push."
Yuya Nishihara <yuya@tcha.org> [Wed, 05 Sep 2012 23:58:43 +0900] rev 17455
test-push-http: include exit status of hg push
Takumi IINO <trot.thunder@gmail.com> [Fri, 07 Sep 2012 00:42:42 +0900] rev 17454
help: fix literal block syntax
Adrian Buehlmann <adrian@cadifra.com> [Thu, 06 Sep 2012 15:53:59 +0200] rev 17453
test-hybridencode: adding one truncated char to dir 1..7 won't drop dir 8
Adrian Buehlmann <adrian@cadifra.com> [Thu, 06 Sep 2012 15:04:07 +0200] rev 17452
test-hybridencode: testing dir levels and dir prefix lenghts of hashed paths
Patrick Mezard <patrick@mezard.eu> [Wed, 05 Sep 2012 22:01:09 +0200] rev 17451
histedit: fix unused variable warnings spotted by pyflakes
Patrick Mezard <patrick@mezard.eu> [Fri, 03 Aug 2012 17:26:58 +0200] rev 17450
test-convert-mtn.t: generate files in binary mode
Patrick Mezard <patrick@mezard.eu> [Fri, 03 Aug 2012 17:26:30 +0200] rev 17449
test-convert-mtn.t: use #if to set mtndir to the correct value
Monotone store directory name is not the same on Windows and Unix.
Patrick Mezard <patrick@mezard.eu> [Fri, 03 Aug 2012 17:56:34 +0200] rev 17448
test-convert-darcs.t: fix elementtree test
On OSX, the test succeeds because darcs aborts when trying to convert
the dummy repository, and the test only grep for the output. On Windows,
the darcs call succeeds for some reason but darcs fails to emit any output,
which is not a valid XML output, which causes a traceback including the
ElementTree string matched by the check, and makes a false positive.
Check with a real repository instead. The darcs upgrade test is moved
at the end so we can use our handmade darcs repository for the test.
Patrick Mezard <patrick@mezard.eu> [Fri, 03 Aug 2012 17:59:21 +0200] rev 17447
test-convert-svn-branches.t: fix self call failure on Windows
The error message is preceded by a cmd.exe error.
Sumeet <sumeet@fb.com> [Mon, 27 Aug 2012 12:41:10 -0700] rev 17446
record: checks for valid username before starting recording process (issue3456)
Adrian Buehlmann <adrian@cadifra.com> [Wed, 05 Sep 2012 14:08:31 +0200] rev 17445
test-hybridencode: test full range of ASCII codes from 126 to 255
Adrian Buehlmann <adrian@cadifra.com> [Wed, 05 Sep 2012 13:57:58 +0200] rev 17444
test-hybridencode: remove x00 character case
precludes implementation in C
Bryan O'Sullivan <bryano@fb.com> [Tue, 04 Sep 2012 15:50:42 -0700] rev 17443
Merge with crew-stable
Bryan O'Sullivan <bryano@fb.com> [Tue, 04 Sep 2012 15:50:15 -0700] rev 17442
Merge
Bryan O'Sullivan <bryano@fb.com> [Tue, 04 Sep 2012 15:46:04 -0700] rev 17441
subrepo: encode unicode path names (issue3610)
Subversion 1.7 changes its XML output to include an explicit encoding tag:
<?xml version="1.0" encoding="UTF-8"?>
This triggers xml.dom.minidom to always return unicode strings, causing
other parts of the code to explode.
We unconditionally encode path names before handing them back, which
works with both str (actually a no-op) and unicode values.
Adrian Buehlmann <adrian@cadifra.com> [Fri, 31 Aug 2012 13:08:11 +0200] rev 17440
test-hybridencode: add more testcases for hashed paths
Bryan O'Sullivan <bryano@fb.com> [Tue, 04 Sep 2012 13:50:50 -0700] rev 17439
Merge with crew-stable
Bryan O'Sullivan <bryano@fb.com> [Tue, 04 Sep 2012 13:50:22 -0700] rev 17438
Merge
Bryan O'Sullivan <bryano@fb.com> [Tue, 04 Sep 2012 13:49:39 -0700] rev 17437
Merge with stable
Bryan O'Sullivan <bryano@fb.com> [Tue, 04 Sep 2012 13:49:10 -0700] rev 17436
Merge
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Fri, 31 Aug 2012 23:42:02 +0200] rev 17435
merge with crew-stable
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Aug 2012 22:13:24 +0200] rev 17434
test: remove invalid hidden rev in graphlog test
The hidden set of revision can not have descendant outside this set.
The extension is patched to raise and exception when this happen.
Patrick Mezard <patrick@mezard.eu> [Wed, 29 Aug 2012 21:26:39 +0200] rev 17433
Merge with stable
Adrian Buehlmann <adrian@cadifra.com> [Wed, 29 Aug 2012 11:48:36 +0200] rev 17432
test-hybridencode: more testcases
Mads Kiilerich <mads@kiilerich.com> [Wed, 29 Aug 2012 01:24:57 +0200] rev 17431
remove template-vars.txt - it is outdated and neither usable nor necessary
Mads Kiilerich <mads@kiilerich.com> [Mon, 27 Aug 2012 23:17:21 +0200] rev 17430
largefiles: minor code cleanup
Fix:
* unnecessary use of map and lambda
* comment instead of readable code
* comparing None with 0
* and...or anti-pattern for 'ternary if' with very clever handling of i=None
Mads Kiilerich <mads@kiilerich.com> [Mon, 27 Aug 2012 23:16:22 +0200] rev 17429
declare local constants instead of using magic values and comments
Mads Kiilerich <mads@kiilerich.com> [Mon, 27 Aug 2012 23:14:27 +0200] rev 17428
avoid using abbreviations that look like spelling errors
Mads Kiilerich <mads@kiilerich.com> [Tue, 21 Aug 2012 02:41:20 +0200] rev 17427
improve some comments and docstrings, fixing issues found when spell checking
Mads Kiilerich <mads@kiilerich.com> [Tue, 21 Aug 2012 02:41:20 +0200] rev 17426
delete some dead comments and docstrings
Mads Kiilerich <mads@kiilerich.com> [Wed, 15 Aug 2012 22:39:18 +0200] rev 17425
fix wording and not-completely-trivial spelling errors and bad docstrings
Mads Kiilerich <mads@kiilerich.com> [Wed, 15 Aug 2012 22:38:42 +0200] rev 17424
fix trivial spelling errors
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 31 Aug 2012 23:27:26 +0200] rev 17423
strip: fix revset usage (issue3604)
The `repair` code builds a giant revset query instead of using the "%lr" idiom.
It is inefficient and crash when the number of stripped changeset is too big.
This changeset replaces the bad code by a better revset usage.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 02 Aug 2012 13:51:49 +0200] rev 17422
mergetools.hgrc: set vimdiff to check=changed
The standard reaction in from of unexpected vimdiff is to ":quit". This will
make vimdiff return a 0 status even if no merge were done at all.
This change detect that nothing have been changed in vimdiff as a potential
unresolved conflict.
Mads Kiilerich <mads@kiilerich.com> [Wed, 29 Aug 2012 02:09:43 +0200] rev 17421
hgweb: avoid bad $$ processing in graph (issue3601)
JavaScript .replace always magically processed $$ $& $' $` in replacement
strings and thus displayed subject lines incorrectly in the graph view.
Instead of regexps and .replace we now just create the strings the right way in
the first place.
Steve Borho <steve@borho.org> [Wed, 29 Aug 2012 13:16:56 -0500] rev 17420
wix: pick up new template files
Matt Mackall <mpm@selenic.com> [Sat, 01 Sep 2012 12:49:43 -0500] rev 17419
Added signature for changeset 072209ae4ddb
Matt Mackall <mpm@selenic.com> [Sat, 01 Sep 2012 12:49:39 -0500] rev 17418
Added tag 2.3.1 for changeset 072209ae4ddb
Matt Mackall <mpm@selenic.com> [Sat, 01 Sep 2012 12:48:08 -0500] rev 17417
merge with crew
Martin Schröder <martin.schroeder@nerdluecht.de> [Sat, 01 Sep 2012 14:31:31 +0200] rev 17416
i18n-de: synchronized with 20665910d9d9; fix Bug 3082
Wagner Bruna <wbruna@yahoo.com> [Fri, 31 Aug 2012 21:49:52 -0300] rev 17415
i18n-pt_BR: synchronized with bdd248666dbc
Wagner Bruna <wbruna@yahoo.com> [Fri, 31 Aug 2012 21:44:58 -0300] rev 17414
merge with i18n
Patrick Mezard <patrick@mezard.eu> [Fri, 03 Aug 2012 21:37:33 +0200] rev 17413
convert: use subprocess for all commandline calls
Avoid mixing popen and subprocess calls, it simplifies the command line
generation and quoting issues with redirections.
In practice, it fixes the subversion sink on Windows and probably helps
with monotone and darcs sources.
Patrick Mezard <patrick@mezard.eu> [Fri, 03 Aug 2012 21:05:01 +0200] rev 17412
convert: make commandline.limit_arglist private, simplify
Matt Harbison <matt_harbison@yahoo.com> [Tue, 14 Aug 2012 22:38:25 -0400] rev 17411
largefiles: adjust localstore to handle batch statlfile requests (issue3583)
This fixes a traceback when pushing to a local repo which started with
9e1616307c4c.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 31 Aug 2012 23:27:26 +0200] rev 17410
strip: fix revset usage (issue3604)
The `repair` code builds a giant revset query instead of using the "%lr" idiom.
It is inefficient and crash when the number of stripped changeset is too big.
This changeset replaces the bad code by a better revset usage.
Matt Mackall <mpm@selenic.com> [Fri, 31 Aug 2012 20:40:13 -0500] rev 17409
merge with i18n
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 27 Aug 2012 23:33:38 +0900] rev 17408
i18n-ja: synchronized with 9d9d15928521
Leah Xue <leahxue@fb.com> [Tue, 21 Aug 2012 16:06:34 -0700] rev 17407
histedit: factored out diff/patch logic
This patch is the first step towards a refactoring of the histedit
extension to use underlying graft machinery instead of diff/patch as
discussed in issue3527. Replacing diff/patch with graft is necessary
to fix, for example, issue3582.
Matt Mackall <mpm@selenic.com> [Tue, 28 Aug 2012 17:59:08 -0500] rev 17406
merge with stable
Steve Borho <steve@borho.org> [Tue, 28 Aug 2012 11:15:34 -0500] rev 17405
obsolete: import modules within mercurial/ without "from mercurial"
Adrian Buehlmann <adrian@cadifra.com> [Tue, 28 Aug 2012 20:57:11 +0200] rev 17404
test-hybridencode: add cases for com0..9 and lpt0..9
note that com0 and lpt0 are *not* encoded
Nikolaj Sjujskij <sterkrig@myopera.com> [Thu, 16 Aug 2012 19:04:27 +0400] rev 17403
zsh completion: tweak options for `incoming`, `outgoing` and `rebase`
* `incoming --rev` completes _hg_labels, not jsut tags;
* `outgoing --rev` completes revrange;
* source/dest/base for `rebase` require argument.
Nikolaj Sjujskij <sterkrig@myopera.com> [Thu, 16 Aug 2012 19:03:01 +0400] rev 17402
zsh completion: update mq commands completion
* add qclone command;
* qapplied/qunapplied: add --last/--first;
* qdiff: add all diff options;
* qfold: add --force, --no-backup;
* qgoto: add --keep-changes;
* qimport: add --git, --push;
* qnew: add user- and date-related options;
* qpop/qpush: add --keep-changes and --no-backup, drop --name;
* qpush: drop deprecated --merge;
* qrename: complete only unapplied patches' names;
* strip: add --rev, --keep, --bookmark, update descriptions, drop --backup.
Nikolaj Sjujskij <sterkrig@myopera.com> [Thu, 16 Aug 2012 19:03:01 +0400] rev 17401
zsh completion: add new options for existing commands
* backout: add --tool;
* bisect: add --extend;
* bookmarks: add --inactive;
* branches: add --closed;
* bundle: add --rev, --all, --branch;
* cat: add --decode;
* clone: add --updaterev, --branch, --pull and use common-with-qclone opts;
* commit: add --close-branch;
* diff: add --change, --reverse, --stat, --text, --unified;
* export: add --rev;
* grep: add --date;
* heads: add --topo, --closed;
* help: add --extension, --command, --keywords; complete additional help
topics also, not commands only;
* identify: add --bookmark and remote_opts;
* import: add --no-commit, --exact, --import-branch, --date, --user,
--similarity and commit options;
* log: add --user, --date, --stat, --git, --graph;
* manifest: add --rev;
* push: add --new-branch;
* resolve: add --all, --no-status, --tool and pattern options;
* revert: add --date;
* serve: add --prefix, --web-conf, --pid-file, --cmdserver, --certificate;
* status: add --change;
* tag: add --force, --edit, --remove;
* tip: add --git;
* update: add --check, --date.
Nikolaj Sjujskij <sterkrig@myopera.com> [Thu, 16 Aug 2012 19:03:01 +0400] rev 17400
zsh completion: add support for convert, graphlog, purge, record extensions
Nikolaj Sjujskij <sterkrig@myopera.com> [Thu, 16 Aug 2012 19:03:01 +0400] rev 17399
zsh completion: add subrepos options for all supporting commands
Nikolaj Sjujskij <sterkrig@myopera.com> [Thu, 16 Aug 2012 19:03:01 +0400] rev 17398
zsh completion: add new option groups for options
Add clone, date/user, git-style, merge tool, ignore space, log,
branch/bookmarks options and use them throughout command completions.
Nikolaj Sjujskij <sterkrig@myopera.com> [Thu, 16 Aug 2012 19:02:49 +0400] rev 17397
zsh completion: add `forget` and `rollback` commands
Nikolaj Sjujskij <sterkrig@myopera.com> [Thu, 16 Aug 2012 11:21:46 +0400] rev 17396
zsh completion: complete additional topics for `help`, not commands only
Patrick Mezard <patrick@mezard.eu> [Mon, 27 Aug 2012 21:10:11 +0200] rev 17395
Merge with stable
John Li <jli@circularly.org> [Mon, 27 Aug 2012 09:57:58 -0400] rev 17394
tests: merging bookmarked heads
45b5eb2941d0 fixed an error that occured when heads being merged were both
inactive bookmarks. Add a test for that case.
Matt Mackall <mpm@selenic.com> [Fri, 24 Aug 2012 17:51:47 -0500] rev 17393
merge with stable
Adrian Buehlmann <adrian@cadifra.com> [Mon, 06 Aug 2012 12:59:47 +0200] rev 17392
debuginstall: show directory for Python lib
Example new output
on Windows:
$ hg debuginstall
checking encoding (cp1252)...
checking Python lib (C:\Users\adi\hgrepos\hg-main\hg-python\lib)...
checking installed modules (C:\Users\adi\hgrepos\hg-main\mercurial)...
checking templates (C:\Users\adi\hgrepos\hg-main\mercurial\templates)...
checking commit editor...
C:\Program Files (x86)\Notepad++\notepad++.exe
checking username...
no problems detected
on Linux:
adi@kork-ubuntu64:~/hgrepos/hg-main$ ./hg debuginstall
checking encoding (UTF-8)...
checking Python lib (/usr/lib/python2.7)...
checking installed modules (/home/adi/hgrepos/hg-main/mercurial)...
checking templates (/home/adi/hgrepos/hg-main/mercurial/templates)...
checking commit editor...
checking username...
no problems detected
Ross Lagerwall <rosslagerwall@gmail.com> [Sat, 04 Aug 2012 07:14:40 +0200] rev 17391
util: replace util.nulldev with os.devnull
Python since 2.4 has supported os.devnull so having util.nulldev
is unnecessary.
Patrick Mezard <patrick@mezard.eu> [Sat, 04 Aug 2012 20:20:48 +0200] rev 17390
revset: add hidden() revset
Steve Borho <steve@borho.org> [Thu, 23 Aug 2012 18:19:19 -0500] rev 17389
wix: bump MSI based installers to use Python 2.7
We're somewhat forced to use Python 2.7 for the bdist packages, so we might
as well use 2.7 for the MSI installers as well.
Matt Mackall <mpm@selenic.com> [Fri, 24 Aug 2012 14:53:07 -0500] rev 17388
merge with stable
Matt Mackall <mpm@selenic.com> [Fri, 24 Aug 2012 14:52:45 -0500] rev 17387
tests: fix template test output
John Li <jli@circularly.org> [Wed, 22 Aug 2012 11:18:35 -0400] rev 17386
merge: handle case when heads are all bookmarks
If all heads are bookmarks, merge fails to find what node to merge
with (throws an IndexError while indexing into the non-bookmark heads
list) as of 4a02cf4fbb2e. This catches that case and prints an error
to specify a rev explicitly.
Patrick Mezard <patrick@mezard.eu> [Tue, 21 Aug 2012 20:51:16 +0200] rev 17385
verify: do not choke on valid changelog without manifest
Before this change:
$ hg init
$ hg branch foo
$ hg ci -m branchfoo
$ hg verify
checking changesets
checking manifests
0: empty or missing manifest
crosschecking files in changesets and manifests
checking files
0 files, 1 changesets, 0 total revisions
1 integrity errors encountered!
(first damaged changeset appears to be 0)
[1]
Bryan O'Sullivan <bryano@fb.com> [Tue, 21 Aug 2012 13:12:56 -0700] rev 17384
Merge
Neil Kodner <neilk@fb.com> [Fri, 17 Aug 2012 15:12:01 -0700] rev 17383
templater: abort when a template filter raises an exception (issue2987)
Matt Mackall <mpm@selenic.com> [Tue, 21 Aug 2012 12:27:57 -0500] rev 17382
merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 21 Aug 2012 12:27:47 -0500] rev 17381
merge with i18n
Alexander Sauta <demosito@gmail.com> [Mon, 13 Aug 2012 16:09:35 +0400] rev 17380
i18n-ru: synchronized with c6f88e7f95b7
Matt Mackall <mpm@selenic.com> [Tue, 21 Aug 2012 12:26:53 -0500] rev 17379
merge heads in stable
Matt Mackall <mpm@selenic.com> [Fri, 17 Aug 2012 14:37:59 -0500] rev 17378
commit: normalize filenames when checking explicit files (issue3576)
Patrick Mezard <patrick@mezard.eu> [Sat, 18 Aug 2012 16:35:36 +0200] rev 17377
test-status.t: test ui.slash on Windows
Adrian Buehlmann <adrian@cadifra.com> [Thu, 16 Aug 2012 13:57:43 +0200] rev 17376
manifest: remove redundant sorted() call for --all
repo.store.datafiles() is now already sorted (for all types of stores).
A follow-up to 4cbb1137941d.
Bryan O'Sullivan <bryano@fb.com> [Wed, 15 Aug 2012 16:33:26 -0700] rev 17375
Merge from crew-stable
Bryan O'Sullivan <bryano@fb.com> [Wed, 15 Aug 2012 16:31:25 -0700] rev 17374
store: only one kind of OSError means "nonexistent entry"
Bryan O'Sullivan <bryano@fb.com> [Wed, 15 Aug 2012 16:30:32 -0700] rev 17373
store: sort the results of fncachestore.datafiles()
Patrick Mezard <patrick@mezard.eu> [Wed, 15 Aug 2012 23:03:40 +0200] rev 17372
Merge with stable
Patrick Mezard <patrick@mezard.eu> [Wed, 15 Aug 2012 22:50:23 +0200] rev 17371
fileset: fix generator vs list bug in fast path
$ hg debugfileset 'a or b'
would only return a or b but not both because the base file list was a
generator instead of a replayable sequence.
Patrick Mezard <patrick@mezard.eu> [Wed, 15 Aug 2012 22:28:32 +0200] rev 17370
debugfileset: implement --rev, more tests
Patrick Mezard <patrick@mezard.eu> [Wed, 15 Aug 2012 22:09:09 +0200] rev 17369
test-fileset: test remaining predicates
- exec
- symlink
- size
- resolved / unresolved
- subrepo
Patrick Mezard <patrick@mezard.eu> [Wed, 15 Aug 2012 19:25:45 +0200] rev 17368
fileset: do not traceback on invalid grep pattern
Patrick Mezard <patrick@mezard.eu> [Wed, 15 Aug 2012 22:29:32 +0200] rev 17367
fileset: matchctx.existing() must consider ignored files
When running:
$ hg debugfileset 'binary() and ignored()'
getfileset() was correctly retrieving ignored files but
matchctx.existing() was not taking them in account. Just add them along
with unknown files.
Patrick Mezard <patrick@mezard.eu> [Wed, 15 Aug 2012 22:29:09 +0200] rev 17366
fileset: matchctx.existing() must consider unknown files
By default, unknown files are ignored. If the 'unknown()' predicate
appears in the syntax tree, then they are taken in account.
Unfortunately, matchctx.existing() was filtering against non-deleted
context files, which does not include unknown files. So:
$ hg debugfileset 'binary() and unknown()'
would not return existing binary unknown files.
Patrick Mezard <patrick@mezard.eu> [Wed, 15 Aug 2012 21:44:00 +0200] rev 17365
fileset: exclude deleted files from matchctx.existing()
Running:
$ hg debugfileset 'binary()'
would traceback if there were one deleted file in the working directory.
It happened because matchctx.existing() was filtering files against the
ctx.__contains__() but deleted files are still considered part of
workingctx.
Patrick Mezard <patrick@mezard.eu> [Wed, 15 Aug 2012 18:04:50 +0200] rev 17364
test-fileset: test file status predicates
Patrick Mezard <patrick@mezard.eu> [Wed, 15 Aug 2012 19:02:04 +0200] rev 17363
fileset: actually implement 'minusset'
$ hg debugfileset 'a* - a1'
was tracing back because 'minus' symbol was not supported.
Patrick Mezard <patrick@mezard.eu> [Wed, 15 Aug 2012 17:39:03 +0200] rev 17362
tests: test filesets with test-fileset.t
Sune Foldager <cryo@cyanite.org> [Wed, 15 Aug 2012 12:12:21 +0200] rev 17361
merge with stable
Sune Foldager <cryo@cyanite.org> [Wed, 15 Aug 2012 12:04:50 +0200] rev 17360
rollback: write dirstate branch with correct encoding
Bryan O'Sullivan <bryano@fb.com> [Tue, 14 Aug 2012 08:12:09 -0700] rev 17359
Merge
Bryan O'Sullivan <bryano@fb.com> [Tue, 14 Aug 2012 08:11:15 -0700] rev 17358
templatekw: merge, preferring the second implementation
epriestley <hg@yghe.net> [Tue, 10 Jul 2012 08:43:32 -0700] rev 17357
templatekw: add p1rev, p1node, p2rev, p2node keywords
The {parents} template is cumbersome for some uses, as it does not show
anything if there's only one "natural" parent and you can't use it to get the
full 40 digit node hashes for parents unless you rely on the behavior of
the --debug flag.
Introduce four new template keywords: {p1rev}, {p2rev}, {p1node} and
{p2node}. The "node" flavors of these always show full 40 digit hashes,
but users can get the short version with a filter construction like
'{p1node|short}'.
Bryan O'Sullivan <bryano@fb.com> [Mon, 13 Aug 2012 14:04:52 -0700] rev 17356
parsers: fix an integer size warning issued by clang
epriestley <hg@yghe.net> [Tue, 10 Jul 2012 08:43:32 -0700] rev 17355
templatekw: add parent1, parent1node, parent2, parent2node keywords
The {parents} template is cumbersome for some uses, as it does not show
anything if there's only one "natural" parent and you can't use it to get the
full 40 digit node hashes for parents unless you rely on the behavior of
the --debug flag.
Introduce four new template keywords: {parent1}, {parent2}, {parent1node} and
{parent2node}. The "node" flavors of these always show full 40 digit hashes,
but users can get the short version with a filter construction like
'{parent1node|short}'.
Bryan O'Sullivan <bryano@fb.com> [Mon, 13 Aug 2012 11:49:55 -0700] rev 17354
Merge with crew-stable
sorcerer [Thu, 02 Aug 2012 19:10:45 +0400] rev 17353
revlog: don't try to partialmatch strings those length > 40
_partialmatch() does prefix matching against nodes. String passed
to _partialmetch() actualy may be any string, not prefix only.
For example,
"e410be8603932e46a51298748a4b874739037fad or 300" is a good
argument for _partialmatch().
When _partialmatch() searches using radix tree, index_partialmatch()
C function shouldn't try to match too long strings.
Matt Mackall <mpm@selenic.com> [Sat, 11 Aug 2012 12:45:53 -0500] rev 17352
merge with stable
Matt Mackall <mpm@selenic.com> [Sat, 11 Aug 2012 12:45:37 -0500] rev 17351
merge with i18n
Nikolaj Sjujskij <sterkrig@myopera.com> [Fri, 10 Aug 2012 15:42:15 +0400] rev 17350
i18n-ru: fix spelling of "missing" equivalent
Alexander Sauta <demosito@gmail.com> [Thu, 09 Aug 2012 13:31:08 +0400] rev 17349
i18n-ru: synchronized with b131e24e2984
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 07 Aug 2012 11:18:45 -0300] rev 17348
i18n-pt_BR: synchronized with b5c560787a4e
Mads Kiilerich <mads@kiilerich.com> [Wed, 08 Aug 2012 18:10:37 +0200] rev 17347
check-code: fix check for trailing whitespace on continued lines too
The tests in test-annotate.t and test-import-git.t that relied on trailing
space in a file created by a here string is now masked by a literal 'EOL'
string that is removed.
Mads Kiilerich <mads@kiilerich.com> [Wed, 08 Aug 2012 18:10:30 +0200] rev 17346
check-code: fix check for trailing whitespace on empty lines
It seems like the intention with c7d23b4ca4ba was to catch lines with only
one whitespace too.
Mads Kiilerich <mads@kiilerich.com> [Wed, 08 Aug 2012 18:10:16 +0200] rev 17345
check-code: fix check for trailing whitespace on sh command lines
The $ has been without necessary escaping since introduced in c7d23b4ca4ba.
Patrick Mezard <patrick@mezard.eu> [Wed, 08 Aug 2012 21:38:53 +0200] rev 17344
Merge with stable
Adrian Buehlmann <adrian@cadifra.com> [Mon, 06 Aug 2012 10:45:11 +0200] rev 17343
update: fix typo in help text
Spotted by Kevin Chase <kevincha99@hotmail.com>
Augie Fackler <raf@durin42.com> [Wed, 08 Aug 2012 10:04:02 -0500] rev 17342
clone: don't fail with --update for non-local clones (issue3578)
This was broken by 5884812686f7 due to lack of test coverage. This
adds a test and fixes the defect.
Matt Mackall <mpm@selenic.com> [Mon, 06 Aug 2012 12:07:21 -0500] rev 17341
merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 06 Aug 2012 12:03:07 -0500] rev 17340
merge with i18n
Alexander Sauta <demosito@gmail.com> [Mon, 06 Aug 2012 18:15:16 +0400] rev 17339
i18n-ru: synchronized with 474ae9720aa5
Wagner Bruna <wbruna@softwareexpress.com.br> [Thu, 02 Aug 2012 11:46:30 -0300] rev 17338
i18n-pt_BR: synchronized with e4db509c08ec
Wagner Bruna <wbruna@softwareexpress.com.br> [Thu, 02 Aug 2012 11:45:16 -0300] rev 17337
histedit, i18n: warn translators about edit command names
Patrick Mezard <patrick@mezard.eu> [Sat, 04 Aug 2012 15:58:23 +0200] rev 17336
Merge with stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Thu, 02 Aug 2012 11:28:21 -0300] rev 17335
histedit: sync docstring with edit comment
The docstring should probably reuse the edit comment string instead.
Ross Lagerwall <rosslagerwall@gmail.com> [Sat, 04 Aug 2012 14:37:17 +0200] rev 17334
templater: handle a missing value correctly
Before, using a broken style such as:
changeset =
would result in a traceback.
This fixes a regression introduced in 63c47e4ac617.
Javi Merino <cibervicho@gmail.com> [Sat, 04 Aug 2012 12:29:53 +0200] rev 17333
help/hgweb: fix spelling error
Patrick Mezard <patrick@mezard.eu> [Fri, 03 Aug 2012 17:33:44 +0200] rev 17332
tests: remove stray test-convert-mtn-rename-directory.out
Patrick Mezard <patrick@mezard.eu> [Thu, 02 Aug 2012 18:33:40 +0200] rev 17331
Merge with stable
Patrick Mezard <patrick@mezard.eu> [Thu, 02 Aug 2012 17:48:58 +0200] rev 17330
context: simplify workingctx._parents
Matt Mackall <mpm@selenic.com> [Thu, 02 Aug 2012 01:49:36 -0500] rev 17329
Added signature for changeset 7f5094bb3f42
Matt Mackall <mpm@selenic.com> [Thu, 02 Aug 2012 01:49:32 -0500] rev 17328
Added tag 2.3 for changeset 7f5094bb3f42
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 01 Aug 2012 15:12:22 +0200] rev 17327
test: fix typo in test comment
Augie Fackler <raf@durin42.com> [Wed, 01 Aug 2012 09:41:57 -0500] rev 17326
histedit: add proper locking around repair.strip() calls
Patrick Mezard <patrick@mezard.eu> [Tue, 31 Jul 2012 18:18:26 +0200] rev 17325
rebase: remove second broken synopsis line (issue3172)
Displaying multiple synopsis in online help has been broken since Matt
RST refactoring, around ff26712a0c50. Rebase help is apparently the only
one using this trick, just drop the second synopsis and assume people
will understand as with graft help.
Idan Kamara <idankk86@gmail.com> [Sat, 28 Jul 2012 22:40:30 +0300] rev 17324
localrepo: clear the filecache on _rollback() and destroyed()
This restores the old behaviour of clearing the filecache when the repo is
destroyed but combines it with also clearing it on _rollback. Before, we tried
to only call it through _rollback but that ruined callers of destroyed.
Doing it on both code paths covers destroyed being called from somewhere
else, e.g. strip.
Mads Kiilerich <mads@kiilerich.com> [Wed, 01 Aug 2012 00:20:10 +0200] rev 17323
help: add 'mergetools' alias for the 'merge-tools' help topic
The '-' in 'merge-tools' is surprising but necessary in the configuration.
Let's help those who forget that and are looking for help.
Mads Kiilerich <mads@kiilerich.com> [Wed, 01 Aug 2012 14:59:15 +0200] rev 17322
help: use the first topic name from helptable, not the longest alias
This makes the 'additional help topics' list consistent with the output from
keyword search (for instance subrepo/subrepos).
The sorting by longest name was introduced in 3f6a4f1de43f. There might have
been a good reason for it back then, but now it seems like a better idea to
place the preferred name first in the list in helptable.
Mads Kiilerich <mads@kiilerich.com> [Wed, 01 Aug 2012 00:18:23 +0200] rev 17321
help: fix helptable indentation
Patrick Mezard <patrick@mezard.eu> [Wed, 01 Aug 2012 14:08:19 +0200] rev 17320
transplant: fix emptied changeset message
- Append an EOL
- State the changeset is skipped
Patrick Mezard <patrick@mezard.eu> [Tue, 31 Jul 2012 17:39:32 +0200] rev 17319
transplant: handle non-empty patches doing nothing (issue2806)
If patch.patch() reports patched files when applying a changeset and the
following commit says nothing changed, transplant used to abort with a
RuntimeError, assuming something went wrong with patching.
The mismatch is patch.patch() reports patched files, not changed ones.
It could be modified to report changed files but it means duplicating
work from status, may be expensive in the case of binary files, and is
probably not that useful at API level. For instance, if two patches are
applied on the working directory, the outcome may be nothing changed
while each call would have returned modified files. The caller would
have to call status() itself again.
This patch fixes the issue by trusting patching code: if the patch
succeeded and commit reports nothing changed, then nothing changed,
patch() did not "dropped changes on the floor".
Patrick Mezard <patrick@mezard.eu> [Sun, 29 Jul 2012 23:16:20 +0200] rev 17318
hgweb: fix graph view paging
- Fix off-by-one error on displayed entries count in normal mode
- Fix incorrect paging when the top revision was lower than revcount
- Fix revcount not overriding web.maxshortchanges everywhere
Patrick Mezard <patrick@mezard.eu> [Sun, 29 Jul 2012 19:44:57 +0200] rev 17317
help/config.txt: document web.maxshortchanges
Patrick Mezard <patrick@mezard.eu> [Sun, 29 Jul 2012 19:37:25 +0200] rev 17316
help/config.txt: reorder [web] options
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 30 Jul 2012 03:27:07 +0900] rev 17315
histedit: make comment part of the file describing rules as translatable
"i18n.gettext()" invocation for "editcomment" itself should have
little impact for whole initialization cost of histedit, because it is
already invoked for initialization of the command table entry.
'\n\n' has to be added to the text being edited separately from
"editcomment", because leading 'line feed' characters are not exported
to "hg.pot" file correctly.
Matt Mackall <mpm@selenic.com> [Thu, 02 Aug 2012 00:52:43 -0500] rev 17314
merge with i18n
Alexander Sauta <demosito@gmail.com> [Wed, 01 Aug 2012 18:56:39 +0400] rev 17313
i18n-ru: synchronized with 85188487b9b4
Nikolaj Sjujskij <sterkrig@myopera.com> [Fri, 20 Jul 2012 12:18:31 +0400] rev 17312
i18n-ru: add missing space in summary output template
Alexander Sauta <demosito@gmail.com> [Wed, 01 Aug 2012 18:10:07 +0400] rev 17311
i18n-ru: synchronized with b616e4aacf96
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 01 Aug 2012 05:58:00 +0900] rev 17310
i18n-ja: synchronized with 3339e3df159d
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 31 Jul 2012 14:12:14 -0300] rev 17309
i18n-pt_BR: synchronized with e66fa4d587dc
With review and suggestions by Sheila Genesine.
Patrick Mezard <patrick@mezard.eu> [Wed, 01 Aug 2012 15:49:00 +0200] rev 17308
log: make opts entries optional (issue2423)
Adrian Buehlmann <adrian@cadifra.com> [Tue, 31 Jul 2012 19:47:54 +0200] rev 17307
test-clone: fix for vfat
fixes http://hgbuildbot.kublai.com/builders/vfat%20hg%20tests%20%28stable%29/builds/65
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 31 Jul 2012 15:57:50 +0200] rev 17306
obsolete: fix typos in comments introduced by 6955d69a52a4
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 31 Jul 2012 15:50:44 +0200] rev 17305
pager: drop -S option for less in example for pager configuration
Using less -S will hide possibly important information when reviewing a
changeset, e.g. something wrong/dangerous after the 80th column, because
"less" will not give an indication that following characters are hidden.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 31 Jul 2012 15:32:08 +0200] rev 17304
obsolete: properly increment currentlen when building pushkey payload
In the old code, the current length was always 0 leading to markers
payload never being split.
wujek srujek <wujek.srujek@googlemail.com> [Tue, 31 Jul 2012 00:59:38 +0200] rev 17303
hgweb: fixes invalid parents / children in comparison
Previously, the parents / children were computed relative to the cset of the
currently shown file, which was wrong and inconsistent with diff and others.
With this patch, the listed csets are those that contain changes to the
currently compared file, which don't necessarily have to be the direct parents
and children of the changeset itself.
wujek srujek <wujek.srujek@googlemail.com> [Tue, 31 Jul 2012 14:14:15 +0200] rev 17302
hgweb: fixes traceback for invalid files by removing top-level template
The top-level 'comparison' template was not really needed, and it also caused a
traceback to be shown for inexistent files (as reported by Ross Lagerwall).
Getting rid of it makes the overall templating structure simpler and causes
invalid files to be handled nicely.
Matt Mackall <mpm@selenic.com> [Mon, 30 Jul 2012 22:33:45 -0500] rev 17301
merge with i18n