Fri, 06 Jul 2018 21:35:47 +0900 hgweb: pass ui to diffstatgen() explicitly
Yuya Nishihara <yuya@tcha.org> [Fri, 06 Jul 2018 21:35:47 +0900] rev 38585
hgweb: pass ui to diffstatgen() explicitly
Fri, 06 Jul 2018 21:31:04 +0900 synthrepo: simply use the ui passed as a function argument
Yuya Nishihara <yuya@tcha.org> [Fri, 06 Jul 2018 21:31:04 +0900] rev 38584
synthrepo: simply use the ui passed as a function argument
Fri, 06 Jul 2018 21:29:05 +0900 templatekw: obtain ui directly from the template context
Yuya Nishihara <yuya@tcha.org> [Fri, 06 Jul 2018 21:29:05 +0900] rev 38583
templatekw: obtain ui directly from the template context
Fri, 06 Jul 2018 21:28:02 +0900 context: remove unneeded alias of diffopts
Yuya Nishihara <yuya@tcha.org> [Fri, 06 Jul 2018 21:28:02 +0900] rev 38582
context: remove unneeded alias of diffopts
Tue, 12 Jun 2018 22:01:59 +0900 match: remove ctx argument from code path down to _buildmatch()
Yuya Nishihara <yuya@tcha.org> [Tue, 12 Jun 2018 22:01:59 +0900] rev 38581
match: remove ctx argument from code path down to _buildmatch() 'ctx' was there only for filesets.
Sun, 10 Jun 2018 16:08:58 +0900 match: compose 'set:' pattern as matcher
Yuya Nishihara <yuya@tcha.org> [Sun, 10 Jun 2018 16:08:58 +0900] rev 38580
match: compose 'set:' pattern as matcher Baby step towards porting fileset to matcher composition. We can't use the exactmatcher since it would provide a computed set as exact paths. That's why we use the predicatematcher with fset.__contains__. This will be cleaned up later. The test change in test-glog.t means that the "set:copied()" pattern is no longer be processed as a slow path. That's because the fset is empty. This will also change in future patches.
Sun, 10 Jun 2018 15:52:27 +0900 match: resolve 'set:' patterns first in _buildmatch()
Yuya Nishihara <yuya@tcha.org> [Sun, 10 Jun 2018 15:52:27 +0900] rev 38579
match: resolve 'set:' patterns first in _buildmatch() This just makes the next patch less complicated. The order of 'set:' and 'subinclude:' expansion doesn't matter.
Sun, 10 Jun 2018 15:47:58 +0900 match: explode if unsupported pattern passed down to _regex() builder
Yuya Nishihara <yuya@tcha.org> [Sun, 10 Jun 2018 15:47:58 +0900] rev 38578
match: explode if unsupported pattern passed down to _regex() builder
Sat, 09 Jun 2018 21:13:24 +0900 match: add basic wrapper for boolean function
Yuya Nishihara <yuya@tcha.org> [Sat, 09 Jun 2018 21:13:24 +0900] rev 38577
match: add basic wrapper for boolean function This serves as a generic wrapper for fileset predicates. In future patches, a fileset expression will be mapped to a tree of matchers for a better support of match attributes such as visitdir(). For example, $ hg debugwalk -v 'set:contrib/** and binary()' * matcher: <intersectionmatcher m1=<patternmatcher patterns='(?:contrib/.*$)'>, m2=<predicatematcher pred=binary>> ...
Sun, 10 Jun 2018 17:19:31 +0900 stringutil: move _formatsetrepr() from smartset
Yuya Nishihara <yuya@tcha.org> [Sun, 10 Jun 2018 17:19:31 +0900] rev 38576
stringutil: move _formatsetrepr() from smartset I'll add a matcher subclass wrapping a boolean function, which will use buildrepr() to provide debugging information in a similar way to smartset.filteredset.
Sun, 10 Jun 2018 17:07:29 +0900 pycompat: move rapply() from util
Yuya Nishihara <yuya@tcha.org> [Sun, 10 Jun 2018 17:07:29 +0900] rev 38575
pycompat: move rapply() from util I want to use rapply() in utils.* modules, but that would introduce a reference cycle util -> utils.* -> util. Moving rapply() to pycompat should be okay since it mostly serves as a compatibility helper.
Thu, 05 Jul 2018 09:53:00 +0530 strip: improve help text for --no-backup option
Sushil khanchi <sushilkhanchi97@gmail.com> [Thu, 05 Jul 2018 09:53:00 +0530] rev 38574
strip: improve help text for --no-backup option Help text is modified to clearly define the meaning of --no-backup option. Differential Revision: https://phab.mercurial-scm.org/D3886
Thu, 05 Jul 2018 15:07:29 -0400 test-convert: demonstrate an unstable hash issue for bzr -> hg -> hg
Matt Harbison <matt_harbison@yahoo.com> [Thu, 05 Jul 2018 15:07:29 -0400] rev 38573
test-convert: demonstrate an unstable hash issue for bzr -> hg -> hg It looks like the manifest value changing is the only difference, but I'm not sure why it's happening. I've got a similar divergence in a production repo that was also converted from bzr and has an octopus merge[1]. Unlike here, the manifest values for the destination merge commits reflect the initial merge only, instead of all four merges agreeing like this test. $ hg -R src_repo manifest -r 310 --debug | grep file # octopus fixup merge 2d8775bc2481bd28ac87038ecdf33e1dbddc80e9 644 file1 6adb9353a55bb8be76e71382efc724ec3ccf7ed5 644 file2 $ hg -R src_repo manifest -r 309 --debug | grep file # first merge 362e7cb5163153c4989daad1a834871ae849f205 644 file1 2c65d947191938c3ea616b7ceb7648ff3843261f 644 file2 $ hg -R dst_repo manifest -r 273 --debug | grep file # octopus fixup merge 362e7cb5163153c4989daad1a834871ae849f205 644 file1 2c65d947191938c3ea616b7ceb7648ff3843261f 644 file2 $ hg -R dst_repo manifest -r 272 --debug | grep file # first merge 362e7cb5163153c4989daad1a834871ae849f205 644 file1 2c65d947191938c3ea616b7ceb7648ff3843261f 644 file2 This divergence is espcially annoying because unlike changelog differences, I haven't figured out a way to fix this in code. The only way I found to work around it is to convert up to the point of divergence, `hg bundle` the bad revision in the source, apply it to the destination, add a line to the shamap, and fire off the conversion again. But I suspect that there's more to it than just the octopus merge because I also have a commit in the same repo, done in Mercurial (well after the conversion) that is exhibiting a similar issue (and it's not a merge commit). I'm almost positive that it was created with 4.4 or later. Any ideas? [1] https://www.mercurial-scm.org/pipermail/mercurial/2018-June/050924.html
Thu, 05 Jul 2018 15:07:29 -0400 convert: add a config knob for not saving the bzr revision
Matt Harbison <matt_harbison@yahoo.com> [Thu, 05 Jul 2018 15:07:29 -0400] rev 38572
convert: add a config knob for not saving the bzr revision Now that the timestamp is fixed, the log of the Mercurial repo is still unstable with --debug, because the bzr commit ID keeps changing. Both hg and git implement `convert.*.saverev`, so do the same here.
Thu, 05 Jul 2018 15:07:29 -0400 test-bzr: use a fixed commit time
Matt Harbison <matt_harbison@yahoo.com> [Thu, 05 Jul 2018 15:07:29 -0400] rev 38571
test-bzr: use a fixed commit time This will help stabilize the hashes when converting to a Mercurial repo.
Wed, 23 May 2018 15:31:44 +0200 diff: use `context.diff` to produce diff
Boris Feld <boris.feld@octobus.net> [Wed, 23 May 2018 15:31:44 +0200] rev 38570
diff: use `context.diff` to produce diff We want to make sure `context.diff` if full featured. Using it in the main diff code path is a good way to do so. The end goal is to be able to easily compute diff between in-memory context.
Sat, 23 Jun 2018 15:03:05 +0200 context: no longer accept diff options as dictionnary
Boris Feld <boris.feld@octobus.net> [Sat, 23 Jun 2018 15:03:05 +0200] rev 38569
context: no longer accept diff options as dictionnary Since we already broke the API earlier in this stack, there are no point to introducing a new deprecation warning.
Sat, 23 Jun 2018 15:00:16 +0200 obsutil: pass a diffopts object to context.diff
Boris Feld <boris.feld@octobus.net> [Sat, 23 Jun 2018 15:00:16 +0200] rev 38568
obsutil: pass a diffopts object to context.diff
Sat, 23 Jun 2018 14:46:28 +0200 synthrepo: pass a diffopts object to context.diff
Boris Feld <boris.feld@octobus.net> [Sat, 23 Jun 2018 14:46:28 +0200] rev 38567
synthrepo: pass a diffopts object to context.diff
Sat, 23 Jun 2018 14:42:58 +0200 webutil: pass a diffopts object to context.diff
Boris Feld <boris.feld@octobus.net> [Sat, 23 Jun 2018 14:42:58 +0200] rev 38566
webutil: pass a diffopts object to context.diff
Sat, 23 Jun 2018 14:37:10 +0200 revset: pass an explicit `diffopts` objet to context.diff
Boris Feld <boris.feld@octobus.net> [Sat, 23 Jun 2018 14:37:10 +0200] rev 38565
revset: pass an explicit `diffopts` objet to context.diff
Sat, 23 Jun 2018 14:30:31 +0200 template: directly instantiate diff options for diffstat
Boris Feld <boris.feld@octobus.net> [Sat, 23 Jun 2018 14:30:31 +0200] rev 38564
template: directly instantiate diff options for diffstat
Sat, 23 Jun 2018 13:26:23 +0100 tests: update test-context.py to use diffopts as diff argument
Boris Feld <boris.feld@octobus.net> [Sat, 23 Jun 2018 13:26:23 +0100] rev 38563
tests: update test-context.py to use diffopts as diff argument
Thu, 28 Jun 2018 16:11:13 +0200 diffutil: extract diff options code into a dedicated util-module
Boris Feld <boris.feld@octobus.net> [Thu, 28 Jun 2018 16:11:13 +0200] rev 38562
diffutil: extract diff options code into a dedicated util-module We want to be able to create and use diffoptions in more places. Currently the official function to instantiate diffoptions live into `mercurial.patch`. A module too high level to be easily imported in some places. So we extract the diff options related function in their own utility module.
Thu, 05 Jul 2018 01:04:32 -0400 packaging: add fedora 28
Augie Fackler <augie@google.com> [Thu, 05 Jul 2018 01:04:32 -0400] rev 38561
packaging: add fedora 28 Differential Revision: https://phab.mercurial-scm.org/D3892
Thu, 05 Jul 2018 02:11:06 -0400 packaging: add missing path segments in cp statements in fedora build
Augie Fackler <augie@google.com> [Thu, 05 Jul 2018 02:11:06 -0400] rev 38560
packaging: add missing path segments in cp statements in fedora build Differential Revision: https://phab.mercurial-scm.org/D3891
Thu, 05 Jul 2018 01:07:00 -0400 packaging: fix misplaced ( in docker-fedora rule definition
Augie Fackler <augie@google.com> [Thu, 05 Jul 2018 01:07:00 -0400] rev 38559
packaging: fix misplaced ( in docker-fedora rule definition Differential Revision: https://phab.mercurial-scm.org/D3890
Thu, 05 Jul 2018 01:04:22 -0400 packaging: make help output correct for fedora and centos targets
Augie Fackler <augie@google.com> [Thu, 05 Jul 2018 01:04:22 -0400] rev 38558
packaging: make help output correct for fedora and centos targets Differential Revision: https://phab.mercurial-scm.org/D3889
Thu, 05 Jul 2018 01:02:59 -0400 packaging: remove stray = that confuses make(1) on my Mac
Augie Fackler <augie@google.com> [Thu, 05 Jul 2018 01:02:59 -0400] rev 38557
packaging: remove stray = that confuses make(1) on my Mac Differential Revision: https://phab.mercurial-scm.org/D3888
Sun, 01 Jul 2018 14:25:44 -0700 manifest: define and implement addgroup() on manifestlog
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 01 Jul 2018 14:25:44 -0700] rev 38556
manifest: define and implement addgroup() on manifestlog Changegroup code was bypassing our manifest interface and calling a method on the private revlog attribute. This commit formalizes the interface for adding a group of revisions from deltas and changes the changegroup code to use it. This enables alternate manifest storage to work with changegroup application operations (like `hg unbundle` and `hg pull`). Differential Revision: https://phab.mercurial-scm.org/D3883
Wed, 04 Jul 2018 12:12:49 -0700 manifest: define and implement rev() on manifestlog
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 04 Jul 2018 12:12:49 -0700] rev 38555
manifest: define and implement rev() on manifestlog Various code is accessing repo.manifestlog._revlog - a private attribute. This bypasses our interface and makes it difficult to implement non-revlog manifest storage. This commit adds a rev() method to the manifestlog interface and class and teaches callers to use it. Ideally this method wouldn't exist, as very few consumers should need to resolve the revision number of a manifest. Again, the primary goal of interface work is to establish and use interfaces first and to improve them later. Differential Revision: https://phab.mercurial-scm.org/D3882
Mon, 02 Jul 2018 11:14:13 -0700 tests: don't allow reodering of glob/re lines across non-glob/re lines
Martin von Zweigbergk <martinvonz@google.com> [Mon, 02 Jul 2018 11:14:13 -0700] rev 38554
tests: don't allow reodering of glob/re lines across non-glob/re lines As shown in the test case added in the previous patch, it can be really hard to interpret diffs from the test runner if there are multiple lines that would match a given glob or regular expression. It looks like this has been the case since 1ad0ddf8cccc (run-tests: teach _processoutput to handle multiple lines of churn, 2016-03-17). It seems like the point of that was to preserve the "(glob)" annotation on lines even if they got moved. This patch tries to preserve that but only allows the lines to be moved past other glob/re lines. Differential Revision: https://phab.mercurial-scm.org/D3881
Fri, 29 Jun 2018 11:29:03 -0700 tests: add test showing puzzling test output with (glob) lines
Martin von Zweigbergk <martinvonz@google.com> [Fri, 29 Jun 2018 11:29:03 -0700] rev 38553
tests: add test showing puzzling test output with (glob) lines When using multiple (glob) lines, the test runner often moves the lines around in the output on failure. I have run into this problem many times. The added test shows one example of this. Note that it doesn't show the mismatching lines and instead shows diff hunks that appear to replace a literal by a glob, and other hunks that should clearly match. Differential Revision: https://phab.mercurial-scm.org/D3880
Tue, 03 Jul 2018 15:30:22 -0700 tests: move handling of None "el" out of linematch()
Martin von Zweigbergk <martinvonz@google.com> [Tue, 03 Jul 2018 15:30:22 -0700] rev 38552
tests: move handling of None "el" out of linematch() It just seems odd for linematch() to know what None means. Differential Revision: https://phab.mercurial-scm.org/D3879
Mon, 02 Jul 2018 00:05:54 -0700 tests: remove some redundant code in run-tests
Martin von Zweigbergk <martinvonz@google.com> [Mon, 02 Jul 2018 00:05:54 -0700] rev 38551
tests: remove some redundant code in run-tests These two lines also happen below if "r" is truthy, which it is in this case since it's equal to "retry". Differential Revision: https://phab.mercurial-scm.org/D3878
Mon, 02 Jul 2018 00:02:31 -0700 tests: don't reimplement enumerate() in run-tests
Martin von Zweigbergk <martinvonz@google.com> [Mon, 02 Jul 2018 00:02:31 -0700] rev 38550
tests: don't reimplement enumerate() in run-tests Differential Revision: https://phab.mercurial-scm.org/D3877
Thu, 05 Jul 2018 09:47:11 +0530 histedit: improve help text for --no-backup option
Sushil khanchi <sushilkhanchi97@gmail.com> [Thu, 05 Jul 2018 09:47:11 +0530] rev 38549
histedit: improve help text for --no-backup option Improved help text for --no-backup option to clearly define it's meaning. Differential Revision: https://phab.mercurial-scm.org/D3885
Fri, 22 Jun 2018 23:53:43 +0530 histedit: add --no-backup option (issue5825)
Sushil khanchi <sushilkhanchi97@gmail.com> [Fri, 22 Jun 2018 23:53:43 +0530] rev 38548
histedit: add --no-backup option (issue5825) This option provides a functionality to not store a backup while aborting histedit in between. Also added tests for the same. Differential Revision: https://phab.mercurial-scm.org/D3872
Sat, 30 Jun 2018 18:55:04 -0700 tests: use interfaceutil in simplestorerepo
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 30 Jun 2018 18:55:04 -0700] rev 38547
tests: use interfaceutil in simplestorerepo Without it, we crash at module import time. This has likely been busted since 856f381ad74b. Differential Revision: https://phab.mercurial-scm.org/D3884
Fri, 29 Jun 2018 01:35:09 +0530 rebase: improve output of --dry-run
Sushil khanchi <sushilkhanchi97@gmail.com> [Fri, 29 Jun 2018 01:35:09 +0530] rev 38546
rebase: improve output of --dry-run Improved output when in dryrun, for user to make sure that no change will be written to repository. Differential Revision: https://phab.mercurial-scm.org/D3764
Sun, 01 Jul 2018 22:18:46 +0900 status: add support for log-like template keywords and functions
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Jul 2018 22:18:46 +0900] rev 38545
status: add support for log-like template keywords and functions It's bound to ctx2 since "hg status" can be considered to show the status of the files at ctx2 given ctx1 as the base.
Sun, 01 Jul 2018 22:11:23 +0900 resolve: add support for log-like template keywords and functions
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Jul 2018 22:11:23 +0900] rev 38544
resolve: add support for log-like template keywords and functions It uses wctx as the associated revision since "hg resolve" is the command to manipulate the working directory files.
Sun, 01 Jul 2018 22:06:53 +0900 manifest: add support for log-like template keywords and functions
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Jul 2018 22:06:53 +0900] rev 38543
manifest: add support for log-like template keywords and functions "hg manifest --all" isn't supported since it has no single associated revision.
Sun, 01 Jul 2018 22:01:20 +0900 files: add support for log-like template keywords and functions
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Jul 2018 22:01:20 +0900] rev 38542
files: add support for log-like template keywords and functions Note that the ctx does not point to the revision where the file was last changed, but the revision specified by -rREV option.
Sun, 01 Jul 2018 21:55:37 +0900 files: automatically populate fields referenced from template
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Jul 2018 21:55:37 +0900] rev 38541
files: automatically populate fields referenced from template
Sun, 01 Jul 2018 22:02:53 +0900 grep: add support for log-like template keywords and functions
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Jul 2018 22:02:53 +0900] rev 38540
grep: add support for log-like template keywords and functions
Sun, 01 Jul 2018 21:47:43 +0900 cat: add support for log-like template keywords and functions
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Jul 2018 21:47:43 +0900] rev 38539
cat: add support for log-like template keywords and functions
Sun, 01 Jul 2018 22:22:07 +0900 bookmarks: add support for log-like template keywords and functions
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Jul 2018 22:22:07 +0900] rev 38538
bookmarks: add support for log-like template keywords and functions This is basically the same as 5d9b765dbe15 "tags: unblock log-like template keywords and functions."
Tue, 26 Jun 2018 16:29:55 -0700 fix: add progress bar for number of file revisions processed
Danny Hooper <hooper@google.com> [Tue, 26 Jun 2018 16:29:55 -0700] rev 38537
fix: add progress bar for number of file revisions processed This ensures responsiveness when the configured tools are slow or numerous. Differential Revision: https://phab.mercurial-scm.org/D3848
Tue, 26 Jun 2018 15:30:49 -0700 fix: use a worker pool to parallelize running tools
Danny Hooper <hooper@google.com> [Tue, 26 Jun 2018 15:30:49 -0700] rev 38536
fix: use a worker pool to parallelize running tools This is important for usability when tools are slow or numerous. Differential Revision: https://phab.mercurial-scm.org/D3846
Tue, 26 Jun 2018 15:27:29 -0700 worker: support more return types in posix worker
Danny Hooper <hooper@google.com> [Tue, 26 Jun 2018 15:27:29 -0700] rev 38535
worker: support more return types in posix worker This allows us to return things that aren't tuple(int, str) from worker functions. I wanted to use marshal instead of pickle, but it seems to read from the pipe in non-blocking mode, which means it stops before it sees the results. The windows worker already supports arbitrary return values without serialization, because it uses threads instead of subprocesses. Differential Revision: https://phab.mercurial-scm.org/D3845
Tue, 19 Jun 2018 19:18:31 +0100 debug: process --debug flag earlier
Boris Feld <boris.feld@octobus.net> [Tue, 19 Jun 2018 19:18:31 +0100] rev 38534
debug: process --debug flag earlier This allow the verbosity level to be set correctly during extension initialization.
Wed, 04 Jul 2018 14:19:13 +0200 windows: fix incorrect detection of broken pipe when writing to pager stable
Sune Foldager <cryo@cyanite.org> [Wed, 04 Jul 2018 14:19:13 +0200] rev 38533
windows: fix incorrect detection of broken pipe when writing to pager Paging e.g. hg incoming on Windows and quitting the pager before the output is consumed will print 'abort: Invalid argument'. This is because the windows error 0xE8 (ERROR_NO_DATA) is mapped to EINVAL even though it is documented as 'The pipe is being closed'. Note that this fix assumes that Windows' last error code is still valid in the exception handler. It works correctly in all my tests. A simpler fix would be to just map EINVAL to EPIPE, like was done is flush previously, but that would be less precise. This error was not observed previously, when pager was an extension.
Tue, 19 Jun 2018 19:10:31 +0100 test: stop passing --quiet in a run dedicated to debug output
Boris Feld <boris.feld@octobus.net> [Tue, 19 Jun 2018 19:10:31 +0100] rev 38532
test: stop passing --quiet in a run dedicated to debug output The goal of the run is to display some debug output. Passing --quiet in this case is strange.
Fri, 15 Jun 2018 14:07:13 -0400 acl: add bookmarks support
Sandu Turcan <idlsoft@gmail.com> [Fri, 15 Jun 2018 14:07:13 -0400] rev 38531
acl: add bookmarks support Originally submitted at https://www.mercurial-scm.org/pipermail/mercurial-devel/2016-March/080650.html as an RFC by timeless. .. feature:: The `acl` extension now has support for bookmarks as well as branches. Differential Revision: https://phab.mercurial-scm.org/D3750
Sat, 30 Jun 2018 18:34:33 -0700 repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 30 Jun 2018 18:34:33 -0700] rev 38530
repository: define manifest interfaces The long march towards declaring interfaces for repository primitives continues. This commit essentially defines interfaces based on the following types: * manifest.manifestdict -> imanifestdict * manifest.manifestlog -> imanifestlog * manifest.memmanifestctx -> imanifestrevisionwritable * manifest.manifestctx -> imanifestrevisionstored * manifest.memtreemanifestctx -> imanifestrevisionwritable * manifest.treemanifestctx -> imanifestrevisionstored * util.dirs -> idirs The interfaces are thoroughly documented. Their documentation is now better than the documentation in manifest.py in many cases. With the exception of util.dirs, classes have been annotated with their interfaces. (I didn't feel like util.dirs needed the proper interface treatment.) Tests have been added demonstrating that all classes and instances conform to their interfaces. This work was much easier than filelogs. That's because Durham did an excellent job formalizing the manifest API a while back. There are still some minor kludges with the interfaces that should probably be addressed. But the primary goal with interface declarations is getting something established. Once we have an interface, we can modify it later easily enough. Differential Revision: https://phab.mercurial-scm.org/D3869
Tue, 12 Jun 2018 11:31:20 -0400 narrowbundle2: when we handle a widen, mark the operation as unsafe
Augie Fackler <augie@google.com> [Tue, 12 Jun 2018 11:31:20 -0400] rev 38529
narrowbundle2: when we handle a widen, mark the operation as unsafe We have to manually drive the context manager here since the logic is awkwardly split between a couple of places. Differential Revision: https://phab.mercurial-scm.org/D3719
Mon, 11 Jun 2018 17:06:29 -0400 narrow: mark the critical chunks of narrowing/widening as unsafe
Augie Fackler <augie@google.com> [Mon, 11 Jun 2018 17:06:29 -0400] rev 38528
narrow: mark the critical chunks of narrowing/widening as unsafe I'm _mostly_ sure these are the only unsafe chunks here. Differential Revision: https://phab.mercurial-scm.org/D3718
Mon, 11 Jun 2018 17:03:29 -0400 repair: mark the critical section of strip() as unsafe
Augie Fackler <augie@google.com> [Mon, 11 Jun 2018 17:03:29 -0400] rev 38527
repair: mark the critical section of strip() as unsafe When our experimental nointerrupt feature is enabled, this will help prevent users from corrupting their repo during a strip. Differential Revision: https://phab.mercurial-scm.org/D3717
Wed, 27 Jun 2018 10:47:14 -0400 ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com> [Wed, 27 Jun 2018 10:47:14 -0400] rev 38526
ui: add an uninterruptable context manager that can block SIGINT The blocking of SIGINT is not done by default, but my hope is that we will one day. This was inspired by Facebook's "nointerrupt" extension, which is a bit more heavy-handed than this (whole commands are treated as unsafe to interrupt). A future patch will enable this for varying bits of Mercurial that are performing unsafe operations. It's intentional that the KeyboardInterrupt is raised as the context manager exits: during the span of the context manager interrupting Mercurial could lead to data loss, but typically those spans are fairly narrow, so we can let the unsafe block complete and then terminate hg (which will leave the repo in a consistent state, even if it's not the user's desired state). .. api:: New context manager ``ui.uninterruptable()`` to mark portions of a command as potentially unsafe places to interrupt Mercurial with Control-C or similar. Differential Revision: https://phab.mercurial-scm.org/D3716
Tue, 03 Jul 2018 12:22:37 -0400 merge with stable
Augie Fackler <augie@google.com> [Tue, 03 Jul 2018 12:22:37 -0400] rev 38525
merge with stable
Tue, 03 Jul 2018 12:10:22 -0400 Added signature for changeset 0b63a6743010 stable
Augie Fackler <raf@durin42.com> [Tue, 03 Jul 2018 12:10:22 -0400] rev 38524
Added signature for changeset 0b63a6743010
Tue, 03 Jul 2018 12:10:21 -0400 Added tag 4.6.2 for changeset 0b63a6743010 stable
Augie Fackler <raf@durin42.com> [Tue, 03 Jul 2018 12:10:21 -0400] rev 38523
Added tag 4.6.2 for changeset 0b63a6743010
Fri, 29 Jun 2018 23:13:23 +0900 revset: add partial support for ancestor(wdir())
Yuya Nishihara <yuya@tcha.org> [Fri, 29 Jun 2018 23:13:23 +0900] rev 38522
revset: add partial support for ancestor(wdir()) It's easy, so let's make it happen. I'm not certain if 'wdir() &' should be required. ancestors(wdir()) works without it, but ancestor(wdir()) doesn't as of now. That's the issue of fullreposet.__contains__() vs __and__().
Sat, 23 Jun 2018 13:19:03 +0100 context: also accept diff option directly
Boris Feld <boris.feld@octobus.net> [Sat, 23 Jun 2018 13:19:03 +0100] rev 38521
context: also accept diff option directly For now we accept both diff option and dictionary. This will let us upgrade internal users gradually before we drop the old API at the end of this series.
Wed, 23 May 2018 15:31:40 +0200 context: also take all other arguments than `patch.diff` accept
Boris Feld <boris.feld@octobus.net> [Wed, 23 May 2018 15:31:40 +0200] rev 38520
context: also take all other arguments than `patch.diff` accept This is needed to use `context.diff` as a full replacement of `patch.diff`
Tue, 22 May 2018 15:02:52 +0200 context: explicitly take diffopts in `context.diff` (API)
Boris Feld <boris.feld@octobus.net> [Tue, 22 May 2018 15:02:52 +0200] rev 38519
context: explicitly take diffopts in `context.diff` (API) To provide a proper replacement for the `patch.diff(…)` function, the `context.diff(…)` method needs to be able to take more parameters. To distinguish the diff options from the new other arguments, we upgrade the diff options to its own explicit argument.
Sun, 01 Jul 2018 01:00:39 +0530 rebase: check whether the rebasestate exists or not a bit early
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 01 Jul 2018 01:00:39 +0530] rev 38518
rebase: check whether the rebasestate exists or not a bit early Converted the else part into `if True` because that part will soon be under a except part. Differential Revision: https://phab.mercurial-scm.org/D3876
Sun, 01 Jul 2018 00:52:25 +0530 rebase: use staeobj to check whether interrupted rebase exists
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 01 Jul 2018 00:52:25 +0530] rev 38517
rebase: use staeobj to check whether interrupted rebase exists This cleans up the code a bit. Differential Revision: https://phab.mercurial-scm.org/D3875
Sun, 01 Jul 2018 00:46:59 +0530 rebase: add a stateobj variable to rebaseruntime class
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 01 Jul 2018 00:46:59 +0530] rev 38516
rebase: add a stateobj variable to rebaseruntime class The stateobj variable is an object of state.cmdstate() and will be used in upcoming patches to clean up the logic a bit and also use cbor format to write data to rebasestate class. Differential Revision: https://phab.mercurial-scm.org/D3874
Sun, 01 Jul 2018 00:31:57 +0530 rebase: refactor logic to read rebasestate in a separate function
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 01 Jul 2018 00:31:57 +0530] rev 38515
rebase: refactor logic to read rebasestate in a separate function This will help us in plugging the use of state.cmdstate() to read rebasestate. Differential Revision: https://phab.mercurial-scm.org/D3873
Fri, 22 Jun 2018 00:07:22 +0100 revlog: reuse 'descendant' implemention in 'isancestor'
Boris Feld <boris.feld@octobus.net> [Fri, 22 Jun 2018 00:07:22 +0100] rev 38514
revlog: reuse 'descendant' implemention in 'isancestor' The two functions do the same thing, but one takes nodes while the other takes revs. Using one to implement the other make sense. We should probably cleanup the API at some point to avoid having so many similar functions. However, we focus on an efficient implementation for now.
Fri, 22 Jun 2018 00:05:20 +0100 revlog: efficient implementation of 'descendant'
Boris Feld <boris.feld@octobus.net> [Fri, 22 Jun 2018 00:05:20 +0100] rev 38513
revlog: efficient implementation of 'descendant' Iterating over descendants is costly, because there are no "parent -> children" pointers. Walking the other way around is much more efficient, especially on large repositories, where descendant walks can cost seconds. And the other hand, common ancestors code follows links in the right direction and has a compiled implementation. In real life usage, this saved up to 80s during some pull operations, where descendant test happens in extension code.
Thu, 21 Jun 2018 23:56:51 +0100 revlog: refactor out the rev-oriented part of commonancestorheads
Boris Feld <boris.feld@octobus.net> [Thu, 21 Jun 2018 23:56:51 +0100] rev 38512
revlog: refactor out the rev-oriented part of commonancestorheads We plan to use this in a function taking revs as argument. Round trips to nodes seem silly.
Thu, 21 Jun 2018 23:53:43 +0100 revlog: do inclusive descendant testing (API)
Boris Feld <boris.feld@octobus.net> [Thu, 21 Jun 2018 23:53:43 +0100] rev 38511
revlog: do inclusive descendant testing (API) In many other places, a revision is considered a descendant of itself. We update the behavior of `revlog.descendant()` to match this. (for example. `revlog.isancestor` does inclusive testing). No tests break, so it seems safe to do so. This will make it easier to use a more efficient implementation in a later changeset.
Sat, 30 Jun 2018 16:06:05 -0700 manifest: make cachesize a private attribute
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 30 Jun 2018 16:06:05 -0700] rev 38510
manifest: make cachesize a private attribute AFAICT this isn't accessed outside the class. It is a private attribute and its naming should reflect that. Differential Revision: https://phab.mercurial-scm.org/D3868
Sat, 30 Jun 2018 15:51:04 -0700 repository: document that file() return value conforms to interface
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 30 Jun 2018 15:51:04 -0700] rev 38509
repository: document that file() return value conforms to interface Differential Revision: https://phab.mercurial-scm.org/D3867
Sun, 01 Jul 2018 21:40:55 +0900 cleanup: pass in overwrite flag to hg.updaterepo() as named argument
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Jul 2018 21:40:55 +0900] rev 38508
cleanup: pass in overwrite flag to hg.updaterepo() as named argument For clarity.
Sat, 30 Jun 2018 07:23:02 +0530 histedit: use self.stateobj to check whether interrupted histedit exists
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 30 Jun 2018 07:23:02 +0530] rev 38507
histedit: use self.stateobj to check whether interrupted histedit exists self.stateobj is an instance of state.cmdstate() class which has an .exists() function which is used to check whether there exists an interrupted statefile or not. Differential Revision: https://phab.mercurial-scm.org/D3865
Sat, 30 Jun 2018 07:21:21 +0530 histedit: add a stateobj variable to histeditstate class
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 30 Jun 2018 07:21:21 +0530] rev 38506
histedit: add a stateobj variable to histeditstate class The stateobj variable will be an instance of state.cmdstate() class. The stateobj variable will be used in upcoming patches to simplify the code a bit and start using cbor to write state files. Differential Revision: https://phab.mercurial-scm.org/D3864
Sat, 30 Jun 2018 07:10:49 +0530 histedit: factor out logic of processing state data in separate fn
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 30 Jun 2018 07:10:49 +0530] rev 38505
histedit: factor out logic of processing state data in separate fn The new function will serve as the point from where we always get a dictionary of data stored in the statefile and will be helpful in integrating state.cmdstate.read() to write statefile in cbor. Differential Revision: https://phab.mercurial-scm.org/D3863
Sat, 30 Jun 2018 07:05:36 +0530 histedit: use hg.updaterepo() to avoid ui.{push|pop}buffer() hack
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 30 Jun 2018 07:05:36 +0530] rev 38504
histedit: use hg.updaterepo() to avoid ui.{push|pop}buffer() hack In some parts of code, we call hg.update() and surround that with ui.pushbuffer() and ui.popbuffer() to suppress the output returned by hg.update(). We have hg.updaterepo() which does not writes to UI and can be used instead. Differential Revision: https://phab.mercurial-scm.org/D3862
Fri, 29 Jun 2018 14:43:41 -0700 scmutil: fix __enter__ in progress context manager
Danny Hooper <hooper@google.com> [Fri, 29 Jun 2018 14:43:41 -0700] rev 38503
scmutil: fix __enter__ in progress context manager Differential Revision: https://phab.mercurial-scm.org/D3861
Fri, 29 Jun 2018 14:14:35 -0700 httppeer: fix use of uninitialized variable with devel logging
Martin von Zweigbergk <martinvonz@google.com> [Fri, 29 Jun 2018 14:14:35 -0700] rev 38502
httppeer: fix use of uninitialized variable with devel logging If the request fails, "res" was uninitialized. Differential Revision: https://phab.mercurial-scm.org/D3860
Sat, 30 Jun 2018 11:33:05 +0900 rebase: convert opts dict to bytes at once
Yuya Nishihara <yuya@tcha.org> [Sat, 30 Jun 2018 11:33:05 +0900] rev 38501
rebase: convert opts dict to bytes at once
Sat, 30 Jun 2018 11:29:48 +0900 rebase: isolate command options from internal flags
Yuya Nishihara <yuya@tcha.org> [Sat, 30 Jun 2018 11:29:48 +0900] rev 38500
rebase: isolate command options from internal flags I want to get rid of per-function byteskwargs(opts).
Fri, 29 Jun 2018 01:05:08 +0530 rebase: suppress warning thrown when aborting rebase in case of dryrun
Sushil khanchi <sushilkhanchi97@gmail.com> [Fri, 29 Jun 2018 01:05:08 +0530] rev 38499
rebase: suppress warning thrown when aborting rebase in case of dryrun Before this patch dryrun output contained "rebase aborted" every time we run rebase in dryrun mode and this warning does not sound safe from a user prespective. Differential Revision: https://phab.mercurial-scm.org/D3857
Fri, 29 Jun 2018 00:47:33 +0530 rebase: no need to store backup in case of dryrun
Sushil khanchi <sushilkhanchi97@gmail.com> [Fri, 29 Jun 2018 00:47:33 +0530] rev 38498
rebase: no need to store backup in case of dryrun While aborting an unfinished rebase in case of dryrun there is no need to store backup for those rebased csets. Differential Revision: https://phab.mercurial-scm.org/D3827
Fri, 29 Jun 2018 00:22:50 +0530 rebase: split _origrebase() for conveniece in dryrun
Sushil khanchi <sushilkhanchi97@gmail.com> [Fri, 29 Jun 2018 00:22:50 +0530] rev 38497
rebase: split _origrebase() for conveniece in dryrun This patch split _origrebase() method by extracting rbsrt part from that to make it easy to implement dryrun in more elegant way than before. Differential Revision: https://phab.mercurial-scm.org/D3856
Thu, 28 Jun 2018 23:57:15 +0530 rebase: extract dryrun as a function
Sushil khanchi <sushilkhanchi97@gmail.com> [Thu, 28 Jun 2018 23:57:15 +0530] rev 38496
rebase: extract dryrun as a function To avoid more number of indented blocks and make it easier to add additional functionality in dryrun, extracted as a function. Differential Revision: https://phab.mercurial-scm.org/D3855
Thu, 28 Jun 2018 23:36:45 +0530 rebase: add lock to cover whole dryrun process
Sushil khanchi <sushilkhanchi97@gmail.com> [Thu, 28 Jun 2018 23:36:45 +0530] rev 38495
rebase: add lock to cover whole dryrun process Before this patch it is easy for another hg to interrupt the dryrun. This patch make sure that dryrun will complete without any interruption. Differential Revision: https://phab.mercurial-scm.org/D3854
Tue, 29 May 2018 00:26:20 +0200 merge: add a 'keepconflictparent' argument to graft
Boris Feld <boris.feld@octobus.net> [Tue, 29 May 2018 00:26:20 +0200] rev 38494
merge: add a 'keepconflictparent' argument to graft Before this change, `merge.graft` was always dropping the "grafted" changeset from the parent. This is impractical in case of conflict as the second parent can be useful to help with conflict resolution. We add a new boolean parameter to control this behavior. This will make using `merge.graft` directly in shelve practicable. Differential Revision: https://phab.mercurial-scm.org/D3692
Thu, 28 Jun 2018 18:07:22 -0700 unlinkpath: make empty directory removal optional (issue5901) (issue5826)
Kyle Lippincott <spectral@google.com> [Thu, 28 Jun 2018 18:07:22 -0700] rev 38493
unlinkpath: make empty directory removal optional (issue5901) (issue5826) There are known cases where performing operations such as rebase from a directory that is newly created can fail or at least lead to being in a directory handle that no longer exists. This is even reproducible by just doing something as simple as: cd foo; hg rm * The behavior is different if you use `hg addremove`, the directory is not removed until we attempt to go back to the node after committing it: cd foo; rm *; hg addremove; hg ci -m'bye foo'; hg co .^; hg co tip Differential Revision: https://phab.mercurial-scm.org/D3859
Thu, 28 Jun 2018 21:24:47 +0530 py3: convert opts keys to bytes using pycompat.byteskwargs()
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 28 Jun 2018 21:24:47 +0530] rev 38492
py3: convert opts keys to bytes using pycompat.byteskwargs() This fixes the py3 build broken due to 56b2074114b19e12abd9cd4c378d58b702232705. Differential Revision: https://phab.mercurial-scm.org/D3853
Thu, 28 Jun 2018 22:23:08 -0400 procutil: add a shim for translating shell commands to native commands
Matt Harbison <matt_harbison@yahoo.com> [Thu, 28 Jun 2018 22:23:08 -0400] rev 38491
procutil: add a shim for translating shell commands to native commands
Sat, 16 Jun 2018 23:26:40 +0900 revset: move lookup of first ancestor() candidate out of the loop
Yuya Nishihara <yuya@tcha.org> [Sat, 16 Jun 2018 23:26:40 +0900] rev 38490
revset: move lookup of first ancestor() candidate out of the loop
(0) -30000 -10000 -3000 -1000 -300 -100 -96 +96 +100 +300 +1000 +3000 +10000 tip