Sat, 03 Jun 2017 16:33:28 -0400 merge with stable
Augie Fackler <augie@google.com> [Sat, 03 Jun 2017 16:33:28 -0400] rev 32652
merge with stable
Fri, 02 Jun 2017 22:27:52 -0700 status: don't crash if a lookup file disappears stable 4.2.1
Siddharth Agarwal <sid0@fb.com> [Fri, 02 Jun 2017 22:27:52 -0700] rev 32651
status: don't crash if a lookup file disappears This can happen if another process (even another hg process!) comes along and removes the file at that time. This partly resolves issue5584, but not completely -- a bogus dirstate update can still happen. However, the full fix is too involved for stable.
Thu, 01 Jun 2017 08:31:21 -0700 match: simplify nevermatcher
Martin von Zweigbergk <martinvonz@google.com> [Thu, 01 Jun 2017 08:31:21 -0700] rev 32650
match: simplify nevermatcher Most of it does the same as its superclass, so it can simply be removed. It also seems to make more sense for it to use relative paths, as we do for everything except alwaysmatcher, although nevermatcher.uipath() will probably never get called anyway, so it won't matter.
Sat, 03 Jun 2017 00:25:24 +0900 annotate: restructure formatter output to be nested list (BC)
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Jun 2017 00:25:24 +0900] rev 32649
annotate: restructure formatter output to be nested list (BC) Annotate data should be in [(file, [line...])...] form, but there was no API to represent such data structure when I ported it to formatter. Now we have fm.nested() and the -T option is still experimental, so we can fix the data format.
Sat, 03 Jun 2017 00:05:12 +0900 annotate: rename formatter variable
Yuya Nishihara <yuya@tcha.org> [Sat, 03 Jun 2017 00:05:12 +0900] rev 32648
annotate: rename formatter variable So we can add a nested 'fm' of narrow scope.
Sun, 07 May 2017 23:29:03 -0400 setup: prevent setuptools from laying an egg
Matt Harbison <matt_harbison@yahoo.com> [Sun, 07 May 2017 23:29:03 -0400] rev 32647
setup: prevent setuptools from laying an egg Previously, test-hghave.t was failing on Windows (and on Linux if $FORCE_SETUPTOOLS was set) with the following: --- c:/Users/Matt/Projects/hg/tests/test-hghave.t +++ c:/Users/Matt/Projects/hg/tests/test-hghave.t.err @@ -19,7 +19,11 @@ > foo > EOF $ run-tests.py $HGTEST_RUN_TESTS_PURE test-hghaveaddon.t + warning: Testing with unexpected mercurial lib: c:\Users\Matt\Projects\hg\mercurial + (expected ...\hgtests.mu9rou\install\lib\python\mercurial) . + warning: Tested with unexpected mercurial lib: c:\Users\Matt\Projects\hg\mercurial + (expected ...\hgtests.mu9rou\install\lib\python\mercurial) Augie relayed concerns[1] about the first attempt at this, which also excluded 'install_egg_info'. All that needs to be excluded to avoid the egg and make the test work is to filter out 'bdist_egg'. (Actually, the body of this class could simply be 'pass', and 'bdist_egg' still isn't run. But that seems to magical.) Also note that prior to this (and still now), `make clean` doesn't delete the 'mercurial.egg-info' that is generated by `make install`. [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-May/097668.html # no-check-commit
Fri, 02 Jun 2017 10:32:39 -0700 bitmanipulation: add missing include of string.h
Martin von Zweigbergk <martinvonz@google.com> [Fri, 02 Jun 2017 10:32:39 -0700] rev 32646
bitmanipulation: add missing include of string.h That's where memcpy() is declared.
Thu, 01 Jun 2017 02:41:19 +0530 py3: add test to show `hg update` and `hg identify` works on Python 3
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 01 Jun 2017 02:41:19 +0530] rev 32645
py3: add test to show `hg update` and `hg identify` works on Python 3
Fri, 02 Jun 2017 10:14:00 +0530 py3: add a test to show `hg diff` works on Python 3
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Jun 2017 10:14:00 +0530] rev 32644
py3: add a test to show `hg diff` works on Python 3
Thu, 01 Jun 2017 02:25:18 +0530 py3: implement __bytes__ for committablectx
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 01 Jun 2017 02:25:18 +0530] rev 32643
py3: implement __bytes__ for committablectx Before this method, calling bytes on workingctx or memctx calls basectx.__bytes__ since the magic method was not defined for this class. When it calls the method from basectx class, it returns TypeError because None is passed into it. After this commit `hg update -C` works on Python 3 if eol is not enabled.
Fri, 02 Jun 2017 10:35:21 +0530 py3: convert exception to bytes to pass into ui.warn()
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Jun 2017 10:35:21 +0530] rev 32642
py3: convert exception to bytes to pass into ui.warn() Here encoding.strtolocal() is used because exc maybe an IOError which could contain a valid non-ascii unicode.
Thu, 01 Jun 2017 02:14:26 +0530 py3: convert bool variables to bytes before passing into ui.debug()
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 01 Jun 2017 02:14:26 +0530] rev 32641
py3: convert bool variables to bytes before passing into ui.debug() We can't pass unicodes to ui.debug() and hence we need to convert things to bytes before passing them.
Thu, 01 Jun 2017 01:14:02 +0530 py3: use dict.update() instead of constructing lists and adding them
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 01 Jun 2017 01:14:02 +0530] rev 32640
py3: use dict.update() instead of constructing lists and adding them dict.items() returned a list on Python 2 and whereas on Python 3 it returns a view object. So we required a work around. Using dict.update() is better then constructing lists as it should save us on gc churns.
Fri, 03 Feb 2017 15:02:27 +0100 patchbomb: add -B option to select a bookmark
David Demelier <demelier.david@gmail.com> [Fri, 03 Feb 2017 15:02:27 +0100] rev 32639
patchbomb: add -B option to select a bookmark Add the -B/--bookmark option to select a bookmark whose changesets and its ancestors will be selected unless a new bookmark/head is found. This is inspired by hg strip -B option.
Sat, 27 May 2017 22:27:56 +0200 test: add the mirror push race case for non-contiguous branch head
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 27 May 2017 22:27:56 +0200] rev 32638
test: add the mirror push race case for non-contiguous branch head We check case where the raced push update that a head through another named branch while the racing push update that same head.
Sat, 27 May 2017 22:27:41 +0200 test: add a push race case where non-contiguous branch head are created
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 27 May 2017 22:27:41 +0200] rev 32637
test: add a push race case where non-contiguous branch head are created We check case where the raced push an update to branch default head while the racing push update that same head but through another named branch.
Sat, 27 May 2017 22:27:09 +0200 test: add a push race case where the raced push touch multiple heads
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 27 May 2017 22:27:09 +0200] rev 32636
test: add a push race case where the raced push touch multiple heads We check case where the raced push update all heads while the racing push update one of them.
Sat, 27 May 2017 22:26:51 +0200 test: add a push race case where racing push touches multiple heads
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 27 May 2017 22:26:51 +0200] rev 32635
test: add a push race case where racing push touches multiple heads We check case where the raced push updates a head while the racing push update all of them.
Sat, 27 May 2017 22:26:35 +0200 test: add a push race case where racing push create a new named branch
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 27 May 2017 22:26:35 +0200] rev 32634
test: add a push race case where racing push create a new named branch This is the mirror case from the previos one. We check case where the raced push update a head while the racing push create a new named branch as a children of that updated head.
Sat, 27 May 2017 22:26:16 +0200 test: add a push race case where raced push created a new named branch
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 27 May 2017 22:26:16 +0200] rev 32633
test: add a push race case where raced push created a new named branch We check case where the raced push create a new branch on the same head updated by the racing push.
Sat, 27 May 2017 22:25:40 +0200 test: add a push race case where the racing client create a new head
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 27 May 2017 22:25:40 +0200] rev 32632
test: add a push race case where the racing client create a new head We check case where the raced client push updates an existing head while the racing client push creates a new one.
Sat, 27 May 2017 22:25:20 +0200 test: add a push race case where each client replaces a different head
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 27 May 2017 22:25:20 +0200] rev 32631
test: add a push race case where each client replaces a different head We check case where the raced push replace one head while the racing push replaces another unrelated one. That second test also make sure we synchronise all repositories to the same state between tests. That will help us when allowing some sort of concurrent pushes.
Sat, 27 May 2017 22:24:58 +0200 test: add a file dedicated to push race between clients
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 27 May 2017 22:24:58 +0200] rev 32630
test: add a file dedicated to push race between clients There are very few tests around the detection of push race. This file will be dedicated to covering these cases more through fully. We start with a simple case. More complex cases get added in later changesets. My end goal here is to provide a way for server to accept concurrent push as long as they are not touching the same heads. However, I want to buff the test coverage of that code before touching anything.
Sat, 20 May 2017 16:19:59 +0200 strip: strip obsmarkers exclusive to the stripped changeset
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 20 May 2017 16:19:59 +0200] rev 32629
strip: strip obsmarkers exclusive to the stripped changeset This is it, `hg strip --rev X` will now also remove obsolescence markers exclusive to X. Since a previous changeset, the obsmarkers has been backed up in the strip backup bundle, so it is possible to restore them. Note: stripping obsmarkers means the precursors of the stripped changeset might no longer be obsolete after the strip. Stripping changeset without obsmarkers can be useful when building test case. So It is possible to disable the stripping of obsmarkers using the 'devel.strip-obsmarkers' config option. Test change have been carefully validated.
Thu, 01 Jun 2017 12:08:49 +0200 strip: do not include obsolescence markers for the temporary bundle
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 01 Jun 2017 12:08:49 +0200] rev 32628
strip: do not include obsolescence markers for the temporary bundle When stripping, we need to put all non-stripped revisions "above" the stripped ones in a "temporary-bundle" while we strip the targets revision. Then we reapply that bundle to restore these non-stripped revisions (with a new revision numbers). We skip the inclusion of obsolescence markers in that bundle. This is safe since all obsmarkers we plan to strip will be backed-up in the strip backup bundle. Including the markers would create issue in some case were we try to strip a prune markers that is "relevant" to a revision in the "temporary-bundle". (note: we do not strip obsmarkers yet)
Thu, 01 Jun 2017 08:44:01 +0200 exclusive-markers: update the dedicated test with list of exclusive markers
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 01 Jun 2017 08:44:01 +0200] rev 32627
exclusive-markers: update the dedicated test with list of exclusive markers We now display data about the "exclusive markers" in the test dedicated to relevant and exclusive markers computation and usage. Each output have been carefully validated
Sat, 20 May 2017 15:02:30 +0200 obsolete: add a function to compute "exclusive-markers" for a set of nodes
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 20 May 2017 15:02:30 +0200] rev 32626
obsolete: add a function to compute "exclusive-markers" for a set of nodes This set will be used to select the obsmarkers to be stripped alongside the stripped changesets. See the function docstring for details. More advanced testing is introduced in the next changesets to keep this one simpler. That extra testing provides more example.
Thu, 01 Jun 2017 08:32:24 +0200 test-obsolete-bundle-strip: check all changesets in the isolated prune case
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 01 Jun 2017 08:32:24 +0200] rev 32625
test-obsolete-bundle-strip: check all changesets in the isolated prune case We also want to check the result of the various computations when both changesets are selected (the pruned changesets and its parents).
Fri, 26 May 2017 03:52:11 +0200 test-obsolete-bundle-strip: add testing of markers backup during strip
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 26 May 2017 03:52:11 +0200] rev 32624
test-obsolete-bundle-strip: add testing of markers backup during strip When applicable, we strip the revision tested in the test and we check that the backup bundle contains the appropriate markers.
Sat, 20 May 2017 15:06:10 +0200 strip: also backup obsmarkers
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 20 May 2017 15:06:10 +0200] rev 32623
strip: also backup obsmarkers We are about to give 'strip' the ability to remove obsmarkers. Before we start removing data we must make sure it is preserved somewhere. So the backup bundle created by 'strip' now contains obsmarkers.
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip