Mon, 21 Dec 2015 22:31:16 +0900 fileset: use decorator to mark a predicate as "existing caller"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 21 Dec 2015 22:31:16 +0900] rev 27462
fileset: use decorator to mark a predicate as "existing caller" This can localize changes for adding (or removing) an "existing caller" predicate function in source code.
Mon, 21 Dec 2015 22:31:16 +0900 fileset: use decorator to mark a predicate as "status caller"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 21 Dec 2015 22:31:16 +0900] rev 27461
fileset: use decorator to mark a predicate as "status caller" Before this patch, predicates calling 'matchctx.status()' are listed up by immediate list value in 'getfileset()'. This prevents 3rd party extensions from adding specific predicate calling 'matchctx.status()'. This uses decorator to mark a predicate as "status caller". This can also localize changes for adding (or removing) a "status caller" predicate function in source code.
Mon, 21 Dec 2015 22:31:16 +0900 fileset: use decorator to mark a function as fileset predicate
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 21 Dec 2015 22:31:16 +0900] rev 27460
fileset: use decorator to mark a function as fileset predicate Using decorator can localize changes for adding (or removing) a fileset predicate function in source code. It is also useful to pick predicates up for specific purpose. For example, subsequent patches marks predicates as "call status" or "use existing" via decorator. To avoid (1) redundancy between "predicate name" and (the beginning of) help document, and (2) accidental typo of help document, this patch also makes decorator put predicate declration into the beginning of help.
Mon, 21 Dec 2015 22:31:16 +0900 fileset: treat encoding and eol as the predicate calling _existing
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 21 Dec 2015 22:31:16 +0900] rev 27459
fileset: treat encoding and eol as the predicate calling _existing Before this patch, predicate function 'encoding' and 'eol' aren't listed up in '_existingcallers', even though they invoke 'existing()'. This causes unexpected failure of these predicate, if there is a (manually) deleted file in the working directory. 8a0513bf030a and 3ce3f2b059a1 seem to overlook putting already existing 'encoding' or newly introduced 'eol' into '_existingcallers'. This patch also changes order of fileset "eol(unix)" output in test, because "existing caller" predicates show "A(dded)" files before "C(lean)" ones.
Fri, 18 Dec 2015 18:32:15 +0000 rebase: mention conflict in documentation instead of merge
timeless <timeless@mozdev.org> [Fri, 18 Dec 2015 18:32:15 +0000] rev 27458
rebase: mention conflict in documentation instead of merge
Fri, 18 Dec 2015 18:31:45 +0000 rebase: simplify documentation about heads
timeless <timeless@mozdev.org> [Fri, 18 Dec 2015 18:31:45 +0000] rev 27457
rebase: simplify documentation about heads
Fri, 18 Dec 2015 18:22:03 +0000 rebase: simplify documentation about --keep
timeless <timeless@mozdev.org> [Fri, 18 Dec 2015 18:22:03 +0000] rev 27456
rebase: simplify documentation about --keep Also include a warning about bookmarks
Fri, 18 Dec 2015 18:24:41 +0000 rebase: simplify documentation about selecting commits to rebase
timeless <timeless@mozdev.org> [Fri, 18 Dec 2015 18:24:41 +0000] rev 27455
rebase: simplify documentation about selecting commits to rebase
Fri, 18 Dec 2015 18:06:43 +0000 rebase: simplify documentation about public commits
timeless <timeless@mozdev.org> [Fri, 18 Dec 2015 18:06:43 +0000] rev 27454
rebase: simplify documentation about public commits add reference to graft
Sun, 20 Dec 2015 16:33:44 -0600 verify: clean up weird error/warning lists
Matt Mackall <mpm@selenic.com> [Sun, 20 Dec 2015 16:33:44 -0600] rev 27453
verify: clean up weird error/warning lists Nested functions in Python are not able to assign to variables in the outer scope without something like the list trick because assignments refer to the inner scope. So, we formerly used a list to give an object to assign into. Now that error and warning are object members, the [0] hack is no longer needed.
Fri, 18 Dec 2015 18:52:25 +0000 diff: clarify comparison as first parent
timeless <timeless@mozdev.org> [Fri, 18 Dec 2015 18:52:25 +0000] rev 27452
diff: clarify comparison as first parent
Fri, 18 Dec 2015 06:19:22 +0000 histedit: add progress support
timeless <timeless@mozdev.org> [Fri, 18 Dec 2015 06:19:22 +0000] rev 27451
histedit: add progress support
Sun, 20 Dec 2015 18:38:21 +0900 verify: remove unreachable code to reraise KeyboardInterrupt
Yuya Nishihara <yuya@tcha.org> [Sun, 20 Dec 2015 18:38:21 +0900] rev 27450
verify: remove unreachable code to reraise KeyboardInterrupt KeyboardInterrupt should never be caught as it doesn't inherit Exception in Python 2.5 or later. And if it was, "interrupted" would be printed twice. https://docs.python.org/2.7/library/exceptions.html#exception-hierarchy
Sun, 20 Dec 2015 16:34:54 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 20 Dec 2015 16:34:54 -0600] rev 27449
merge with stable
Fri, 18 Dec 2015 16:42:39 -0800 verify: move exc() function onto class
Durham Goode <durham@fb.com> [Fri, 18 Dec 2015 16:42:39 -0800] rev 27448
verify: move exc() function onto class This is part of an effort to make verify more modular so extensions can hook into it.
Fri, 18 Dec 2015 16:42:39 -0800 verify: move err() to be a class function
Durham Goode <durham@fb.com> [Fri, 18 Dec 2015 16:42:39 -0800] rev 27447
verify: move err() to be a class function This is part of an effort to make it easier for extensions to hook into verify.
Fri, 18 Dec 2015 16:42:39 -0800 verify: move warn() to a class level function
Durham Goode <durham@fb.com> [Fri, 18 Dec 2015 16:42:39 -0800] rev 27446
verify: move warn() to a class level function This is part of the effort to make verify more modular so extensions can hook into it more easily.
Fri, 18 Dec 2015 16:42:39 -0800 verify: move fncachewarned up to a class variable
Durham Goode <durham@fb.com> [Fri, 18 Dec 2015 16:42:39 -0800] rev 27445
verify: move fncachewarned up to a class variable This is part of making verify more modular so hooks can extend it.
Fri, 18 Dec 2015 16:42:39 -0800 verify: move widely used variables into class members
Durham Goode <durham@fb.com> [Fri, 18 Dec 2015 16:42:39 -0800] rev 27444
verify: move widely used variables into class members This will allow us to start moving some of the nested functions inside verify() out onto the class. This will allow extensions to hook into verify more easily.
Fri, 18 Dec 2015 16:42:39 -0800 verify: move verify logic into a class
Durham Goode <durham@fb.com> [Fri, 18 Dec 2015 16:42:39 -0800] rev 27443
verify: move verify logic into a class In order to allow extensions to hook into the verification logic more easily, we need to refactor it into multiple functions. The first step is to move it to a class so the shared state can be more easily accessed.
Thu, 17 Dec 2015 21:18:02 -0500 test-install: perform the wix checking on wdir() instead of "."
Matt Harbison <matt_harbison@yahoo.com> [Thu, 17 Dec 2015 21:18:02 -0500] rev 27442
test-install: perform the wix checking on wdir() instead of "." This allows catching problems before they are committed.
Fri, 18 Dec 2015 20:54:41 -0800 revlog: fix bad indentation (replace tab by space) stable
Martin von Zweigbergk <martinvonz@google.com> [Fri, 18 Dec 2015 20:54:41 -0800] rev 27441
revlog: fix bad indentation (replace tab by space)
Fri, 18 Dec 2015 12:54:45 -0800 log: speed up hg log <file|folder>
Laurent Charignon <lcharignon@fb.com> [Fri, 18 Dec 2015 12:54:45 -0800] rev 27440
log: speed up hg log <file|folder> This patch makes hg log <file|folder> faster by using changelog.readfiles instead of changelog.read. On our large repos for hg log <file|folder> -l5 operations that were taking: - ~8s I see a 25% improvement - ~15s, I see a 35% improvement For recently modified folder/file, the difference is negligible as we don't have to consider many revisions.
Fri, 18 Dec 2015 13:45:55 -0800 changelog: add a new method to get files modified by a changeset
Laurent Charignon <lcharignon@fb.com> [Fri, 18 Dec 2015 13:45:55 -0800] rev 27439
changelog: add a new method to get files modified by a changeset This patch adds a new method "readfiles" to get the files modified by a changeset. It extracts some logic from "read" to only return the files modified by a changeset as efficiently as possible. This is used in the next patch to speed up hg log <file|folder>
Wed, 16 Dec 2015 17:22:37 -0500 tests: convert directory separators to '/' for MSYS in test-check-py-compat
Matt Harbison <matt_harbison@yahoo.com> [Wed, 16 Dec 2015 17:22:37 -0500] rev 27438
tests: convert directory separators to '/' for MSYS in test-check-py-compat This is the same fix as 8c1d7a0e737b.
Wed, 16 Dec 2015 17:17:36 -0500 tests: make `pwd` URL compatible on Windows in test-default-push
Matt Harbison <matt_harbison@yahoo.com> [Wed, 16 Dec 2015 17:17:36 -0500] rev 27437
tests: make `pwd` URL compatible on Windows in test-default-push Without this, the test fails with: $ hg -q commit -A -m 'add pushurl' abort: file:// URLs can only refer to localhost $ hg push abort: file:// URLs can only refer to localhost The variable $PWD causes check-code to complain, so avoid that.
Wed, 16 Dec 2015 13:33:43 -0500 windows: correct the import of win32
Matt Harbison <matt_harbison@yahoo.com> [Wed, 16 Dec 2015 13:33:43 -0500] rev 27436
windows: correct the import of win32 This module is relative, and was overlooked when converting to absolute_import in 6daa795ed32f.
Thu, 17 Dec 2015 19:33:44 +0100 win32: add internals help topics to Inno Setup installer
Pascal Quantin <pascal.quantin@gmail.com> [Thu, 17 Dec 2015 19:33:44 +0100] rev 27435
win32: add internals help topics to Inno Setup installer
Fri, 18 Dec 2015 09:57:35 -0500 changegroups: add documentation for cg3
Augie Fackler <augie@google.com> [Fri, 18 Dec 2015 09:57:35 -0500] rev 27434
changegroups: add documentation for cg3
Mon, 14 Dec 2015 15:55:12 -0500 changegroup: add flags field to cg3 delta header
Mike Edgar <adgar@google.com> [Mon, 14 Dec 2015 15:55:12 -0500] rev 27433
changegroup: add flags field to cg3 delta header This lets revlog flags be transmitted over the wire. Right now this is useful for censored nodes and for narrowhg's ellipsis nodes.
Fri, 11 Dec 2015 11:23:49 -0500 changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com> [Fri, 11 Dec 2015 11:23:49 -0500] rev 27432
changegroup: introduce cg3, which has support for exchanging treemanifests I'm not entirely happy with using a trailing / on a "file" entry for transferring a treemanifest. We've discussed putting some flags on each file header[0], but I'm unconvinced that's actually any better: if we were going to add another feature to the cg format we'd still be doing a version bump anyway to cg4, so I'm inclined to not spend time coming up with a more sophisticated format until we actually know what the next feature we want to stuff in a changegroup will be. Test changes outside test-treemanifest.t are only due to the new CG3 bundlecap showing up in the wire protocol. Many thanks to adgar@google.com and martinvonz@google.com for helping me with various odd corners of the changegroup and treemanifest API. 0: It's not hard refactoring, nor is it a lot of work. I'm just disinclined to do speculative work when it's not clear what the customer would actually be.
Fri, 18 Dec 2015 14:40:11 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Fri, 18 Dec 2015 14:40:11 -0600] rev 27431
merge with stable
Thu, 17 Dec 2015 17:16:02 -0800 revlog: seek to end of file before writing (issue4943) stable
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 17 Dec 2015 17:16:02 -0800] rev 27430
revlog: seek to end of file before writing (issue4943) Revlogs were recently refactored to open file handles in "a+" and use a persistent file handle for reading and writing. This drastically reduced the number of file handles being opened. Unfortunately, it appears that some versions of Solaris lose the file offset when performing a write after the handle has been seeked. The simplest workaround is to seek to EOF on files opened in a+ mode before writing to them, which is what this patch does. Ideally, this code would exist in the vfs layer. However, this would require creating a proxy class for file objects in order to provide a custom implementation of write(). This would add overhead. Since revlogs are the only files we open in a+ mode, the one-off workaround in revlog.py should be sufficient. This patch appears to have little to no impact on performance on my Linux machine.
Mon, 14 Dec 2015 20:57:21 -0500 manifestmerge: have manifest do matching before diffing
Augie Fackler <augie@google.com> [Mon, 14 Dec 2015 20:57:21 -0500] rev 27429
manifestmerge: have manifest do matching before diffing This means that the diff code does less work, potentially significantly less in the case of treemanifests. It also should ease implementation with narrowed clone cases (such as narrowhg) when we don't always have the entire set of treemanifest revlogs locally. As far as I can tell, this codepath is currently only used by record, so it'll probably die in the near future, and then narrowhg won't have to worry about composing with some unknown matching system.
Thu, 17 Dec 2015 14:57:20 +0000 branch: reword help text
timeless <timeless@mozdev.org> [Thu, 17 Dec 2015 14:57:20 +0000] rev 27428
branch: reword help text We're not necessarily talking about *the* active branch, just any old branch.
Thu, 17 Dec 2015 14:56:32 +0000 archive: adjust help text
timeless <timeless@mozdev.org> [Thu, 17 Dec 2015 14:56:32 +0000] rev 27427
archive: adjust help text
Thu, 17 Dec 2015 14:54:47 +0000 annotate: add missing period to help
timeless <timeless@mozdev.org> [Thu, 17 Dec 2015 14:54:47 +0000] rev 27426
annotate: add missing period to help
Thu, 17 Dec 2015 14:54:20 +0000 addremove: make help match add
timeless <timeless@mozdev.org> [Thu, 17 Dec 2015 14:54:20 +0000] rev 27425
addremove: make help match add
Thu, 17 Dec 2015 14:53:40 +0000 add: mention .hgignore in help
timeless <timeless@mozdev.org> [Thu, 17 Dec 2015 14:53:40 +0000] rev 27424
add: mention .hgignore in help
Thu, 17 Dec 2015 15:05:25 +0000 bundle: warn for --base with --all
timeless <timeless@mozdev.org> [Thu, 17 Dec 2015 15:05:25 +0000] rev 27423
bundle: warn for --base with --all
Thu, 17 Dec 2015 15:03:45 +0000 bundle: fix error for --all with destination
timeless <timeless@mozdev.org> [Thu, 17 Dec 2015 15:03:45 +0000] rev 27422
bundle: fix error for --all with destination Before it complained about --base
Thu, 17 Dec 2015 14:59:11 +0000 bundle: fix grammar in help text
timeless <timeless@mozdev.org> [Thu, 17 Dec 2015 14:59:11 +0000] rev 27421
bundle: fix grammar in help text
Thu, 17 Dec 2015 14:58:52 +0000 bundle: clarify help text
timeless <timeless@mozdev.org> [Thu, 17 Dec 2015 14:58:52 +0000] rev 27420
bundle: clarify help text The file might not be compressed; the interactions between -a, --base, and a named or default repository weren't clear.
Sun, 13 Dec 2015 20:07:19 +0900 cmdutil: do not duplicate stdout by makefileobj()
Yuya Nishihara <yuya@tcha.org> [Sun, 13 Dec 2015 20:07:19 +0900] rev 27419
cmdutil: do not duplicate stdout by makefileobj() It made output order unpredictable because two separate buffers are flushed individually. Let's use a thin wrapper that just sends close() to black hole.
Sun, 13 Dec 2015 20:01:11 +0900 cmdutil: reimplement file wrapper that disables close()
Yuya Nishihara <yuya@tcha.org> [Sun, 13 Dec 2015 20:01:11 +0900] rev 27418
cmdutil: reimplement file wrapper that disables close() There's no need to dynamically create wrappedfileobj class and define close() as lambda. Also, __iter__() was missing.
Sun, 13 Dec 2015 19:57:54 +0900 export: remove useless comparison between file object and string
Yuya Nishihara <yuya@tcha.org> [Sun, 13 Dec 2015 19:57:54 +0900] rev 27417
export: remove useless comparison between file object and string It was introduced at 31aa2e5b0750, where "template" argument could be a file object. After that, a306837f8c87 added "len(template)", so "template" must be a string now. Therefore, "fp != template" should always be True. It seems 31aa2e5b0750 was intended to work around a bug in TortoiseHg, and I'm sure I've fixed it completely in TortoiseHg source. https://selenic.com/pipermail/mercurial-devel/2011-February/028467.html
Sun, 13 Dec 2015 19:47:46 +0900 export: do not print '<fdopen>' as an output filename
Yuya Nishihara <yuya@tcha.org> [Sun, 13 Dec 2015 19:47:46 +0900] rev 27416
export: do not print '<fdopen>' as an output filename Because makefileobj() duplicates or wraps stdout, "fp != sys.stdout" didn't work correctly. Python doc states that special file objects are named in the form '<...>', and absolute filenames should never start with '<', we can ignore names start with '<'. We can't test fp.fileno() because fp may be a command-server channel. https://docs.python.org/2.7/library/stdtypes.html#file.name In the test output, "exporting patch:" line is printed after patch content. This is caused by fdopen() and will be fixed by the subsequent patch.
Sun, 13 Dec 2015 19:32:01 +0900 commandserver: implement name() to clarify channel is not a plain file
Yuya Nishihara <yuya@tcha.org> [Sun, 13 Dec 2015 19:32:01 +0900] rev 27415
commandserver: implement name() to clarify channel is not a plain file Because unknown attributes are delegated to the underlying file object, commandserver channels said they were '<stdout>' or '<stdin>' even though they weren't. This patch makes them say '<X-channel>'.
(0) -10000 -3000 -1000 -300 -100 -48 +48 +100 +300 +1000 +3000 +10000 tip