Thu, 14 Jan 2016 13:34:59 -0800 scmutil: support background file closing
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 14 Jan 2016 13:34:59 -0800] rev 27895
scmutil: support background file closing Closing files that have been appended to is relatively slow on Windows/NTFS. This makes several Mercurial operations slower on Windows. The workaround to this issue is conceptually simple: use multiple threads for I/O. Unfortunately, Python doesn't scale well to multiple threads because of the GIL. And, refactoring our code to use threads everywhere would be a huge undertaking. So, we decide to tackle this problem by starting small: establishing a thread pool for closing files. This patch establishes a mechanism for closing file handles on separate threads. The coordinator object is basically a queue of file handles to operate on and a thread pool consuming from the queue. When files are opened through the VFS layer, the caller can specify that delay closing is allowed. A proxy class for file handles has been added. We must use a proxy because it isn't possible to modify __class__ on built-in types. This adds some overhead. But as future patches will show, this overhead is cancelled out by the benefit of closing file handles on background threads.
Tue, 12 Jan 2016 23:56:48 +0900 templatekw: add {namespaces} keyword
Yuya Nishihara <yuya@tcha.org> [Tue, 12 Jan 2016 23:56:48 +0900] rev 27894
templatekw: add {namespaces} keyword This provides a general-purpose interface to all custom namespaces. The {namespaces} keyword honors the definition order of namespaces as they are kept by sortdict.
Tue, 12 Jan 2016 23:53:56 +0900 templatekw: move shownames() helper to be sorted alphabetically
Yuya Nishihara <yuya@tcha.org> [Tue, 12 Jan 2016 23:53:56 +0900] rev 27893
templatekw: move shownames() helper to be sorted alphabetically I'll add shownamespaces(), which is similar to this function. I want to put them nearby.
Sat, 16 Jan 2016 13:53:32 +0900 templater: make get(dict, key) return a single value
Yuya Nishihara <yuya@tcha.org> [Sat, 16 Jan 2016 13:53:32 +0900] rev 27892
templater: make get(dict, key) return a single value This is necessary to obtain a _hybrid object from a dict. If get() yields a value, it would be stringified. I see no benefit to make get() lazy, so this patch just changes "yield" to "return".
Sat, 16 Jan 2016 13:42:37 +0900 templater: make _hybrid not callable to avoid conflicting semantics
Yuya Nishihara <yuya@tcha.org> [Sat, 16 Jan 2016 13:42:37 +0900] rev 27891
templater: make _hybrid not callable to avoid conflicting semantics In templater, a callable symbol exists for lazy evaluation, which should have f(**mapping) signature. On the other hand, _hybrid.__call__(), which was introduced by 0b241d7a8c62, generates mapping for each element. This patch renames _hybrid.__call__() to _hybrid.itermaps() so that a _hybrid object can be a value of a mapping dict. {namespaces % "{namespace}: {names % "{name }"}\n"} ~~~~~ a _hybrid object
Fri, 15 Jan 2016 13:46:33 -0800 backout: commit changeset by default (BC)
Ruslan Sayfutdinov <sayfutdinov@fb.com> [Fri, 15 Jan 2016 13:46:33 -0800] rev 27890
backout: commit changeset by default (BC) Add --no-commit flag to prevent it. This should make the hg user experience a little better. Some discussion can be found here: http://markmail.org/message/7jm7ro2ias6hxywy
Fri, 15 Jan 2016 13:01:37 -0800 help: move Windows 9x information to appropriate place
Danek Duvall <danek.duvall@oracle.com> [Fri, 15 Jan 2016 13:01:37 -0800] rev 27889
help: move Windows 9x information to appropriate place
Thu, 14 Jan 2016 12:52:59 -0800 shelve: move commitfunc closer to use site
Simon Farnsworth <simonfar@fb.com> [Thu, 14 Jan 2016 12:52:59 -0800] rev 27888
shelve: move commitfunc closer to use site Supporting shelving of unknown files needs this code motion. No functional changes.
Thu, 14 Jan 2016 21:21:59 -0800 commands: document clone bundles hooks and rollback behavior
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 14 Jan 2016 21:21:59 -0800] rev 27887
commands: document clone bundles hooks and rollback behavior The added content is inside a verbose container. I figure it makes sense to explicitly document behavior, including with the caveat it may change later. People can't say they weren't warned!
Thu, 14 Jan 2016 22:50:55 -0800 clonebundles: improve BUNDLESPEC documentation
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 14 Jan 2016 22:50:55 -0800] rev 27886
clonebundles: improve BUNDLESPEC documentation Before the existence of `hg debugbundle --spec`, the process for defining the BUNDLESPEC value in manifests was not very clear and not trivial to automate, especially in the case of stream clone bundles. This patch adds documentation to note the existence of `hg debugbundle --spec`. We drop the reference to stream clone requirements handling because it is now redundant with `hg debugbundle --spec`. While we are here, we further reinforce the importance of defining BUNDLESPEC.
Thu, 14 Jan 2016 22:57:55 -0800 commands: teach debugbundle to print bundle specification
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 14 Jan 2016 22:57:55 -0800] rev 27885
commands: teach debugbundle to print bundle specification This seems like the most logical place to put this functionality. Test coverage over existing known bundle specs has been added.
Thu, 14 Jan 2016 21:27:53 -0800 commands: use context manager for opened bundle file
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 14 Jan 2016 21:27:53 -0800] rev 27884
commands: use context manager for opened bundle file
Thu, 14 Jan 2016 22:49:03 -0800 exchange: implement function for inferring bundle specification
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 14 Jan 2016 22:49:03 -0800] rev 27883
exchange: implement function for inferring bundle specification We don't currently have a mechanism for inferring bundle spec strings from bundle files. This patch adds one. This will eventually be used to make the producing of clone bundles manifests easier.
Thu, 14 Jan 2016 22:48:54 -0800 streamclone: extract code for reading header fields
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 14 Jan 2016 22:48:54 -0800] rev 27882
streamclone: extract code for reading header fields So it can be called from another consumer in a future patch.
Sat, 16 Jan 2016 18:30:01 +0900 encoding: escape U+007F (DEL) character in JSON
Yuya Nishihara <yuya@tcha.org> [Sat, 16 Jan 2016 18:30:01 +0900] rev 27881
encoding: escape U+007F (DEL) character in JSON RFC 7159 does not state that U+007F must be escaped, but it is widely considered a control character. As '\x7f' is invisible on a terminal, and Python's json.dumps() escapes '\x7f', let's do the same.
Thu, 14 Jan 2016 04:14:50 +0000 run-tests: skip threading for a single test (issue5040)
timeless <timeless@mozdev.org> [Thu, 14 Jan 2016 04:14:50 +0000] rev 27880
run-tests: skip threading for a single test (issue5040) This version backs out 50e621fe0362 and implements it in a more consistent manner.
Sat, 16 Jan 2016 10:50:28 -0500 cleanup: use modern @property/@foo.setter property specification
Augie Fackler <augie@google.com> [Sat, 16 Jan 2016 10:50:28 -0500] rev 27879
cleanup: use modern @property/@foo.setter property specification We can use this now that we're 2.6+, and this is more idiomatic modern Python.
Fri, 15 Jan 2016 16:16:25 +0100 buildrpm: use bash shebang, since we use bash features in the script
Mathias De Maré <mathias.demare@gmail.com> [Fri, 15 Jan 2016 16:16:25 +0100] rev 27878
buildrpm: use bash shebang, since we use bash features in the script As suggested by Bryan O'Sullivan.
Thu, 14 Jan 2016 12:37:15 -0600 mac: ignore resource fork when checking file sizes
Matt Mackall <mpm@selenic.com> [Thu, 14 Jan 2016 12:37:15 -0600] rev 27877
mac: ignore resource fork when checking file sizes Some evil evil awful tool adds resource forks to files it's comparing. Our Mac-specific code to do bulk stats was accidentally using "total size" which includes those forks in the file size, causing them to be reported as modified. This changes it to only care about the normal data size and thus agree with what Mercurial's expecting.
Wed, 13 Jan 2016 10:10:05 -0600 copies: fix detection of divergent directory renames
Matt Mackall <mpm@selenic.com> [Wed, 13 Jan 2016 10:10:05 -0600] rev 27876
copies: fix detection of divergent directory renames If we move all the files out of one directory, but into two different directories, we should not consider it a directory rename. The detection of this case was broken.
Fri, 15 Jan 2016 13:14:49 -0800 with: use context manager for transaction in strip
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:49 -0800] rev 27875
with: use context manager for transaction in strip
Fri, 15 Jan 2016 13:14:49 -0800 with: use context manager for transaction in pushphase
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:49 -0800] rev 27874
with: use context manager for transaction in pushphase
Fri, 15 Jan 2016 13:14:49 -0800 with: use context manager for transaction in strip
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:49 -0800] rev 27873
with: use context manager for transaction in strip
Fri, 15 Jan 2016 13:14:50 -0800 with: use a context manager for transaction in strip
Bryan O'Sullivan <bryano@fb.com> [Fri, 15 Jan 2016 13:14:50 -0800] rev 27872
with: use a context manager for transaction in strip
(0) -10000 -3000 -1000 -300 -100 -50 -24 +24 +50 +100 +300 +1000 +3000 +10000 tip