Patrick Mezard <patrick@mezard.eu> [Mon, 23 Apr 2012 14:32:59 +0200] rev 16492
update: fix case-collision with a clean wd and no --clean
cbf2ea2f5ca1 introduced some logic to avoid case-collision detection between
source and destination revisions when it does not make sense: clean or to be
cleaned working directories. Unfortunately, part of it was flawed and the
related test was broken by another bug.
This patch disables cross revision case collision detection for updates without
option or with --check, if the working directory is clean.
Patrick Mezard <patrick@mezard.eu> [Mon, 23 Apr 2012 12:12:04 +0200] rev 16491
update: make --check abort with dirty subrepos
Aka "we could use dirty() but... yeah let's use it"
Patrick Mezard <patrick@mezard.eu> [Mon, 23 Apr 2012 12:09:54 +0200] rev 16490
update: fix "not rev" vs "rev is None"
Steven Stallion <sstallion@gmail.com> [Sat, 21 Apr 2012 08:24:10 -0700] rev 16489
plan9: add missing source entries to proto
Brendan Cully <brendan@kublai.com> [Sun, 22 Apr 2012 20:30:36 -0700] rev 16488
Merge stable
Mads Kiilerich <mads@kiilerich.com> [Mon, 23 Apr 2012 01:39:26 +0200] rev 16487
tests: fix incorrect markup of continued lines of sh commands
Mads Kiilerich <mads@kiilerich.com> [Mon, 23 Apr 2012 01:39:26 +0200] rev 16486
check-code: 'printf \0' is apparently fine - accept it in check-code
Nobody complained over '\0' in test-eol.t.
The too strict check becomes a problem when this check is applied to more
lines.
Mads Kiilerich <mads@kiilerich.com> [Mon, 23 Apr 2012 01:39:26 +0200] rev 16485
tests: solaris sh can not negate exit status with '!'
Mads Kiilerich <mads@kiilerich.com> [Mon, 23 Apr 2012 01:39:26 +0200] rev 16484
tests: hide diff -u saying 'No differences encountered' on solaris
Mads Kiilerich <mads@kiilerich.com> [Mon, 23 Apr 2012 01:39:26 +0200] rev 16483
tests: ^ must be quoted when used on solaris sh
The check was broken when it was introduced in 6e4cf8319f54.
Mads Kiilerich <mads@kiilerich.com> [Mon, 23 Apr 2012 01:39:26 +0200] rev 16482
tests: remove test-pull-pull-corruption2.t
This test gave random failures on slow machines (solaris).
The test was added in 6f6e210b38cf as a test case from issue148. It did however
require manual setup:
The attached script creates such a corruption (you have to add a "import time;
time.spleep(3)" in localrepo.addchangegroup before the changegroup manifest are
written for example.
The test as it is has thus no value as automatic test case.
The necessary sleep could be added by a hook, but test-pending.t already tests
that.
Mads Kiilerich <mads@kiilerich.com> [Mon, 23 Apr 2012 01:39:26 +0200] rev 16481
tests: remove race in test-pull-pull-corruption.t
The output from the background process was not always interleaved "correctly"
with output from the foreground process.
Mads Kiilerich <mads@kiilerich.com> [Mon, 23 Apr 2012 01:39:26 +0200] rev 16480
tests: fix bashism in test-convert-splicemap.t
This should have been caught by check-code.
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 18 Apr 2012 15:16:15 +0200] rev 16479
opener: coding style, use triple quotes for doc string
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 16 Apr 2012 01:11:29 +0900] rev 16478
icasefs: make case-folding collision detection as rename aware (issue3370)
if the file in target context causes case-folding collision against
one in working context, current implementation aborts merging with it,
even thouhg collding one (in target) is the file renamed from collided
one (in working).
this patch uses file copy information to know whether colliding file
is renamed from collided one or not: if so, collision between them is
ignored.
this patch also avoids collision detection between current context and
target context, if working context is clean (with --check/-c) or will
be clean (with --clean/-C).
Augie Fackler <raf@durin42.com> [Fri, 20 Apr 2012 11:08:14 -0500] rev 16477
bdiff.bdiff: release the GIL before doing expensive diff operations
This means that threaded webservers will have more of a chance of
doing something useful while the C extension is busy computing a
delta. Not doing this was causing problems for Google Code with a 25
meg text file that takes O(7 minutes) to deltify.
Kevin Bullock <kbullock@ringworld.org> [Fri, 20 Apr 2012 11:57:14 -0500] rev 16476
fetch: remove confusing reference to "authoritative" changes
Patrick Mezard <patrick@mezard.eu> [Fri, 20 Apr 2012 19:11:54 +0200] rev 16475
patch: be more tolerant with "Parent" header (issue3356)
Here is how export and mq write the "Parent" header:
mq: # Parent XXXXX
export: # Parent XXXXX
then import expects exactly 2 spaces while mq tolerates one or more. So "hg
import --exact" truncates mq generated patches header by one character and
fails. This patch aligns import "Parent" header parsing on mq one. I do not
expect spaces in parent references anytime soon.
Reported by Stefan Ring <stefanrin@gmail.com>
Adrian Buehlmann <adrian@cadifra.com> [Thu, 19 Apr 2012 17:08:12 +0200] rev 16474
pure/osutil: use Python's msvcrt module (issue3380)
As proposed by Christophe Gouiran <christophe.gouiran@eurocopter.com>
Idan Kamara <idankk86@gmail.com> [Thu, 19 Apr 2012 18:11:48 +0300] rev 16473
commands: add missing wlock to graft
Idan Kamara <idankk86@gmail.com> [Thu, 19 Apr 2012 18:11:42 +0300] rev 16472
dirstate: write branch file atomically
Idan Kamara <idankk86@gmail.com> [Thu, 19 Apr 2012 17:59:23 +0300] rev 16471
commands: add missing wlock to branch
Idan Kamara <idankk86@gmail.com> [Thu, 19 Apr 2012 17:59:23 +0300] rev 16470
commands: add missing wlock to backout
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 19 Apr 2012 20:54:56 +0900] rev 16469
i18n: show localized messages for commands/extensions in hgweb help top (issue3383)
in hgweb help top page, help topics are localized, but abstracts of
commands and extensions are not, although these are already
translated.
it is because localized messages for them should be explicitly looked
up by original ones.
this patch looks localized messages up for each commands/extensions.
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 19 Apr 2012 23:36:42 +0200] rev 16468
revert: show warning when reverting subrepos that do not support revert
The warning is similar to the warning that was shown before hgsubrepo revert
support was added, with the exception that now the subrepo type is shown.
For example, when trying to revert a git subrepo located in "include/mygitsub",
the warning message would be:
include/mygitsub: reverting git subrepos is unsupported
Bryan O'Sullivan <bryano@fb.com> [Wed, 18 Apr 2012 21:27:35 -0700] rev 16467
revset: fix O(n**2) behaviour of bisect() (issue3381)
Patrick Mezard <patrick@mezard.eu> [Wed, 18 Apr 2012 14:04:58 +0200] rev 16466
convert/svn: do not try converting empty head revisions (issue3347)
Subversion conversion works by picking trunk and branches heads, computing a
revision graph from them and converting the selected commits. By design we fail
to convert empty revisions so we have to be careful when discovering the
revision graph. In this particular issue, the source svn repository was a
partial mirror made by svnsync. The funny part is svnsync preserves all
revisions including empty ones. Also, we trusted ra.stat(path,
stop).created_rev to give us the latest revision with changes in path history
up to stop. This assumption broke at least when path is '', that is the
repository root, which always returned 'stop' revision despited being empty.
The workaround is to first trust ra.stat() but if the returned revision appear
empty, search the whole path history from stop to r1 until some changes are
found.
Patrick Mezard <patrick@mezard.eu> [Wed, 18 Apr 2012 14:04:58 +0200] rev 16465
convert/svn: refactor svn_source.latest() with a nested function
We will call it more than once for reasons detailed later.
Patrick Mezard <patrick@mezard.eu> [Wed, 18 Apr 2012 14:04:57 +0200] rev 16464
convert/svn: clarify svn_source.latest() stop arg default value
stop=0 could pass for a valid default value at first sight.
Steven Stallion <sstallion@gmail.com> [Tue, 17 Apr 2012 21:12:37 -0700] rev 16463
factotum: rename mount and path configuration entries
The factotum extension used mount and path entries which were too
generic. These have been replaced by mountpoint and executable
(respectively) to match existing conventions.
Matt Mackall <mpm@selenic.com> [Wed, 18 Apr 2012 11:46:23 -0500] rev 16462
Added signature for changeset d9e2f09d5488
Matt Mackall <mpm@selenic.com> [Wed, 18 Apr 2012 11:46:20 -0500] rev 16461
Added tag 2.2-rc for changeset d9e2f09d5488
Matt Mackall <mpm@selenic.com> [Wed, 18 Apr 2012 11:45:50 -0500] rev 16460
Makefile: be more careful when cleaning up pure/ components
The recent introduction of pure/__init__.py causes
mercurial/__init__.py to get clobbered by make clean.
Matt Mackall <mpm@selenic.com> [Tue, 17 Apr 2012 17:56:36 -0500] rev 16459
merge default into stable for 2.2 code freeze
Idan Kamara <idankk86@gmail.com> [Wed, 18 Apr 2012 01:20:16 +0300] rev 16458
commit: add option to amend the working dir parent
The --amend flag can be used to amend the parent of the working directory
with a new commit that contains the changes in the parent in addition to
those currently reported by "hg status", if there are any. The old commit
is stored in a backup bundle in ".hg/strip-backup"(see "hg help bundle"
and "hg help unbundle" on how to restore it).
Message, user and date are taken from the amended commit unless specified.
When a message isn't specified on the command line, the editor will open
with the message of the amended commit.
It is not possible to amend public changesets (see "hg help phases") or
changesets that have children.
Behind the scenes, first commit the update (if there is one) as a regular
child of the current parent. Then create a new commit on the parent's
parent with the updated contents. Then change the working copy parent
to this new combined changeset. Finally, strip the amended commit and
update commit created in the beginning.
An alternative (cleaner?) approach of doing this is suggested here:
http://selenic.com/pipermail/mercurial-devel/2012-March/038540.html
It is currently not possible to amend merge commits or recursively,
this can be added at a later time.
Steven Stallion <sstallion@gmail.com> [Mon, 16 Apr 2012 22:41:03 -0700] rev 16457
transplant: remove extraneous whitespace
Matt Mackall <mpm@selenic.com> [Tue, 17 Apr 2012 11:13:38 -0500] rev 16456
journal: use tryread helper to backup files (issue3375)
Matt Mackall <mpm@selenic.com> [Tue, 17 Apr 2012 11:11:59 -0500] rev 16455
opener: introduce tryread helper
This makes it easier to follow the common pattern "read a file or give
an empty string if it's missing".
Angel Ezquerra <angel.ezquerra@gmail.com> [Tue, 17 Apr 2012 07:22:44 +0200] rev 16454
tests: add test for fileset 'subrepo' keyword
Patrick Mezard <patrick@mezard.eu> [Tue, 17 Apr 2012 10:33:47 +0200] rev 16453
revset: make matching() work on python 2.4
tuple.index() was apparently added to python 2.6:
http://bugs.python.org/issue1696444
Also remove a trailing comma to make check-code.py happy.
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 17 Apr 2012 15:10:33 +0200] rev 16452
revset: use list instead of tuple for compatibility with python before 2.6
'string elements'.split() instead of explicitly typing a list of strings is
used. This is done in other parts of Mercurial code, too.
Matt Mackall <mpm@selenic.com> [Mon, 16 Apr 2012 16:50:25 -0500] rev 16451
merge with stable
Patrick Mezard <patrick@mezard.eu> [Mon, 16 Apr 2012 11:48:15 +0200] rev 16450
archive: make it work with svn subrepos (issue3308)
- _svncommand() in files() returns a tuple since 0ae98cd2a83f not a string.
- _svncommand() in filedata() returns a tuple not a string.
- "svn list" returns files but also directories.
- "svn list" is not recursive by default.
I have no idea what happens to svn:externals possibly embedded in the svn
subrepository.
Martin Geisler <mg@lazybytes.net> [Sun, 15 Apr 2012 16:05:57 +0200] rev 16449
largefiles: hide .hglf/ prefix for largefiles in hgweb
This makes the manifest view in hgweb match what you see in the
working copy and what you get when you download an archive in hgweb.
Martin Geisler <mg@lazybytes.net> [Sun, 15 Apr 2012 16:05:53 +0200] rev 16448
hgweb: add hook for remapping repository path into virtual paths
Extensions such as largefiles can use this to remap files so they
appear in the same location as they do in the user's working copy.
Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 15 Apr 2012 00:27:31 +0200] rev 16447
tests: add tests for matching keyword
This adds a couple of tests for the revset "matching" keyword:
1. Test that the 2nd parameter is optional
2. Test that all the 1st argument can be a revset and that all the supported
fields of the 2nd argument work.
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 14 Apr 2012 01:41:03 +0200] rev 16446
revset: speedup matching() by first matching fields that take less time to
match
This patch sorts the fields that are passed to the matching function so that it
always starts by matching those fields that take less time to match.
Not all fields take the same amount of time to match. I've done several
measurements running the following command:
hg --time log -r "matching(1, field)"
on the mercurial repository, and where 'field' was each one of the fields
accepted by match. In order to avoid the print overhead (which could be
different for different fields, given the different number of matches) I used a
modified version of the matching() function which always returns no matches.
These tests showed that different fields take wildly different amounts of time
to match. Particulary the substate field takes up to 25 seconds to match on my
machine, compared to the 0.3 seconds that takes to match the phase field or the
2 seconds (approx) that takes to match most fields. With this patch, matching
both the phase and the substate of a revision takes the same amount of time as
matching the phase.
The field match order introduced by this patch is as follows:
phase, parents, user, date, branch, summary, files, description, substate
An extra nice thing about this patch is that it makes the match time stable.
Angel Ezquerra <angel.ezquerra@gmail.com> [Fri, 13 Apr 2012 13:46:49 +0200] rev 16445
revset: speedup matching() by stopping the match early if a field does not match
Rather than getting all the fields that are being matches from every revision
and then comparing them to those of the target revision, compare each field one
by one and stop the match as soon as there is a match failure.
This can greatly reduce the match time when matching multiple fields.
The impact on match time when matching a single field seems negligible
(according to my measurements).
Angel Ezquerra <angel.ezquerra@gmail.com> [Fri, 13 Apr 2012 13:35:45 +0200] rev 16444
revset: make matching keyword not match summary when matching for description
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 22 Mar 2012 21:12:15 +0100] rev 16443
fileset: add "subrepo" fileset symbol
This new fileset symbol returns a list of subrepos whose paths match a given
pattern. If the argument has no pattern type set, an exact
match is performed.
If no argument is passed, return a list of all subrepos.
Steven Stallion <sstallion@gmail.com> [Sun, 15 Apr 2012 23:47:46 -0700] rev 16442
plan9: finalize documentation for next release
Alain Leufroy <alain.leufroy@logilab.fr> [Mon, 16 Apr 2012 10:56:37 +0200] rev 16441
localrepo: do not complain about missing journal files
Alain Leufroy <alain.leufroy@logilab.fr> [Mon, 16 Apr 2012 10:33:18 +0200] rev 16440
repair: fix missing import
introduced by: b5c0c7d0f83fe56240ce7a919581f1cbff4f5ee5
Na'Tosha Bard <natosha@unity3d.com> [Mon, 16 Apr 2012 17:03:39 +0200] rev 16439
largefiles: fix cat for largefiles (issue3352)
This is a fix to largefiles so that 'hg cat' will work correctly when a
largefile is specified.
As per discussion on Issue 3352:
1) The file will be printed regardless if it is binary or large.
2) The file is downloaded if it is not readily available (not found in
the system cache), so that it can be printed. If the download fails,
then we abort.
Steven Stallion <sstallion@gmail.com> [Mon, 16 Apr 2012 08:50:40 -0700] rev 16438
pure: quiesce build warnings
The following patch fixes the following warning when building pure:
package init file 'mercurial/pure/__init__.py' not found (or not a regular file)
Matt Mackall <mpm@selenic.com> [Mon, 16 Apr 2012 11:26:00 -0500] rev 16437
util.h: replace ntohl/htonl with get/putbe32
Wolfgang Treutterer <Wolfgang.Treutterer@ipp.mpg.de> [Fri, 13 Apr 2012 10:08:08 +0200] rev 16436
scmutil: fix systemrcpath regression introduced in f5dd179bfa4a
Changeset f5dd179bfa4a introduced a 'root' path component to look for
hgrc files, which is used both as an absolute path and a path relative
to the <install-root>.
The latter one was broken since 'root' was set to an absolute location
and the subsequent os.path.join discarded the <install-root> path prefix.
Patrick Mezard <patrick@mezard.eu> [Fri, 13 Apr 2012 10:14:59 +0200] rev 16435
revlog: fix partial revision() docstring (from d7d64b89a65c)
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Apr 2012 11:27:11 +0200] rev 16434
graphlog: fix --follow FILE and relative paths
The situation is complicated because filelog() revset uses a match object in
relpath mode while follow() revset interprets the filename as a manifest entry.
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Apr 2012 11:16:57 +0200] rev 16433
graphlog: reduce duplication in --follow code
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Apr 2012 10:44:13 +0200] rev 16432
graphlog: add all log options to glog command
glog and log -G should be equivalent.
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Apr 2012 10:30:38 +0200] rev 16431
graphlog: implement --hidden
Angel Ezquerra <angel.ezquerra@gmail.com> [Wed, 28 Mar 2012 11:42:17 +0200] rev 16430
revert: add support for reverting subrepos without --no-backup and/or --all
When a subrepo is reverted but --no-backup is not set, call revert on the
subrepo that is being reverted prior to updating it to the revision specified
in the parent repo's .hgsubstate file.
The --all flag is passed down to the subrepo when it is being reverted. If the
--all flag is not set, all files that are modified on the subrepo will be
reverted.
Angel Ezquerra <angel.ezquerra@gmail.com> [Wed, 28 Mar 2012 11:42:17 +0200] rev 16429
revert: add support for reverting subrepos
Reverting a subrepo is done by updating it to the revision that is selected on
the parent repo .hgsubstate file.
* ISSUES/TODO:
- reverting added and removed subrepos is not supported yet.
- reverting subrepos is only supported if the --no-backup flag is used (this
limitation will be removed on another patch).
- The behavior of the --all flag has been changed. It now reverts subrepos as
well. Note that this may lead to data loss if the user has a dirty subrepo.