Tue, 22 Sep 2015 16:56:34 -0700 ui: avoid mutable default arguments
Siddharth Agarwal <sid0@fb.com> [Tue, 22 Sep 2015 16:56:34 -0700] rev 26312
ui: avoid mutable default arguments I almost introduced a bug around this code by accidentally mutating a default argument. There's no reason for these to exist. It is OK to not assign {} to environ in ui.system because util.system knows how to deal with that.
Tue, 22 Sep 2015 16:55:18 -0700 util: avoid mutable default arguments
Siddharth Agarwal <sid0@fb.com> [Tue, 22 Sep 2015 16:55:18 -0700] rev 26311
util: avoid mutable default arguments I almost introduced a bug around this code by accidentally mutating a default argument. There's no reason for these to exist.
Sun, 13 Sep 2015 18:01:01 +0900 obsstore: fast path to check if obsstore is empty
Yuya Nishihara <yuya@tcha.org> [Sun, 13 Sep 2015 18:01:01 +0900] rev 26310
obsstore: fast path to check if obsstore is empty
Sun, 13 Sep 2015 17:52:37 +0900 obsstore: delay loading markers from obsstore file
Yuya Nishihara <yuya@tcha.org> [Sun, 13 Sep 2015 17:52:37 +0900] rev 26309
obsstore: delay loading markers from obsstore file This will allow us to use cached revisions without parsing obsstore. Because _version isn't determined at __init__, the debugobsconvert command no longer works correctly. I'll fix it by a separate patch for the evolve extension.
Sun, 13 Sep 2015 17:47:18 +0900 obsstore: initialize _all markers without using _addmarkers()
Yuya Nishihara <yuya@tcha.org> [Sun, 13 Sep 2015 17:47:18 +0900] rev 26308
obsstore: initialize _all markers without using _addmarkers() The next patch will make _all variable propertycached to avoid costly parsing of obsstore. This means we can't call _addmarkers() to initialize _all. Because all cached markers depend on _all, it isn't necessary to update these caches when _all is initially loaded.
Wed, 23 Sep 2015 00:41:07 -0700 revset: avoid implicit None testing in revset
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 23 Sep 2015 00:41:07 -0700] rev 26307
revset: avoid implicit None testing in revset Implicit None testing is a very good way to get in trouble. We explicitly test for None.
Sun, 20 Sep 2015 16:53:42 -0700 revset: speed up existence checks for ordered filtered sets
Durham Goode <durham@fb.com> [Sun, 20 Sep 2015 16:53:42 -0700] rev 26306
revset: speed up existence checks for ordered filtered sets Previously, calling 'if foo:' on a ordered filtered set would start iterating in whatever the current direction was and return if a value was available. If the current direction was ascending, but the set had a fastdesc available, this meant we did a lot more work than necessary. If this was applied without my previous max/min fixes, it would improve max() performance (this was my first attempt at fixing the issue). Since those previous fixes went in though, this doesn't have a visible benefit in the benchmarks, but it does seem clearly better than it was before so I think it should still go in.
Sun, 20 Sep 2015 19:27:53 -0700 revset: remove existence check from min() and max()
Durham Goode <durham@fb.com> [Sun, 20 Sep 2015 19:27:53 -0700] rev 26305
revset: remove existence check from min() and max() min() and max() would first do an existence check. Unfortunately existence checks can be slow in certain situations (like if the smartset is a list, and quickly iterable in both ascending and descending directions, then doing an existence check will start from the bottom, even if you want to check the max()). The fix is to not do the check, and just handle the error if it happens. In a large repo, this speeds up: hg log -r 'max(parents(. + .^) - (. + .^) & ::master)' from 3.5s to 0.85s. That revset is contrived and just for testing. In our real case we used 'bundle()' in place of '. + .^' Interesting perf numbers for the revset benchmarks: max(draft() and ::tip) => 0.027s to 0.0005s max(author(lmoscovicz)) => 2.48s to 0.57s min doesn't show any perf changes, but changing it as well will prevent a perf regression in my next patch. Result from revset benchmark revset #0: draft() and ::tip min max 0) 0.001971 0.001991 1) 0.001965 0.000428 21% revset #1: ::tip and draft() min max 0) 0.002017 0.001912 1) 0.001896 94% 0.000421 22% revset #2: author(lmoscovicz) min max 0) 1.049033 1.358913 1) 1.042508 0.319824 23% revset #3: author(lmoscovicz) or author(mpm) min max 0) 1.042512 1.367432 1) 1.019750 0.327750 23% revset #4: author(mpm) or author(lmoscovicz) min max 0) 1.050135 0.324924 1) 1.070698 0.319913 revset #5: roots((tip~100::) - (tip~100::tip)) min max 0) 0.000671 0.001018 1) 0.000605 90% 0.000946 92% revset #6: roots((0::) - (0::tip)) min max 0) 0.149714 0.152369 1) 0.098677 65% 0.100374 65% revset #7: (20000::) - (20000) min max 0) 0.051019 0.042747 1) 0.035586 69% 0.016267 38%
Fri, 18 Sep 2015 17:23:10 -0700 update: move default destination into a revset
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 18 Sep 2015 17:23:10 -0700] rev 26304
update: move default destination into a revset This is another step toward having "default" destination more clear and unified. Not all the logic is there because some bookmark related computation happened elsewhere. It will be moved later. The function is private because as for the other ones, cleanup is needed before we can proceed.
Thu, 17 Sep 2015 14:03:15 -0700 merge: move default destination computation in a revset
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Sep 2015 14:03:15 -0700] rev 26303
merge: move default destination computation in a revset This is another step toward having "default" destination more clear and unified.
Thu, 17 Sep 2015 12:44:52 -0700 mergecmd: simplify conditional
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Sep 2015 12:44:52 -0700] rev 26302
mergecmd: simplify conditional The previous if tested the same thing with 'if repo._activebookmark'. We make the if/else logic clearer before a bigger refactoring.
Thu, 17 Sep 2015 10:59:52 -0700 rebase: move destination computation in a revset
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Sep 2015 10:59:52 -0700] rev 26301
rebase: move destination computation in a revset This is the first step toward making the "default destination" logic more clear and unified. The revset is private because I'm happy to delay the bikeshedding until after the clean up happened.
Tue, 22 Sep 2015 14:47:18 -0400 debian: include bash completions in mercurial-common
Augie Fackler <augie@google.com> [Tue, 22 Sep 2015 14:47:18 -0400] rev 26300
debian: include bash completions in mercurial-common
Tue, 22 Sep 2015 14:32:17 -0400 debian: install hgk as part of mercurial-common (issue4829)
Augie Fackler <augie@google.com> [Tue, 22 Sep 2015 14:32:17 -0400] rev 26299
debian: install hgk as part of mercurial-common (issue4829) Leaving the hgk binary in /usr/bin causes some lintian warnings, and downstream packages poke it in /usr/share/mercurial, so we'll just stash it in there. Rather than patch hgk.py as part of the Mercurial install, just drop a config file in /etc/mercurial/hgrc.d that points to the installed hgk.
Tue, 22 Sep 2015 14:14:05 -0400 debian: install config files as part of mercurial-common
Augie Fackler <augie@google.com> [Tue, 22 Sep 2015 14:14:05 -0400] rev 26298
debian: install config files as part of mercurial-common Future patches will start putting config files in /etc/mercurial/, this just installs them.
Tue, 22 Sep 2015 14:31:17 -0400 debian: configuration so that cacerts is properly loaded
Augie Fackler <augie@google.com> [Tue, 22 Sep 2015 14:31:17 -0400] rev 26297
debian: configuration so that cacerts is properly loaded This will be included in the mercurial-common package in a followup patch.
Tue, 22 Sep 2015 14:13:07 -0400 debian: install hg-ssh to /usr/bin just like downstream
Augie Fackler <augie@google.com> [Tue, 22 Sep 2015 14:13:07 -0400] rev 26296
debian: install hg-ssh to /usr/bin just like downstream
Sun, 20 Sep 2015 20:13:27 +0900 highlight: remove temporary hack to overwrite repo.getcwd
Yuya Nishihara <yuya@tcha.org> [Sun, 20 Sep 2015 20:13:27 +0900] rev 26295
highlight: remove temporary hack to overwrite repo.getcwd Now hgweb does it globally.
Sun, 20 Sep 2015 20:11:31 +0900 hgweb: overwrite cwd to resolve file patterns relative to repo (issue4568)
Yuya Nishihara <yuya@tcha.org> [Sun, 20 Sep 2015 20:11:31 +0900] rev 26294
hgweb: overwrite cwd to resolve file patterns relative to repo (issue4568) It's useless to handle file patterns as relative to the cwd of the server process. The only sensible way in hgweb is to resolve paths relative to the repository root. It seems dirstate.getcwd() isn't used to get a real file path, so this patch won't cause problem.
Sun, 20 Sep 2015 20:08:22 +0900 dirstate: state that getcwd() shouldn't be used to get real file path
Yuya Nishihara <yuya@tcha.org> [Sun, 20 Sep 2015 20:08:22 +0900] rev 26293
dirstate: state that getcwd() shouldn't be used to get real file path hgweb will force it to be '' so that file patterns can be resolved relative to the repository root. I want to clarify that is correct.
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.
(0) -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip