Fri, 10 Feb 2012 13:47:57 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Fri, 10 Feb 2012 13:47:57 -0600] rev 16102
merge with stable
Tue, 07 Feb 2012 18:47:16 +0100 mq: restore _branchtags() fast path (issue3223) stable
Patrick Mezard <patrick@mezard.eu> [Tue, 07 Feb 2012 18:47:16 +0100] rev 16101
mq: restore _branchtags() fast path (issue3223) Since a5917346c72e, mq saves the nodeid of the first applied patch to cache/branchheads, which breaks the optimized cache handling introduced in fbf8320f25c8. The problem is the revision being committed is appended to mqrepo.applied after the commit succeeds, which means mqrepo._branchtags() performs a regular update and write the first applied patch to the branch cache. One solution is to set a context variable _committingpatch on the mqrepo while it is committing a patch and to take it in account when deciding to fast-path mqrepo._branchtags(). Not really elegant but it works. The changes to test-mq-caches.t reverse changes introduced by a5917346c72e. The cache should not have been updated with mq records. The changes to test-keyword.t are indirectly caused by a5917346c72e. Reported and analyzed by Yuya Nishihara <yuya@tcha.org> Notes: - qpush still makes a slow path _branchtags() call when checking heads. Maybe this can be optimized. - be careful when merging this patch in default as secretcommit() was renamed newcommit() right after the end of the code freeze.
Tue, 07 Feb 2012 18:47:13 +0100 mq: ensure all mq commits are made with secretcommit() stable
Patrick Mezard <patrick@mezard.eu> [Tue, 07 Feb 2012 18:47:13 +0100] rev 16100
mq: ensure all mq commits are made with secretcommit() Having a common code path helps fixing things globally.
Wed, 08 Feb 2012 17:45:10 +0100 convert/bzr: ignore nested repos when listing branches (issue3254)
Patrick Mezard <patrick@mezard.eu> [Wed, 08 Feb 2012 17:45:10 +0100] rev 16099
convert/bzr: ignore nested repos when listing branches (issue3254) Reported by A.S. Budden <abudden@gmail.com>
Wed, 08 Feb 2012 16:56:00 +0000 tests: tighten checks for octal escapes in shell printf. stable
Jim Hague <jim.hague@acm.org> [Wed, 08 Feb 2012 16:56:00 +0000] rev 16098
tests: tighten checks for octal escapes in shell printf. printf on AIX default shell ksh (89) says \1 is an invalid escape. It insists on at least 2 digits. This causes failures in test-keyword.t and test-status.t. check-code.py already looks out for \NNN and recommends using Python for outputting octal values. Extend the check to \NN and \N and fix up resulting failures.
Wed, 08 Feb 2012 20:00:52 +0100 phase: when phase cannot be reduced, hint at --force and return 1 (BC)
Patrick Mezard <patrick@mezard.eu> [Wed, 08 Feb 2012 20:00:52 +0100] rev 16097
phase: when phase cannot be reduced, hint at --force and return 1 (BC) Before, trying to change the phase of a "public" node to "draft" would result in: $ hg phase --draft . no phases changed [0] With this patch: $ hg phase --draft . cannot move 1 changesets to a more permissive phase, use --force no phases changed [1] On partial failures, the exit status is now 1 instead of 0 and the number of changed nodes is displayed while it was only with --verbose. It seems useful to tell the user that despite the apparent failure, something changed. $ hg phase --draft '5 or 7' cannot move 1 changesets to a more permissive phase, use --force phase changed for 1 changesets [1]
Thu, 09 Feb 2012 21:03:07 +0100 revset: fix alias substitution recursion (issue3240)
Patrick Mezard <patrick@mezard.eu> [Thu, 09 Feb 2012 21:03:07 +0100] rev 16096
revset: fix alias substitution recursion (issue3240) The revset aliases expansion worked like: expr = "some revset" for alias in aliases: expr = alias.process(expr) where "process" was replacing the alias with its *unexpanded* substitution, recursively. So it only worked when aliases were applied in proper dependency order. This patch rewrites the expansion process so all aliases are expanded recursively at every tree level, after parent alias rewriting and variable expansion.
Thu, 09 Feb 2012 17:54:47 -0600 update: just merge unknown file collisions
Matt Mackall <mpm@selenic.com> [Thu, 09 Feb 2012 17:54:47 -0600] rev 16095
update: just merge unknown file collisions The unknown file collision rule was introduced as an extension of the "should be clean when merging" rule. Unfortunately, it got applied to the normal update path, which should be happy to merge local changes. This patch gives us merges for unknown file collisions on update, while preserving abort for merge and update -c.
Thu, 09 Feb 2012 17:04:17 -0600 merge: don't use unknown()
Matt Mackall <mpm@selenic.com> [Thu, 09 Feb 2012 17:04:17 -0600] rev 16094
merge: don't use unknown() This removes use of unknown files for building the synthetic working directory manifest used by manifestmerge. Instead, we adopt the strategy used by _checkunknown. Side-effect: unknown files are no longer moved by remote directory renames, and now are left alone like ignored files.
Thu, 09 Feb 2012 16:50:19 -0600 merge: refactor unknown file conflict checking
Matt Mackall <mpm@selenic.com> [Thu, 09 Feb 2012 16:50:19 -0600] rev 16093
merge: refactor unknown file conflict checking Previously, we would do a full working directory walk including unknown files to perform a merge. In many cases, this was painful because unknown files greatly outnumbered tracked files and generally had no useful effect on the merge. Here we instead wait until we find a file in the destination that's not tracked locally and detect if it exists and is not ignored. This is usually cheaper but can be -more- expensive in the case where we're adding a huge number of files. On the other hand, the cost of statting the new files should be dwarfed by the cost of eventually writing them. In this version, case collisions are detected implicitly by os.path.exists and wctx[f] lookup.
(0) -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 +10000 +30000 tip