Sat, 02 Jan 2016 15:19:47 -0800 scmutil: use context managers for file handles
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 02 Jan 2016 15:19:47 -0800] rev 27706
scmutil: use context managers for file handles Now that we dropped support for Python 2.4, we are able to use context managers. Let's replace the try..finally pattern in scmutil.py with context managers, which close files automatically when the context manager is exited. There should be no change in behavior with this patch. Why convert to context managers if nothing is broken? I'm working on closing file handles in background threads to improve performance on Windows. As part of this, I realized there could be some future issues if the background file closing code isn't designed with context managers in mind. So, I'd like to switch some code to context managers so I can design an API that works with context managers.
Sat, 02 Jan 2016 15:33:01 -0800 statichttprepo: implement __enter__ and __exit__ on httprangeheader
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 02 Jan 2016 15:33:01 -0800] rev 27705
statichttprepo: implement __enter__ and __exit__ on httprangeheader httprangeheader behaves like a file object. Implement __enter__ and __exit__ so it can be used as a context manager, just like file objects.
Sat, 02 Jan 2016 16:41:57 -0800 osutil: implement __enter__ and __exit__ on posixfile
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 02 Jan 2016 16:41:57 -0800] rev 27704
osutil: implement __enter__ and __exit__ on posixfile So they can be used as context managers.
Mon, 11 Jan 2016 15:25:43 -0800 util: introduce ctxmanager, to avoid nested try/finally blocks
Bryan O'Sullivan <bos@serpentine.com> [Mon, 11 Jan 2016 15:25:43 -0800] rev 27703
util: introduce ctxmanager, to avoid nested try/finally blocks This is similar in spirit to contextlib.nested in Python <= 2.6, but uses an extra level of indirection to avoid its inability to clean up if an __enter__ method raises an exception. Why add this mechanism? It greatly simplifies scoped resource management, and lets us eliminate several hundred lines of try/finally blocks. In many of these cases the "finally" is separated from the "try" by hundreds of lines of code, which makes the connection between resource acquisition and disposal difficult to follow. (The preferred mechanism would be the "multi-with" syntax of 2.7+, but Mercurial can't move to 2.7 for a while.) Intended use: >>> with ctxmanager(lambda: file('foo'), lambda: file('bar')) as c: >>> f1, f2 = c() This will open both foo and bar when c() is invoked, and will close both upon exit from the block. If the attempt to open bar raises an exception, the block will not be entered - but foo will still be closed.
Mon, 11 Jan 2016 23:13:34 +0000 hghave: support HGMODULEPOLICY for pure
timeless <timeless@mozdev.org> [Mon, 11 Jan 2016 23:13:34 +0000] rev 27702
hghave: support HGMODULEPOLICY for pure HGMODULEPOLICY was introduced in 4374d819ccd5
Mon, 11 Jan 2016 14:27:12 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 11 Jan 2016 14:27:12 -0600] rev 27701
merge with stable
Fri, 08 Jan 2016 12:07:15 -0600 tests: extend check-commit self-tests
Matt Mackall <mpm@selenic.com> [Fri, 08 Jan 2016 12:07:15 -0600] rev 27700
tests: extend check-commit self-tests This now contains both positive and negative tests for almost all the check-commit rules.
Thu, 07 Jan 2016 14:57:57 -0600 encoding: handle UTF-16 internal limit with fromutf8b (issue5031)
Matt Mackall <mpm@selenic.com> [Thu, 07 Jan 2016 14:57:57 -0600] rev 27699
encoding: handle UTF-16 internal limit with fromutf8b (issue5031) Default builds of Python have a Unicode type that isn't actually full Unicode but UTF-16, which encodes non-BMP codepoints to a pair of BMP codepoints with surrogate escaping. Since our UTF-8b hack escaping uses a plane that overlaps with the UTF-16 escaping system, this gets extra complicated. In addition, unichr() for codepoints greater than U+FFFF may not work either. This changes the code to reuse getutf8char to walk the byte string, so we only rely on Python for unpacking our U+DCxx characters.
Wed, 11 Nov 2015 21:18:02 -0500 bmstore: add handling of the active bookmark
Augie Fackler <augie@google.com> [Wed, 11 Nov 2015 21:18:02 -0500] rev 27698
bmstore: add handling of the active bookmark This further centralizes the handling of bookmark storage, and will help get some lingering bookmarks business out of localrepo. Right now, this change implies reading of the active bookmark to also imply reading all bookmarks from disk - for users with many many bookmarks this may be a measurable performance hit. In that case, we should migrate bmstore to be able to lazy-read its properties from disk rather than having to eagerly read them, but I decided to avoid doing that to try and avoid some potentially complicated filecache decorator issues. This doesn't move the logic for writing the active bookmark into a transaction, though that is probably the correct next step. Since the API probably needs to morph a little more, I didn't bother marking bookmarks.{activate,deactivate} as deprecated yet.
Thu, 07 Jan 2016 20:02:47 -0800 patchbomb: treat empty address list as no addresses
Bryan O'Sullivan <bos@serpentine.com> [Thu, 07 Jan 2016 20:02:47 -0800] rev 27697
patchbomb: treat empty address list as no addresses Previously it wasn't possible to use configuration to avoid being prompted for e.g. a CC list when using patchbomb to send emails. We now make it possible to supply an empty value.
Thu, 07 Jan 2016 19:45:03 -0800 config: add hasconfig method and supporting plumbing
Bryan O'Sullivan <bos@serpentine.com> [Thu, 07 Jan 2016 19:45:03 -0800] rev 27696
config: add hasconfig method and supporting plumbing We add the hasconfig method to make it possible to distinguish between a config value that was never supplied and one that is empty.
Tue, 05 Jan 2016 21:25:51 -0800 verify: replace "output parameters" by return values
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Jan 2016 21:25:51 -0800] rev 27695
verify: replace "output parameters" by return values _verifychangelog() and _verifymanifest() accept dictionaries that they populate. We pass in empty dictionaries, so it's clearer to create them in the functions and return them.
Tue, 05 Jan 2016 22:23:27 +0000 shelve: hook afterresolvedstates
timeless <timeless@mozdev.org> [Tue, 05 Jan 2016 22:23:27 +0000] rev 27694
shelve: hook afterresolvedstates
Fri, 08 Jan 2016 12:35:02 -0600 check-code: allow only-whitespace lines in tests
Matt Mackall <mpm@selenic.com> [Fri, 08 Jan 2016 12:35:02 -0600] rev 27693
check-code: allow only-whitespace lines in tests These turn out to be necessary to embed diffs with blank lines in test input. So we now complain about whitespace following a character.
Thu, 10 Dec 2015 12:56:23 -0600 check-commit: try to curb bad commit summary keywords
Matt Mackall <mpm@selenic.com> [Thu, 10 Dec 2015 12:56:23 -0600] rev 27692
check-commit: try to curb bad commit summary keywords The goal of commit summary keywords is to help us sort, categorize, and filter our voluminous commits for our release notes in a way that's helpful and meaningful to end users. Lately, there have been a huge number of "keywords" that are neither words nor particularly key. This patch tries to discourage that by narrowing the allowed characters to alphanumeric. In particular, it doesn't allow "." (method, function names, and file extensions) and "/" (filenames). It also gives a short reminder of what a keyword ought to be.
Fri, 08 Jan 2016 14:47:02 -0800 changegroup: don't add a second trailing '/' in dir name
Martin von Zweigbergk <martinvonz@google.com> [Fri, 08 Jan 2016 14:47:02 -0800] rev 27691
changegroup: don't add a second trailing '/' in dir name The paths given from treemanifest.dir() already contains the trailing slash.
Fri, 08 Jan 2016 14:33:13 -0800 changegroup: remove left-over debugging help
Martin von Zweigbergk <martinvonz@google.com> [Fri, 08 Jan 2016 14:33:13 -0800] rev 27690
changegroup: remove left-over debugging help
Mon, 28 Dec 2015 17:48:40 +0000 run-tests: skip threading for a single test
timeless <timeless@mozdev.org> [Mon, 28 Dec 2015 17:48:40 +0000] rev 27689
run-tests: skip threading for a single test Threading is incompatible with most Python debuggers, which makes debugging run-tests.py a real pain. If there is only one test to run, skip using a thread for it. Note that --debug is not compatible with debugging tests, since it bypasses the output handling, which is where much of the excitement is.
Fri, 08 Jan 2016 16:27:25 +0100 sslutil: fix reversed logic (issue5034) stable
Gábor Stefanik <gabor.stefanik@nng.com> [Fri, 08 Jan 2016 16:27:25 +0100] rev 27688
sslutil: fix reversed logic (issue5034)
Thu, 07 Jan 2016 12:49:26 +0000 installer: add windows application version number to inno installer script
Urs Rau <urs.rau@gmail.com> [Thu, 07 Jan 2016 12:49:26 +0000] rev 27687
installer: add windows application version number to inno installer script This addition to the inno installer script means that the windows uninstaller registry key “DisplayVersion" is set to the application version number and will show in Add/Remove Programs.
Tue, 05 Jan 2016 13:33:09 -0800 run-tests: add 'diff' entry in json report
Laurent Charignon <lcharignon@fb.com> [Tue, 05 Jan 2016 13:33:09 -0800] rev 27686
run-tests: add 'diff' entry in json report This patch adds to the json report the "diff" between expected and observed result. This diff can be useful for automatically filing bug report on failing tests.
Tue, 01 Dec 2015 13:08:05 -0500 bookmarks: make _readactive safe when readlines raises ENOENT
Augie Fackler <augie@google.com> [Tue, 01 Dec 2015 13:08:05 -0500] rev 27685
bookmarks: make _readactive safe when readlines raises ENOENT When reading over static http, the file isn't actually opened until the readlines() call, so we have to check for ENOENT IOErrors here too. This is necessary so that we can use the bmstore everywhere for managing the active bookmark, which will be true in the next change.
Thu, 17 Dec 2015 21:24:08 -0500 wix: add help for current internal topics
Matt Harbison <matt_harbison@yahoo.com> [Thu, 17 Dec 2015 21:24:08 -0500] rev 27684
wix: add help for current internal topics This makes the changes in a79cba6cb206 and 84784f834b3a available on Windows. I'm not setup to make the installer, so someone with experience in this area should probably give it a look. In looking around to try to figure out how to build the installer, it looks like the Makefile may need an update to $DOCFILES.
Thu, 07 Jan 2016 14:03:11 -0800 help: fix quoting for bundle1 options
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 07 Jan 2016 14:03:11 -0800] rev 27683
help: fix quoting for bundle1 options
Thu, 07 Jan 2016 17:51:54 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 07 Jan 2016 17:51:54 -0600] rev 27682
merge with stable
Fri, 01 Jan 2016 22:35:34 +0900 extdiff: use @command decorator to set up diff commands
Yuya Nishihara <yuya@tcha.org> [Fri, 01 Jan 2016 22:35:34 +0900] rev 27681
extdiff: use @command decorator to set up diff commands It can set "inferrepo" attribute appropriately.
Mon, 04 Jan 2016 22:13:46 +0900 extdiff: factor out list of common options
Yuya Nishihara <yuya@tcha.org> [Mon, 04 Jan 2016 22:13:46 +0900] rev 27680
extdiff: factor out list of common options
Mon, 04 Jan 2016 21:40:05 +0900 dispatch: copy inferrepo attribute to alias commands
Yuya Nishihara <yuya@tcha.org> [Mon, 04 Jan 2016 21:40:05 +0900] rev 27679
dispatch: copy inferrepo attribute to alias commands The other attributes are copied. Let's do the same for the inferrepo.
Wed, 06 Jan 2016 04:59:46 +0000 transplant: specify the right file and path for unfinishedstates
timeless <timeless@mozdev.org> [Wed, 06 Jan 2016 04:59:46 +0000] rev 27678
transplant: specify the right file and path for unfinishedstates
Wed, 06 Jan 2016 04:59:21 +0000 transplant: only use checkunfinished if not continue
timeless <timeless@mozdev.org> [Wed, 06 Jan 2016 04:59:21 +0000] rev 27677
transplant: only use checkunfinished if not continue
Tue, 05 Jan 2016 22:46:04 +0000 transplant: correct language to use working directory
timeless <timeless@mozdev.org> [Tue, 05 Jan 2016 22:46:04 +0000] rev 27676
transplant: correct language to use working directory
Wed, 23 Dec 2015 21:30:38 +0000 histedit: replace @addhisteditaction with @action
timeless <timeless@mozdev.org> [Wed, 23 Dec 2015 21:30:38 +0000] rev 27675
histedit: replace @addhisteditaction with @action @action supports verbs, messages, priority, and internal messages should be translated. internal means the action should not be listed. geteditcomment will construct the verbs list based on @actions (prefering priority over non priority, otherwise favoring verbs with short forms over verbs without).
Wed, 23 Dec 2015 21:20:08 +0000 histedit: prefer edit commit, edit message, use commit
timeless <timeless@mozdev.org> [Wed, 23 Dec 2015 21:20:08 +0000] rev 27674
histedit: prefer edit commit, edit message, use commit Selecting editing commits, rewording commit messages, and selecting commits are key actions, we will prefer them more generally in a future commit, this pulls them ahead before that to make the diffs easier to read. The remaining commands are left alphabetically sorted
Wed, 23 Dec 2015 21:17:45 +0000 histedit: replace editcomment with a function
timeless <timeless@mozdev.org> [Wed, 23 Dec 2015 21:17:45 +0000] rev 27673
histedit: replace editcomment with a function
Tue, 05 Jan 2016 07:47:08 -0800 debugignore: find out why a file is being ignored (issue4856)
Laurent Charignon <lcharignon@fb.com> [Tue, 05 Jan 2016 07:47:08 -0800] rev 27672
debugignore: find out why a file is being ignored (issue4856) This patch adds a capability to hg debugignore: to explain why a given file is being ignores by mercurial. We display the filename, line and linenumber of the rule that lead us to ignore the file.
Tue, 05 Jan 2016 07:47:08 -0800 debugignore: find out if a file is being ignored
Laurent Charignon <lcharignon@fb.com> [Tue, 05 Jan 2016 07:47:08 -0800] rev 27671
debugignore: find out if a file is being ignored Before this patch debugignore was just displaying the list of ignore patterns. This patch makes it support a list of filename as argument and tells the user if those given files are ignored or not.
Tue, 05 Jan 2016 07:52:04 -0800 dirstate: add a way to get the ignore file/line matching an ignored file
Laurent Charignon <lcharignon@fb.com> [Tue, 05 Jan 2016 07:52:04 -0800] rev 27670
dirstate: add a way to get the ignore file/line matching an ignored file This information will be used to improve debugignore (issue4856).
Tue, 05 Jan 2016 19:59:21 +0000 clone: move bookmarks and checkouts before pull help
timeless <timeless@mozdev.org> [Tue, 05 Jan 2016 19:59:21 +0000] rev 27669
clone: move bookmarks and checkouts before pull help The bookmark/checkout help actually split the pull help. The subsequent verbose container is talking about pull too. This change puts the pull help back together again.
Mon, 04 Jan 2016 09:44:58 -0800 status: revert + flag-change == modified
Martin von Zweigbergk <martinvonz@google.com> [Mon, 04 Jan 2016 09:44:58 -0800] rev 27668
status: revert + flag-change == modified After just changing the flag on a file, plain 'hg status' will report the file as modified. However, after reverting a file to a previous revision's state and changing the flag, it will be reported as clean. Fix by comparing the flags that were previously ignored in context._buildstatus().
Tue, 05 Jan 2016 20:52:34 -0800 util: remove outdated comment about construction overhead
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 05 Jan 2016 20:52:34 -0800] rev 27667
util: remove outdated comment about construction overhead An old implementation of this class (possibly only in my local repo) allocated nodes in the cache during construction time, making __init__ slow for large cache capacities. The current implementation lazily grow the cache size, making this comment wrong.
Wed, 06 Jan 2016 06:37:34 +0000 test-transplant.t: improve test coverage
timeless <timeless@mozdev.org> [Wed, 06 Jan 2016 06:37:34 +0000] rev 27666
test-transplant.t: improve test coverage * ?, x, q * not a parent * --source * outstanding local changes * outstanding uncommitted merges * no revision checked out * checkopts all+branch+rev * checkopts all-branch * checkopts no-args * checkopts continue+all * revset:transplanted(...) * filter corrupted changeset
Wed, 06 Jan 2016 15:17:28 +0800 help: use backticks for progress.format keywords, correct letter case
Anton Shestakov <av6@dwimlabs.net> [Wed, 06 Jan 2016 15:17:28 +0800] rev 27665
help: use backticks for progress.format keywords, correct letter case
Wed, 06 Jan 2016 07:55:57 +0000 log: help provide sort by date example
timeless <timeless@mozdev.org> [Wed, 06 Jan 2016 07:55:57 +0000] rev 27664
log: help provide sort by date example
Wed, 06 Jan 2016 19:29:45 -0500 log: mention ordering
timeless <timeless@mozdev.org> [Wed, 06 Jan 2016 19:29:45 -0500] rev 27663
log: mention ordering a user complained that hg help log did not hint how to sort the output by date
Wed, 06 Jan 2016 11:12:09 -0800 transaction: remove 'if True:'
Martin von Zweigbergk <martinvonz@google.com> [Wed, 06 Jan 2016 11:12:09 -0800] rev 27662
transaction: remove 'if True:' This seems to be left over from 96dd93de548c (transaction: reorder unlinking .hg/journal and .hg/journal.backupfiles, 2015-10-16).
Thu, 31 Dec 2015 13:31:42 -0500 lazymanifest: check more return values in filtercopy
Augie Fackler <raf@durin42.com> [Thu, 31 Dec 2015 13:31:42 -0500] rev 27661
lazymanifest: check more return values in filtercopy Spotted by Bryan O'Sullivan (and vexingly not the static analyzer I've been using.)
Thu, 17 Dec 2015 10:30:17 +0000 mercurial: pass ui to extensions.load (issue5007)
Jun Wu <quark@fb.com> [Thu, 17 Dec 2015 10:30:17 +0000] rev 27660
mercurial: pass ui to extensions.load (issue5007) extensions.load does need ui argument to print error if an extension fails to load.
Mon, 04 Jan 2016 21:54:46 -0800 test-patchbomb.t: drop a number of now-redundant uses of "-n"
Bryan O'Sullivan <bos@serpentine.com> [Mon, 04 Jan 2016 21:54:46 -0800] rev 27659
test-patchbomb.t: drop a number of now-redundant uses of "-n"
Mon, 04 Jan 2016 21:54:46 -0800 test-patchbomb.t: test use of sendmail program
Bryan O'Sullivan <bos@serpentine.com> [Mon, 04 Jan 2016 21:54:46 -0800] rev 27658
test-patchbomb.t: test use of sendmail program
Sat, 02 Jan 2016 03:11:52 -0800 merge: add options to warn or ignore on colliding unknown files
Siddharth Agarwal <sid0@fb.com> [Sat, 02 Jan 2016 03:11:52 -0800] rev 27657
merge: add options to warn or ignore on colliding unknown files A 'colliding unknown file' is a file that meets all of the following conditions: - is untracked or ignored on disk - is present in the changeset being merged or updated to - has different contents Previously, we would always abort whenever we saw such files. With this config option we can choose to warn and back the unknown files up instead, or even forgo the warning entirely and silently back the unknown files up. Common use cases for this configuration include a large scale transition of formerly ignored unknown files to tracked files. In some cases the files can be given new names, but in other cases, external "convention over configuration" constraints have determined that the file must retain the same name as before.
Sat, 02 Jan 2016 03:21:01 -0800 batchget: add support for backing up files
Siddharth Agarwal <sid0@fb.com> [Sat, 02 Jan 2016 03:21:01 -0800] rev 27656
batchget: add support for backing up files We're going to use this in an upcoming feature.
Sat, 02 Jan 2016 03:02:57 -0800 merge: add a new 'backup' argument to get actions
Siddharth Agarwal <sid0@fb.com> [Sat, 02 Jan 2016 03:02:57 -0800] rev 27655
merge: add a new 'backup' argument to get actions We're going to use this in an upcoming patch to back untracked files up when they're replaced by tracked ones.
Sat, 02 Jan 2016 03:02:57 -0800 _checkunknownfiles: turn 'conflicts' into a set
Siddharth Agarwal <sid0@fb.com> [Sat, 02 Jan 2016 03:02:57 -0800] rev 27654
_checkunknownfiles: turn 'conflicts' into a set We'll check for membership in this set in an upcoming patch.
Sat, 02 Jan 2016 03:02:57 -0800 checkunknownfiles: make control flow clearer
Siddharth Agarwal <sid0@fb.com> [Sat, 02 Jan 2016 03:02:57 -0800] rev 27653
checkunknownfiles: make control flow clearer In particular, make it clear that we only check for and abort on conflicts if force is not true.
Sat, 02 Jan 2016 03:02:57 -0800 _checkunknownfiles: rename 'aborts' to 'conflicts'
Siddharth Agarwal <sid0@fb.com> [Sat, 02 Jan 2016 03:02:57 -0800] rev 27652
_checkunknownfiles: rename 'aborts' to 'conflicts' In upcoming patches we'll be able to do more useful things than aborting.
Sat, 02 Jan 2016 03:02:57 -0800 origpath: move from cmdutil to scmutil
Siddharth Agarwal <sid0@fb.com> [Sat, 02 Jan 2016 03:02:57 -0800] rev 27651
origpath: move from cmdutil to scmutil This is a lower-level function so it doesn't need to be in cmdutil, and putting it here avoids a bunch of potential import cycle issues.
(0) -10000 -3000 -1000 -300 -100 -56 +56 +100 +300 +1000 +3000 +10000 tip