Wed, 16 Sep 2015 12:36:21 -0700 merge: move merge step to the end
Siddharth Agarwal <sid0@fb.com> [Wed, 16 Sep 2015 12:36:21 -0700] rev 26292
merge: move merge step to the end Resolving other conflicts before merge ones is better because the state before the merge is as consistent as possible. It will also help with future work involving automatic resolution of merge conflicts with an external merge driver. There are no ordering issues here because it is easy to verify that the same file is never in both the dg/dm and the m sets.
Wed, 16 Sep 2015 19:52:06 -0700 lock: factor out lock testing into a separate function
Siddharth Agarwal <sid0@fb.com> [Wed, 16 Sep 2015 19:52:06 -0700] rev 26291
lock: factor out lock testing into a separate function This is going to be needed for upcoming work with lock inheritance.
Wed, 16 Sep 2015 19:26:59 -0700 lock: factor code to read lock into a separate function
Siddharth Agarwal <sid0@fb.com> [Wed, 16 Sep 2015 19:26:59 -0700] rev 26290
lock: factor code to read lock into a separate function This is going to be needed for upcoming work with lock inheritance.
Thu, 17 Sep 2015 15:38:00 -0700 tests: add unit tests for locking code
Siddharth Agarwal <sid0@fb.com> [Thu, 17 Sep 2015 15:38:00 -0700] rev 26289
tests: add unit tests for locking code We're going to make significant changes to lock behavior soon.
Tue, 22 Sep 2015 02:09:10 +0800 gitweb: port code selection without line numbers from paper
Anton Shestakov <av6@dwimlabs.net> [Tue, 22 Sep 2015 02:09:10 +0800] rev 26288
gitweb: port code selection without line numbers from paper This is adapted from f2e4fdb3dd27 and e92d4b8530cb. It also fixes issue4790 in gitweb; tab characters now have meaningful width on the modified pages (file view, file diff, changeset).
Sun, 13 Sep 2015 22:34:58 +0900 obsolete: remove unused _knownrevs function
Yuya Nishihara <yuya@tcha.org> [Sun, 13 Sep 2015 22:34:58 +0900] rev 26287
obsolete: remove unused _knownrevs function The call site was removed at cd62532c62a1.
Thu, 17 Sep 2015 16:08:10 -0700 bookmark: do not crash when active bookmark is forward and --date is used
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Sep 2015 16:08:10 -0700] rev 26286
bookmark: do not crash when active bookmark is forward and --date is used The logic that decides where to update according to the active bookmark location (when not on ".") was setting the rev to update to before we process --date. This lead to --date processing aborting because of duplicated specification. We reorder the two pieces of code and add a test for this.
Thu, 17 Sep 2015 17:17:54 -0700 bookmark: actually test update behavior in both cases
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Sep 2015 17:17:54 -0700] rev 26285
bookmark: actually test update behavior in both cases The test claimed to test pull --update behaved the same way as pull + update, but the behavior of pull + update was never tested. We now test both.
Fri, 18 Sep 2015 14:03:32 +0800 coal: reuse style-paper.css and use a separate css file for visual tweaks
Anton Shestakov <av6@dwimlabs.net> [Fri, 18 Sep 2015 14:03:32 +0800] rev 26284
coal: reuse style-paper.css and use a separate css file for visual tweaks To remove another big chunk of duplication from coal hgweb style, we can move all visual tweaks to style-extra-coal.css and include it together with style-paper.css.
Fri, 18 Sep 2015 01:06:27 +0800 coal: reuse all templates from paper/map by %including the file
Anton Shestakov <av6@dwimlabs.net> [Fri, 18 Sep 2015 01:06:27 +0800] rev 26283
coal: reuse all templates from paper/map by %including the file Before, coal/map simply had all the templates copied and pasted from paper/map file. It was easy to make a change to paper that would get into coal only partially and just sit there until something like 399e970e35c8 happened. Let's remove this duplication from coal/map by using %include to reuse templates from paper/map directly.
Fri, 04 Sep 2015 05:40:52 -0400 help/config: reword committemplate external editor text
timeless@mozdev.org [Fri, 04 Sep 2015 05:40:52 -0400] rev 26282
help/config: reword committemplate external editor text
Fri, 04 Sep 2015 05:40:37 -0400 help/config: reword committemplate multibyte character text
timeless@mozdev.org [Fri, 04 Sep 2015 05:40:37 -0400] rev 26281
help/config: reword committemplate multibyte character text
Fri, 28 Aug 2015 15:43:14 -0400 help/config: use :hg:`help config....` notation
timeless@mozdev.org [Fri, 28 Aug 2015 15:43:14 -0400] rev 26280
help/config: use :hg:`help config....` notation
Fri, 28 Aug 2015 15:24:58 -0400 help/config: omit True or False
timeless@mozdev.org [Fri, 28 Aug 2015 15:24:58 -0400] rev 26279
help/config: omit True or False
Fri, 28 Aug 2015 15:13:28 -0400 help/config: capitalize items
timeless@mozdev.org [Fri, 28 Aug 2015 15:13:28 -0400] rev 26278
help/config: capitalize items
Thu, 17 Sep 2015 21:20:35 -0400 tests: add more doctests for check-translation deprecated
timeless@mozdev.org [Thu, 17 Sep 2015 21:20:35 -0400] rev 26277
tests: add more doctests for check-translation deprecated
Thu, 17 Sep 2015 21:20:17 -0400 tests: cleanup check-translation deprecated
timeless@mozdev.org [Thu, 17 Sep 2015 21:20:17 -0400] rev 26276
tests: cleanup check-translation deprecated
Fri, 18 Sep 2015 14:24:53 +0800 gitweb: add author to filelogentry
Anton Shestakov <av6@dwimlabs.net> [Fri, 18 Sep 2015 14:24:53 +0800] rev 26275
gitweb: add author to filelogentry The line is copied from shortlogentry template.
Fri, 18 Sep 2015 14:24:38 +0800 monoblue: add author to filelogentry
Anton Shestakov <av6@dwimlabs.net> [Fri, 18 Sep 2015 14:24:38 +0800] rev 26274
monoblue: add author to filelogentry The line is copied from shortlogentry template.
Fri, 18 Sep 2015 14:23:44 +0800 monoblue: split a long line in filelogentry template
Anton Shestakov <av6@dwimlabs.net> [Fri, 18 Sep 2015 14:23:44 +0800] rev 26273
monoblue: split a long line in filelogentry template The whole td has a nowrap class, which disallows breaking the line, so it's not required to use non-breakable spaces.
Fri, 18 Sep 2015 21:32:43 +0900 readbundle: fix typo of None compression
Yuya Nishihara <yuya@tcha.org> [Fri, 18 Sep 2015 21:32:43 +0900] rev 26272
readbundle: fix typo of None compression The test simulates pre-d1b16a746db6 hgweb that sends "unbundle" capability with no argument.
Fri, 11 Sep 2015 17:06:56 -0700 readbundle: map 'HG10UN' to None compression
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 11 Sep 2015 17:06:56 -0700] rev 26271
readbundle: map 'HG10UN' to None compression In line with the other previous changes
Fri, 11 Sep 2015 17:06:02 -0700 getsubset: use None to request uncompressed changegroup
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 11 Sep 2015 17:06:02 -0700] rev 26270
getsubset: use None to request uncompressed changegroup
Fri, 11 Sep 2015 17:05:46 -0700 bundle: use None when unpacking uncompressed changegroup
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 11 Sep 2015 17:05:46 -0700] rev 26269
bundle: use None when unpacking uncompressed changegroup Let's be more modern!
Tue, 15 Sep 2015 17:43:54 -0700 writebundle: use 'None' instead of 'UN' for the bundle2 case
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 15 Sep 2015 17:43:54 -0700] rev 26268
writebundle: use 'None' instead of 'UN' for the bundle2 case Let's be modern!
Tue, 15 Sep 2015 17:53:28 -0700 compression: use 'None' for no-compression
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 15 Sep 2015 17:53:28 -0700] rev 26267
compression: use 'None' for no-compression This seems more idiomatic and clearer. We still support both None and 'UN' for now because no user are migrated.
Tue, 15 Sep 2015 17:35:32 -0700 changegroup: move all compressions utilities in util
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 15 Sep 2015 17:35:32 -0700] rev 26266
changegroup: move all compressions utilities in util We'll reuse the compression for other things (next target bundle2), so let's make it more accessible and organised.
Tue, 15 Sep 2015 13:12:03 -0700 obsolete: clarify that 'successorssets' returns the latest successors
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 15 Sep 2015 13:12:03 -0700] rev 26265
obsolete: clarify that 'successorssets' returns the latest successors We do not return the first successors we found, we returns the latest (non obsolete (mostly)) one following the obsolete link transitively. We update the documentation to make this clean.
Tue, 15 Sep 2015 13:10:25 -0700 obsolete: drop an empty line at the end of a docstring
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 15 Sep 2015 13:10:25 -0700] rev 26264
obsolete: drop an empty line at the end of a docstring This empty line is useless, let's drop it.
Fri, 11 Sep 2015 12:45:19 -0700 traceback: allow providing a local support contact point
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 11 Sep 2015 12:45:19 -0700] rev 26263
traceback: allow providing a local support contact point The extensions blaming code is fine for casual users but pretty terrible for corporate environments that can deploy a large amount of extensions to unsuspecting users. Reports will likely blame a random "innocent" extension (in our case crecord) and the hint in the message will triggers endless debug attempts from the user. We introduce a "ui.supportcontact" option that allow such big company to redirect their users to their own support desk. This disables all extensions blaming and just point people to the local support in all cases.
Thu, 17 Sep 2015 11:50:55 -0700 dispatch: pre-indent the extensions blaming logic
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Sep 2015 11:50:55 -0700] rev 26262
dispatch: pre-indent the extensions blaming logic We are about to put some real conditional here, but pre-indenting in it's own changesets makes next patch much cleaner.
Thu, 17 Sep 2015 07:49:18 -0400 tests: check for inconsistently translated DEPRECATED
timeless@mozdev.org [Thu, 17 Sep 2015 07:49:18 -0400] rev 26261
tests: check for inconsistently translated DEPRECATED Mercurial expects DEPRECATED to be translated consistently, not doing that breaks Mercurial.
Thu, 17 Sep 2015 07:33:21 -0400 i18n-fr: reject translation which is missing DEPRECATED
timeless@mozdev.org [Thu, 17 Sep 2015 07:33:21 -0400] rev 26260
i18n-fr: reject translation which is missing DEPRECATED
Thu, 17 Sep 2015 07:47:30 -0400 i18n-pt_BR: select a single definition of DEPRECATED
timeless@mozdev.org [Thu, 17 Sep 2015 07:47:30 -0400] rev 26259
i18n-pt_BR: select a single definition of DEPRECATED Mercurial expects DEPRECATED to be translated consistently, not doing that breaks Mercurial.
Thu, 17 Sep 2015 07:37:20 -0400 i18n-sv: select a single definition of DEPRECATED
timeless@mozdev.org [Thu, 17 Sep 2015 07:37:20 -0400] rev 26258
i18n-sv: select a single definition of DEPRECATED Mercurial expects DEPRECATED to be translated consistently, not doing that breaks Mercurial.
Thu, 17 Sep 2015 07:34:27 -0400 i18n-ro: use ()s instead of [] for DEPRECATED
timeless@mozdev.org [Thu, 17 Sep 2015 07:34:27 -0400] rev 26257
i18n-ro: use ()s instead of [] for DEPRECATED
Thu, 17 Sep 2015 07:34:13 -0400 i18n-ro: include translation of DEPRECATED
timeless@mozdev.org [Thu, 17 Sep 2015 07:34:13 -0400] rev 26256
i18n-ro: include translation of DEPRECATED
Thu, 17 Sep 2015 07:35:03 -0400 i18n-zh_CN: include translation of DEPRECATED
timeless@mozdev.org [Thu, 17 Sep 2015 07:35:03 -0400] rev 26255
i18n-zh_CN: include translation of DEPRECATED
Thu, 17 Sep 2015 07:33:44 -0400 i18n-it: include translation of DEPRECATED
timeless@mozdev.org [Thu, 17 Sep 2015 07:33:44 -0400] rev 26254
i18n-it: include translation of DEPRECATED
Thu, 17 Sep 2015 07:32:28 -0400 i18n-da: include translation of DEPRECATED
timeless@mozdev.org [Thu, 17 Sep 2015 07:32:28 -0400] rev 26253
i18n-da: include translation of DEPRECATED
Thu, 17 Sep 2015 07:31:07 -0400 test-i18n: always run non gettext tests
timeless@mozdev.org [Thu, 17 Sep 2015 07:31:07 -0400] rev 26252
test-i18n: always run non gettext tests
Tue, 15 Sep 2015 00:32:39 +0900 localrepo: refresh filecache stats only if transaction finished successfully
Yuya Nishihara <yuya@tcha.org> [Tue, 15 Sep 2015 00:32:39 +0900] rev 26251
localrepo: refresh filecache stats only if transaction finished successfully If commit is aborted by pretxncommit hook, in-memory changelog and manifest have entries that would be added. So they must be discarded on invalidate(). But the mechanism introduced by a710936c3037 doesn't handle this case well. It tries to mitigate the penalty of invalidate() by marking in-memory cache as "clean" on unlock assuming that they are identical to the stored data. But this assumption is wrong if stored data are rolled back by tr.abort(). This patch moves the hook to post-close action so that it will never be triggered on abort. This bug was originally reported to thg, which is only reproducible in command-server process on unix, evolve disabled. https://bitbucket.org/tortoisehg/thg/issues/4285/
Tue, 15 Sep 2015 21:00:28 +0900 localrepo: move closure of lock release to class
Yuya Nishihara <yuya@tcha.org> [Tue, 15 Sep 2015 21:00:28 +0900] rev 26250
localrepo: move closure of lock release to class It only captures "self", so it isn't necessary to be created dynamically.
Wed, 16 Sep 2015 22:30:36 +0800 highlight: add highlightfiles config option which takes a fileset (issue3005)
Anton Shestakov <av6@dwimlabs.net> [Wed, 16 Sep 2015 22:30:36 +0800] rev 26249
highlight: add highlightfiles config option which takes a fileset (issue3005) Highlight extension lacked a way to limit files by size, by extension, and/or by any other part of file path. A good solution would be to use a fileset, since it can check file path, extension and size (and more) in one expression. So this change introduces such an option, highlighfiles, which takes a fileset and on each request decides if the requested file should be highlighted. The default "size('<5M')" is, in a way, suggested in issue3005. checkfctx() limits the amount of work to just one file (subset kwarg in fileset.matchctx()). Monkey-patching works around issue4568, otherwise using filesets here while running hgweb in directory mode would say, for example, "Abort: **.py not under root", but this fix is very local and probably far from ideal. I suspect there to be a way to fix this for the whole hgweb and resolve the issue, but I don't know how to do it.
Fri, 04 Sep 2015 11:15:02 -0400 posix: shellquote do not require quoting for "+" (issue4818)
timeless@mozdev.org [Fri, 04 Sep 2015 11:15:02 -0400] rev 26248
posix: shellquote do not require quoting for "+" (issue4818)
Sat, 12 Sep 2015 12:16:39 -0700 hgweb: consume generator inside context manager (issue4756)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 Sep 2015 12:16:39 -0700] rev 26247
hgweb: consume generator inside context manager (issue4756) If code inside a context manager returns a generator, the context manager exits before the generator is iterated. hgweb was using a context manager to control thread safe access to a localrepository instance. But it was returning a generator, so there was a race condition between a previous request streaming a response to the client and a new request obtaining the released but in use repository. By iterating the generator inside the context manager, we ensure we don't release the repo instance until after the response has finished. With this change, hgweb finally appears to have full localrepository isolation between threads. I can no longer reproduce the 2 exceptions reported in issue4756. test-hgweb-non-interactive.t has been modified to consume the output of calling into a WSGI application. Without this, execution of the WSGI application stalls because of the added yield statement.
Thu, 27 Aug 2015 14:46:26 -0400 histedit: use one editor when multiple folds happen in a row (issue3524) (BC)
Augie Fackler <augie@google.com> [Thu, 27 Aug 2015 14:46:26 -0400] rev 26246
histedit: use one editor when multiple folds happen in a row (issue3524) (BC) This was the first ever feature request for histedit, originally filed back on April 4, 2009. Finally fixed. In the future we'll probably want to make it possible for other preprocessing steps to be added to the list, but for now we're skipping that because it's unclear what the API should look like without a proposed consumer.
Mon, 14 Sep 2015 18:41:09 +0800 hgweb: replace .sourcelast with .bottomline that does the same
Anton Shestakov <av6@dwimlabs.net> [Mon, 14 Sep 2015 18:41:09 +0800] rev 26245
hgweb: replace .sourcelast with .bottomline that does the same In paper and Coal, basically, div.sourcelast was only used to make a 1px border on the bottom of file source view (and only there). It's better to use bottomline class, that also exists for the same purpose (visually), but is used more widely and works without needing an empty <div>.
Sun, 13 Sep 2015 21:01:34 +0800 coal: copy newer things from paper
Anton Shestakov <av6@dwimlabs.net> [Sun, 13 Sep 2015 21:01:34 +0800] rev 26244
coal: copy newer things from paper Basically, coal style in hgweb is intended to be functionally equivalent (just different in style) to paper, and does this by reusing almost all templates from paper (except header.tmpl, where it specifies a different css file). Looks like everybody forgot this and so many improvements to paper templates, that should've also made it into coal, were often only half-done there (usually thanks to template reuse). Let's fix this by bulk-copying missing things from paper/map and style-paper.css to coal/map and style-coal.css. There were many improvements to paper that didn't touch coal, and that makes it hard to untangle the code and split this patch into many, but here are some of the changes (paper-only), that now get into coal: 41c4bdd1d585 - hgweb: color line which is linked to in file source view f3393d458bf5 - hgweb: highlight line which is linked to at annotate view f2e4fdb3dd27 - hgweb: code selection without line numbers in file source view 5ec5097b4c0f - hgweb: add line wrapping switch to file source view bf661a03fddc - hgweb: use css margin instead of empty <p> before diffstat table It also fixes line anchor in annotateline template (#42 vs #l42).
Sat, 12 Sep 2015 16:11:17 -0700 revlog: optionally cache the full text when adding revisions
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 Sep 2015 16:11:17 -0700] rev 26243
revlog: optionally cache the full text when adding revisions revlog instances can cache the full text of a single revision. Typically the most recently read revision is cached. When adding a delta group via addgroup() and _addrevision(), the full text isn't always computed: sometimes only the passed in delta is sufficient for adding a new revision to the revlog. When writing the changelog from a delta group, the just-added full text revision is always read immediately after it is written because the changegroup code needs to extract the set of files from the entry. In other words, revision() is *always* being called and caching the full text of the just-added revision is guaranteed to result in a cache hit, making the cache worthwhile. This patch adds support to _addrevision() for always building and caching the full text. This option is currently only active when processing changelog entries from a changegroup. While the total number of revision() calls is the same, the location matters: buildtext() calls into revision() on the base revision when building the full text of the just-added revision. Since the previous revision's _addrevision() built the full text and the the previous revision is likely the base revision, this means that the base revision's full text is likely cached and can be used to compute the current full text from just a delta. No extra I/O required. The end result is the changelog isn't opened and read after adding every revision from a changegroup. On my 2013 MacBook Pro running OS X 10.10.5 from an SSD and Python 2.7, this patch impacted the time taken to apply ~262,000 changesets from a mozilla-central gzip bundle: before: ~43s after: ~32s ~25% reduction in changelog processing times. Not bad.
Sat, 12 Sep 2015 15:16:47 -0700 revlog: drop local assignment of cache variable
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 Sep 2015 15:16:47 -0700] rev 26242
revlog: drop local assignment of cache variable The purpose of this code was to provide thread safety. With the conversion of hgweb to use separate localrepository instances per request/thread, we should no longer have any consumers that need to access revlog instances from multiple threads. Remove the code.
Sat, 12 Sep 2015 12:47:00 -0700 revlog: rename generic "i" variable to "indexdata"
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 Sep 2015 12:47:00 -0700] rev 26241
revlog: rename generic "i" variable to "indexdata" Increase readability.
Sat, 12 Sep 2015 11:31:56 -0700 hg: always create new localrepository instance
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 Sep 2015 11:31:56 -0700] rev 26240
hg: always create new localrepository instance cachedlocalrepo.copy() didn't actually create new localrepository instances. This meant that the new thread isolation code in hgweb wasn't actually using separate localrepository instances, even though it was properly using separate cachedlocalrepo instances. Because the behavior of the API changed, the single caller in hgweb had to be refactored to always call _webifyrepo() or it may not have used the proper filter. I confirmed via print() debugging that id(repo) is in fact different on each thread. This was not the case before. For reasons I can't yet explain, this does not fix issue4756. I suspect there is shared cache somewhere that isn't thread safe.
Thu, 10 Sep 2015 19:45:46 -0400 test-bad-extension: reduce dependencies on other things
timeless@mozdev.org [Thu, 10 Sep 2015 19:45:46 -0400] rev 26239
test-bad-extension: reduce dependencies on other things test-bad-extension would jitter if the format of the first line of hg help changed, which isn't relevant to its goal.
Thu, 10 Sep 2015 20:22:37 -0400 help: fix help argument parsing and documentation
timeless@mozdev.org [Thu, 10 Sep 2015 20:22:37 -0400] rev 26238
help: fix help argument parsing and documentation support combining -c and -e previously -k was misdocumented: * the first line didn't mention it * the help half implied you could do help -k keyword topic with these changes, -k just changes the search method support -c and -e for -k searches
Thu, 10 Sep 2015 10:48:20 -0400 minirst: establish leveling for nested definitions
timeless@mozdev.org [Thu, 10 Sep 2015 10:48:20 -0400] rev 26237
minirst: establish leveling for nested definitions
Sun, 13 Sep 2015 16:30:21 -0400 dispatch: use the right context manager to deactivate demandimport
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Sun, 13 Sep 2015 16:30:21 -0400] rev 26236
dispatch: use the right context manager to deactivate demandimport In e86d12404d69 I very embarrassingly wrote a patch with the completely wrong function name. This should fix it.
Thu, 10 Sep 2015 10:50:03 -0400 ui: improve docs on ui.log
Augie Fackler <augie@google.com> [Thu, 10 Sep 2015 10:50:03 -0400] rev 26235
ui: improve docs on ui.log This makes the documentation on ui.log line up with the use of that interface in blackbox.
Sat, 12 Sep 2015 00:21:41 +0900 templater: switch ctx of list expression to rev of revset() (BC)
Yuya Nishihara <yuya@tcha.org> [Sat, 12 Sep 2015 00:21:41 +0900] rev 26234
templater: switch ctx of list expression to rev of revset() (BC) Because revset() function generates a list of revisions, it seems sensible to switch the ctx as well where a list expression will be evaluated. I think "{revset(...) % "..."}" expression wasn't considered well when it was introduced at cda9d2b6beab.
Thu, 10 Sep 2015 23:32:36 +0900 fileset: handle error of string unescaping
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Sep 2015 23:32:36 +0900] rev 26233
fileset: handle error of string unescaping
Thu, 10 Sep 2015 23:29:55 +0900 revset: handle error of string unescaping
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Sep 2015 23:29:55 +0900] rev 26232
revset: handle error of string unescaping
Thu, 10 Sep 2015 23:25:10 +0900 parser: move unescape helper from templater
Yuya Nishihara <yuya@tcha.org> [Thu, 10 Sep 2015 23:25:10 +0900] rev 26231
parser: move unescape helper from templater revset and fileset have a similar problem, so let's make it a common helper function.
Thu, 10 Sep 2015 16:14:39 -0700 unionrepo: take delta base in account with building unified revlog
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 10 Sep 2015 16:14:39 -0700] rev 26230
unionrepo: take delta base in account with building unified revlog When general delta is enabled, the base is actually meaningful and should be used. With general delta is enabled, test-unionrepo.t crash without this fix.
Wed, 09 Sep 2015 22:27:48 -0400 extdiff: enable -I/-X with --patch
Matt Harbison <matt_harbison@yahoo.com> [Wed, 09 Sep 2015 22:27:48 -0400] rev 26229
extdiff: enable -I/-X with --patch Not sure how useful this really is, but it's trivial to add and ignoring the existing arguments supported seems like a bad UI.
Wed, 09 Sep 2015 21:07:38 -0400 extdiff: add a --patch argument for diffing changeset deltas
Matt Harbison <matt_harbison@yahoo.com> [Wed, 09 Sep 2015 21:07:38 -0400] rev 26228
extdiff: add a --patch argument for diffing changeset deltas One of the things I missed the most when transitioning from versioned MQ to evolve was the loss of being able to check that rebase conflicts were properly resolved by: $ hg ci --mq -m "before" $ hg rebase -s qbase -d tip $ hg bcompare --mq The old csets stay in the tree with evolve, but a straight diff includes all of the other changes that were pulled in, obscuring the code that was rebased. Diffing deltas can be confusing, but unless radical changes were made during the resolve, it is very clear when individual hunks are added, dropped or modified. Unlike the MQ technique, this can only compare a single pair of csets/patches at a time. Like the MQ method, this also highlights changes in the commit comment and other metadata. I originally tried monkey patching from the evolve extension, but that is too complicated given that it depends on the order the two different extensions are loaded. This functionality is also useful when comparing grafts however, so implementing it in the core is more than just convenience. The --change argument doesn't make much sense for this, but it isn't harmful so I didn't bother blocking it. The -I/-X options are ignored because of a limitation of cmdutil.export(). We'll fix that next.
Wed, 09 Sep 2015 20:48:09 -0400 extdiff: prepare sections of dodiff() for conditionalizing
Matt Harbison <matt_harbison@yahoo.com> [Wed, 09 Sep 2015 20:48:09 -0400] rev 26227
extdiff: prepare sections of dodiff() for conditionalizing This is purely indenting under an unconditional branch, so that the actual changes in the next patch are clear. Feel free to fold them if desired.
Fri, 11 Sep 2015 12:48:09 -0700 hgweb: drop unused import
Matt Mackall <mpm@selenic.com> [Fri, 11 Sep 2015 12:48:09 -0700] rev 26226
hgweb: drop unused import
Thu, 10 Sep 2015 13:45:00 -0400 help/config: back out 5f2a1ebd6e78
Augie Fackler <augie@google.com> [Thu, 10 Sep 2015 13:45:00 -0400] rev 26225
help/config: back out 5f2a1ebd6e78 This breaks building manpages, and by association breaks building debs. timeless has a fix coming, but it turns out we'll need to back out 5f2a1ebd6e78 anyway, so just back it out now to fix building packages.
Thu, 10 Sep 2015 09:41:11 -0400 filemerge: add non-interactive :merge-local and :merge-other
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 10 Sep 2015 09:41:11 -0400] rev 26224
filemerge: add non-interactive :merge-local and :merge-other There are two non-interactive internal merge tools, :other and :local, but they don't really merge, they just pick all changes from the local or other version of the file. In some situations, it is known that we want a merge and also know that all merge conflicts should be resolved in one direction. Although external merge tools can do this, sometimes it can be convenient to do so from within hg, without invoking a merge tool. These new :merge-local and :merge-other tools can do just that.
Wed, 12 Aug 2015 08:53:01 -0400 simplemerge: enable option to resolve conflicts one way
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Wed, 12 Aug 2015 08:53:01 -0400] rev 26223
simplemerge: enable option to resolve conflicts one way With this change, the simplemerge algorithm grows an option to only return the local or the other hunk in a conflicting region.
Wed, 26 Aug 2015 16:27:14 -0500 templater: add new docheader/footer components for XML (issue4135)
Matt Mackall <mpm@selenic.com> [Wed, 26 Aug 2015 16:27:14 -0500] rev 26222
templater: add new docheader/footer components for XML (issue4135) The existing header/footer components were templated per-changeset, and thus couldn't be correctly printed for an empty log
Thu, 10 Sep 2015 09:52:17 -0400 import-checker: use modern .endswith for multiple suffixes
Augie Fackler <augie@google.com> [Thu, 10 Sep 2015 09:52:17 -0400] rev 26221
import-checker: use modern .endswith for multiple suffixes Suggested by Anton Shestakov <engored@ya.ru> on the list. Thanks!
Sat, 22 Aug 2015 18:43:24 -0700 hgweb: use separate repo instances per thread
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 18:43:24 -0700] rev 26220
hgweb: use separate repo instances per thread Before this change, multiple threads/requests could share a localrepository instance. This meant that all of localrepository needed to be thread safe. Many bugs have been reported telling us that localrepository isn't actually thread safe. While making localrepository thread safe is a noble cause, it is a lot of work. And there is little gain from doing so. Due to Python's GIL, only 1 thread may be processing Python code at a time. The benefits to multi-threaded servers are marginal. Thread safety would be a lot of work for little gain. So, we're not going to even attempt it. This patch establishes a pool of repos in hgweb. When a request arrives, we obtain the most recently used repository from the pool or create a new one if none is available. When the request has finished, we put that repo back in the pool. We start with a pool size of 1. For servers using a single thread, the pool will only ever be of size 1. For multi-threaded servers, the pool size will grow to the max number of simultaneous requests the server processes. No logic for pruning the pool has been implemented. We assume server operators either limit the number of threads to something they can handle or restart the Mercurial process after a certain amount of requests or time has passed.
Sat, 22 Aug 2015 18:54:34 -0700 hg: establish a cache for localrepository instances
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 18:54:34 -0700] rev 26219
hg: establish a cache for localrepository instances hgweb contained code for determining whether a cached localrepository instance was up to date. This code was way too low-level to be in hgweb. This functionality has been moved to a new "cachedlocalrepo" class in hg.py. The code has been changed slightly to facilitate use inside a class. hgweb has been refactored to use the new API. As part of this refactor, hgweb.repo no longer exists! We're very close to using a distinct repo instance per thread. The new cache records state when it is created. This intelligence prevents an extra localrepository from being created on the first hgweb request. This is why some redundant output from test-extension.t has gone away.
Sat, 22 Aug 2015 18:15:42 -0700 hgweb: create function to perform actions on new repo
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 18:15:42 -0700] rev 26218
hgweb: create function to perform actions on new repo We perform some common tasks when a new repo instance is obtained. In preparation for changing how we obtain repo instances, factor this functionality into a standalone function.
Sat, 22 Aug 2015 17:50:28 -0700 hgweb: remove proxy to hgweb instance
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 17:50:28 -0700] rev 26217
hgweb: remove proxy to hgweb instance We were temporarily routing attributes until all request-specific attributes from hgweb were moved to requestcontext. We have finally reached that juncture and we can remove the proxy. At this point, only the repo instance is prone to race conditions between threads. This will be dealt with shortly.
Thu, 10 Sep 2015 09:30:10 -0400 dispatch: disable demandimport when invoking the debugger
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 10 Sep 2015 09:30:10 -0400] rev 26216
dispatch: disable demandimport when invoking the debugger Turns out that demandimport confuses pudb, which does some pretty complicated imports. I think it's reasonable to disable demandimport here.
Wed, 09 Sep 2015 14:43:45 -0700 templater: create string unescape helper (issue4798)
Matt Mackall <mpm@selenic.com> [Wed, 09 Sep 2015 14:43:45 -0700] rev 26215
templater: create string unescape helper (issue4798) This gives us a unified place to do error-handling of string-escaping syntax errors
Sat, 05 Sep 2015 16:50:35 +0900 parsers: use PyTuple_New and SET_ITEM to construct metadata pair of markers
Yuya Nishihara <yuya@tcha.org> [Sat, 05 Sep 2015 16:50:35 +0900] rev 26214
parsers: use PyTuple_New and SET_ITEM to construct metadata pair of markers With these 2 patches, fm1readmarkers() gets slightly faster: obsolete._fm1readmarkers() for 78644 entries 58.0 -> 56.2msec
Sat, 05 Sep 2015 16:41:21 +0900 parsers: use PyTuple_SET_ITEM() to fill new marker tuples
Yuya Nishihara <yuya@tcha.org> [Sat, 05 Sep 2015 16:41:21 +0900] rev 26213
parsers: use PyTuple_SET_ITEM() to fill new marker tuples Because we know these tuples have no member yet, PyTuple_SetItem() isn't necessary.
Sat, 05 Sep 2015 12:56:53 +0900 revset: uncache filteredset.__contains__
Yuya Nishihara <yuya@tcha.org> [Sat, 05 Sep 2015 12:56:53 +0900] rev 26212
revset: uncache filteredset.__contains__ Since 96b6b3d78697, condition function returns a cached value, so there's little benefit to cache __contains__. No measurable difference found in contrib/base-revsets.txt.
Sat, 22 Aug 2015 17:08:37 -0700 hgweb: assign ctype to requestcontext
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 17:08:37 -0700] rev 26211
hgweb: assign ctype to requestcontext The very existence of ctype is a bit hacky. But we roll with it. Before this patch, there was possibly a race condition between 2 threads handling file requests: 1 thread could set the ctype and another serving a different file would read and use that potentially wrong ctype.
Sat, 22 Aug 2015 17:04:24 -0700 hgweb: add reponame to requestcontext
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 17:04:24 -0700] rev 26210
hgweb: add reponame to requestcontext We have to use object.__setattr__ until the app proxy is gone.
Sat, 22 Aug 2015 16:54:52 -0700 hgweb: don't access self.repo during request processing
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 16:54:52 -0700] rev 26209
hgweb: don't access self.repo during request processing We want all repository accesses to go through requestcontext.repo so the request is isolated from the application.
Sat, 22 Aug 2015 16:44:36 -0700 hgweb: extract _getview to own function
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 16:44:36 -0700] rev 26208
hgweb: extract _getview to own function While we're refactoring code, we might as well remove a method that doesn't need to be a method.
Sat, 22 Aug 2015 16:41:02 -0700 hgweb: regenerate web substitutions when repo is refreshed
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 16:41:02 -0700] rev 26207
hgweb: regenerate web substitutions when repo is refreshed Previously, changes to the configuration would not be picked up by a running server. That feels like a bug. Regenerate the web substitutions table when the repository changes.
Wed, 09 Sep 2015 09:07:27 -0700 add: pass full=False to dirstate walk
Durham Goode <durham@fb.com> [Wed, 09 Sep 2015 09:07:27 -0700] rev 26206
add: pass full=False to dirstate walk Previously cmdutil.add would call wctx.walk(), which under the hood calls dirstate.walk with full=True. This means it returns all of the clean files (which we don't need when computing the add set), as well as the unclean files. This results in 1) a lot more work being done and 2) this code path circumventing the hgwatchman extension, resulting in worse performance in hgwatchman environments ('hg add .' went from 9s to 1.8s).
Wed, 09 Sep 2015 12:40:57 -0700 hgweb: drop unused import
Matt Mackall <mpm@selenic.com> [Wed, 09 Sep 2015 12:40:57 -0700] rev 26205
hgweb: drop unused import
Tue, 08 Sep 2015 20:44:18 -0400 obsolete: improve English of successorssets
timeless@mozdev.org [Tue, 08 Sep 2015 20:44:18 -0400] rev 26204
obsolete: improve English of successorssets
Tue, 08 Sep 2015 20:30:01 -0400 histedit: fix grammar in cleanupnode comment
timeless@mozdev.org [Tue, 08 Sep 2015 20:30:01 -0400] rev 26203
histedit: fix grammar in cleanupnode comment
Tue, 08 Sep 2015 15:32:20 -0400 hgweb.server: fix _httprequesthandlerssl help text
timeless@mozdev.org [Tue, 08 Sep 2015 15:32:20 -0400] rev 26202
hgweb.server: fix _httprequesthandlerssl help text
Tue, 08 Sep 2015 15:32:20 -0400 util: capitalize Python in MBTextWrapper._wrap_chunks comment
timeless@mozdev.org [Tue, 08 Sep 2015 15:32:20 -0400] rev 26201
util: capitalize Python in MBTextWrapper._wrap_chunks comment
Tue, 08 Sep 2015 14:56:29 -0400 hgweb: remove ErrorResponse.message
timeless@mozdev.org [Tue, 08 Sep 2015 14:56:29 -0400] rev 26200
hgweb: remove ErrorResponse.message BaseException.message is deprecated: https://www.python.org/dev/peps/pep-0352/#retracted-ideas
Fri, 04 Sep 2015 05:57:58 -0400 manifest: switch add() to heapq.merge (available in Py2.6+)
timeless@mozdev.org [Fri, 04 Sep 2015 05:57:58 -0400] rev 26199
manifest: switch add() to heapq.merge (available in Py2.6+)
Fri, 04 Sep 2015 05:54:35 -0400 archival: drop self.filename - deprecated in py2.6
timeless@mozdev.org [Fri, 04 Sep 2015 05:54:35 -0400] rev 26198
archival: drop self.filename - deprecated in py2.6
Sun, 30 Aug 2015 17:50:55 -0400 templater: fix get English
timeless@mozdev.org [Sun, 30 Aug 2015 17:50:55 -0400] rev 26197
templater: fix get English
Sun, 30 Aug 2015 18:54:31 -0400 help: fix makeitemsdoc English description
timeless@mozdev.org [Sun, 30 Aug 2015 18:54:31 -0400] rev 26196
help: fix makeitemsdoc English description
Tue, 08 Sep 2015 11:35:22 -0400 help: filesets show hg resolve command
timeless@mozdev.org [Tue, 08 Sep 2015 11:35:22 -0400] rev 26195
help: filesets show hg resolve command
Tue, 08 Sep 2015 11:30:01 -0400 help: filesets show hg status command
timeless@mozdev.org [Tue, 08 Sep 2015 11:30:01 -0400] rev 26194
help: filesets show hg status command
Tue, 08 Sep 2015 13:22:01 -0400 hgmanpage: fix grammar
timeless@mozdev.org [Tue, 08 Sep 2015 13:22:01 -0400] rev 26193
hgmanpage: fix grammar remove 's's from places where they don't belong insert the preposition 'in'
Tue, 08 Sep 2015 12:54:39 -0400 check-seclevel: fix file description grammar
timeless@mozdev.org [Tue, 08 Sep 2015 12:54:39 -0400] rev 26192
check-seclevel: fix file description grammar
Tue, 08 Sep 2015 11:39:52 -0700 profiling: allow logging profile to the blackbox
Durham Goode <durham@fb.com> [Tue, 08 Sep 2015 11:39:52 -0700] rev 26191
profiling: allow logging profile to the blackbox This allows specifying '--config profiling.output=blackbox' which will log the profile output to the blackbox (if enabled). This is useful for doing profiling on the server since it allows us to record the command, it's result, any exceptions, and it's profile, all in one spot. And we get log rotation for free.
Fri, 04 Sep 2015 11:30:38 -0400 bookmark: improve ambiguous documentation for rename
timeless@mozdev.org [Fri, 04 Sep 2015 11:30:38 -0400] rev 26190
bookmark: improve ambiguous documentation for rename
Sun, 06 Sep 2015 11:28:48 -0700 ui: change default path fallback mechanism (issue4796)
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 06 Sep 2015 11:28:48 -0700] rev 26189
ui: change default path fallback mechanism (issue4796) The previous paths API code always fell back to the default path. This was wrong because if a requested path doesn't exist, that should error. Only if no path was requested should we fall back to the default. As part of implementing the test case for issue 4796, it was discovered that the "repository does not exist" error message raised by localrepository.__init__ wasn't being seen because the paths API validates paths before localrepository.__init__ was being called. The exception and error message from localrepository.__init__ has been introduced to getpath(). This necessitated rewriting expandpath() both to catch the exception and to have proper default fallback. This code is more complicated than I'd like. But making all tests pass was a big chore. As more code moves to getpath(), there will likely be opportunities to improve things a bit.
Mon, 07 Sep 2015 21:58:17 +0900 templater: catch regexp error at sub() function
Yuya Nishihara <yuya@tcha.org> [Mon, 07 Sep 2015 21:58:17 +0900] rev 26188
templater: catch regexp error at sub() function This patch splits re.sub() into re.compile() and sub() so that it can distinguish which argument causes re.error.
Tue, 08 Sep 2015 23:00:44 +0900 graphmod: compute slow revset query once prior to reachableroots (issue4782)
Yuya Nishihara <yuya@tcha.org> [Tue, 08 Sep 2015 23:00:44 +0900] rev 26187
graphmod: compute slow revset query once prior to reachableroots (issue4782) Because revsets query is evaluated lazily, "list(revs)" may take long for complicated query. So we shouldn't iterate revs many times. This patch is the easiest workaround for the issue4782. We could introduce more aggressive caching, but it wouldn't be as fast as the simple baseset operation. Gregory Szorc said "this makes `hg wip` on my Firefox clone ~4x faster than 3.5.1 (~6.5s to ~1.5s). This is after a regression in @ to ~45s."
Mon, 07 Sep 2015 11:35:40 -0700 profiling: add config option for enabling profiling
Durham Goode <durham@fb.com> [Mon, 07 Sep 2015 11:35:40 -0700] rev 26186
profiling: add config option for enabling profiling Previously you could only enable profiling via the --profile option. This is awkward when trying to debug a server side operation. Let's add a config option to enable profiling. In the future, this could be extended to allow profiling a certain percentage of operations (and potentially reporting that information to an external service).
Mon, 07 Sep 2015 11:31:44 -0700 blackbox: add pid to output
Durham Goode <durham@fb.com> [Mon, 07 Sep 2015 11:31:44 -0700] rev 26185
blackbox: add pid to output This adds the process id to the line header for the blackbox output. This is useful for distinguishing processes when using the blackbox on a server and many processes are writing to the blackbox at once.
Mon, 07 Sep 2015 17:08:35 -0700 exchange: allow fallbackheads to use lazy set behavior
Durham Goode <durham@fb.com> [Mon, 07 Sep 2015 17:08:35 -0700] rev 26184
exchange: allow fallbackheads to use lazy set behavior The common ancestor set implementation was made lazy a couple years ago, but this piece of code still required processing the entire repo by putting set() around the lazy set. The code was introduced in 5653f2d166ea, a year before the lazy ancestor set was added. Dropping the set() shaves 3.5 seconds off of 'push -r' in repos with hundreds of thousands of commits.
Sat, 22 Aug 2015 16:38:51 -0700 hgweb: move templater instantiation to requestcontext
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 22 Aug 2015 16:38:51 -0700] rev 26183
hgweb: move templater instantiation to requestcontext This code needs to access a lot of config options. All our config lookups have moved to requestcontext. It makes sense to move this function there.
Wed, 02 Sep 2015 13:39:46 -0400 help/config: make defaults consistent
timeless@mozdev.org [Wed, 02 Sep 2015 13:39:46 -0400] rev 26182
help/config: make defaults consistent
Wed, 02 Sep 2015 02:05:32 -0400 help/config: reword allow_push to fix grammar
timeless@mozdev.org [Wed, 02 Sep 2015 02:05:32 -0400] rev 26181
help/config: reword allow_push to fix grammar
Wed, 02 Sep 2015 02:05:04 -0400 help/config: change local_hostname help style
timeless@mozdev.org [Wed, 02 Sep 2015 02:05:04 -0400] rev 26180
help/config: change local_hostname help style
Wed, 02 Sep 2015 02:04:45 -0400 help/config: include check values
timeless@mozdev.org [Wed, 02 Sep 2015 02:04:45 -0400] rev 26179
help/config: include check values
Wed, 02 Sep 2015 02:04:22 -0400 help/config: simplify default text
timeless@mozdev.org [Wed, 02 Sep 2015 02:04:22 -0400] rev 26178
help/config: simplify default text
Wed, 02 Sep 2015 02:03:55 -0400 help/config: add trailing periods
timeless@mozdev.org [Wed, 02 Sep 2015 02:03:55 -0400] rev 26177
help/config: add trailing periods
Wed, 02 Sep 2015 02:03:22 -0400 help/config: alias, ui.mergemarkertemplate add period for etc.
timeless@mozdev.org [Wed, 02 Sep 2015 02:03:22 -0400] rev 26176
help/config: alias, ui.mergemarkertemplate add period for etc.
Fri, 04 Sep 2015 21:12:07 +0800 tests: fix css-related test-hgweb.t breakage from 93258d53ec35
Anton Shestakov <av6@dwimlabs.net> [Fri, 04 Sep 2015 21:12:07 +0800] rev 26175
tests: fix css-related test-hgweb.t breakage from 93258d53ec35
Thu, 03 Sep 2015 00:22:17 -0400 help/scripting: fix HGENCODING indentation
timeless@mozdev.org [Thu, 03 Sep 2015 00:22:17 -0400] rev 26174
help/scripting: fix HGENCODING indentation
Fri, 28 Aug 2015 13:57:20 -0400 test-strip: fix spelling of initialization (en-US)
timeless@mozdev.org [Fri, 28 Aug 2015 13:57:20 -0400] rev 26173
test-strip: fix spelling of initialization (en-US)
(0) -10000 -3000 -1000 -120 +120 +1000 +3000 +10000 tip