Gregory Szorc <gregory.szorc@gmail.com> [Tue, 27 May 2014 19:10:22 -0700] rev 21613
run-tests: exit with non-0 exit code when tests fail or warn
As part of the run-tests.py refactor, run-tests.py accidentally started
exiting with 0 for most test runs. This patch restores the expected
behavior.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 23 May 2014 20:23:54 -0700] rev 21612
bundle2: expose mandatory params in a mandatorykeys attribute
We expose all keys that MUST be processed in ``part.mandatorykeys``. This makes
it much easier to access the information. Enforcement of the mandatory
parameters is coming in later changesets.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 26 May 2014 18:45:43 -0700] rev 21611
bundle2: use the new ``part.params`` dictionary
We use the new ``part.params`` dictionary to access the value of parameters instead of
creating one from the part's attributes.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 23 May 2014 17:26:57 -0700] rev 21610
bundle2: introduce a ``params`` dictionary on unbundled parts
This exposes all parameters the part received into a ``part.params`` dictionary.
This should be much easier to use.
This dictionary itself does not expose the mandatory or advisory aspect of
parameters, but no current users of bundle2 actually enforce any of this logic.
Coming changesets will improve this aspect.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 23 May 2014 17:17:39 -0700] rev 21609
bundle2: make sure unbundled part param are read-only
My old uncle Robert once trusted an API user. We never saw him again.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 28 May 2014 10:04:02 -0700] rev 21608
bundle2: introduce an ``_initparams`` method
The handling of parameters will become much more sophisticated in the coming
changesets. So we extract the logic in a function to not pollute the generic
logic.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 22 May 2014 12:52:09 -0700] rev 21607
bundle2: forbid duplicate parameter keys
No rules were specified about parameter key uniqueness. We document that keys
should be unique and document it. This opens the way to a more friendly (read
dictionary like) way to access value of parameters in the code.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 23 May 2014 16:46:30 -0700] rev 21606
bundle2: update part creators to ``addparam`` when relevant
In some cases, the use of ``addparam`` makes code much clearer.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 22 May 2014 11:38:40 -0700] rev 21605
bundle2: introduce a ``addparam`` method on part
We make it easier to add new parameters after the part creation. As for the
``data`` attribute we make sure the part generation has not begun yet.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 22 May 2014 11:21:26 -0700] rev 21604
bundle2: the ability to set ``data`` attribute of the part is now official
We make it safe to set the data attribute after part creation. It is an allowed
operation as long as the part has not started to be generated.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 24 May 2014 16:08:05 -0700] rev 21603
bundle2: introduce a ReadOnlyPartError exception
As we will introduce functions to alter already created parts, we need a proper
exception to raise when code tries to alter a part that cannot be altered anymore.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 23 May 2014 16:20:30 -0700] rev 21602
bundle2: warn about error during initialization in ``newpart`` docstring
As we are moving toward being able to alter a part after its creation, we need
to make the implication of the part being already part of the bundle2 clear.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 22 May 2014 11:14:02 -0700] rev 21601
bundle2: track life cycle of parts
We introduce a ``_generated`` attribute on parts. Coming changesets will
make it easier to update a part's contents after its creation. We need a way to track
if the part is still open to modification or if it is currently being generated
and should not be touched anymore.
As a bonus, we can now detect and crash if someone manages to write bogus code
to get a part generated twice.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 23 May 2014 15:59:19 -0700] rev 21600
bundle2: update all ``addpart`` callers to ``newpart``
The new method is what we want in all current cases.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 23 May 2014 15:54:18 -0700] rev 21599
bundle2: have ``newpart`` automatically add the part to the bundle
The created part is automatically added to the bundle as this is most certainly
the intent of the user code.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 23 May 2014 15:45:46 -0700] rev 21598
bundle2: add a ``newpart`` method to ``bundle20``
Creating new parts is the most common operation people do when exposed to a
bundler. We create a dedicated method on the bundler object for it. This will
simplify the code and also avoid having to import the ``mercurial.bundle2``
module in multiple places.
One part creators have been updated for testing purpose.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 22 May 2014 10:48:37 -0700] rev 21597
bundle2: small doc update on the bundler
The `bundle20` class contains methods to help define the content and methods
to generate the actual stream. We add small doc headers to help distinguish
between the two.
Sean Farley <sean.michael.farley@gmail.com> [Fri, 25 Apr 2014 15:44:55 -0500] rev 21596
localrepo: replace status method with a shim
The path of the righteous man is beset on all sides by the inequities of the
selfish and the tyranny of evil men. Blessed is he, who in the name of charity
and good will, shepherds the weak through the valley of darkness, for he is
truly Mercurial's keeper and the finder of robust methods. And I will strike
down upon thee with great vengeance and furious anger those who would attempt
to poison and destroy Mercurial's codebase. And you will know my name is the
Lord when I lay my vengeance upon thee.
Sean Farley <sean.michael.farley@gmail.com> [Tue, 27 May 2014 15:55:35 -0700] rev 21595
workingctx: have status method call super instead of customized code.
The old code is unneeded now that basectx has the ability to calculate the
status between two context objects.
Now, we use the objected oriented pattern called 'super'.
Sean Farley <sean.michael.farley@gmail.com> [Thu, 24 Apr 2014 18:07:42 -0500] rev 21594
basectx: copy localrepo.status method
Now that all the pieces are in place, we copy the status method from
localrepo. In the next few patches, we will remove the old implementation.
Sean Farley <sean.michael.farley@gmail.com> [Thu, 24 Apr 2014 17:42:53 -0500] rev 21593
committablectx: cache _status in _poststatus
A future patch will remove the old workingctx.status which caches the status of
the working directory, therefore we now cache this status in the poststatus
hook of committablectx.
Sean Farley <sean.michael.farley@gmail.com> [Thu, 24 Apr 2014 17:31:20 -0500] rev 21592
committablectx: simplify caching the status
Previously, workingctx had custom variables for the unknown, ignored, and clean
list of files of status. These then got moved to committablectx and, after the
refactoring of localrepo.status, are no longer needed. We, therefore, simplify
the whole mess.
As a bonus, we are able to remove the need for having 'assert'.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 23 Apr 2014 16:08:20 -0500] rev 21591
localrepo: remove cache code now handled by _prestatus
This patch removes the last of the 'working' variable that was sprinkled
throughout localrepo.status which paves the way for future patches to use the
object oriented design of contexts to handle calculating the status.
Sean Farley <sean.michael.farley@gmail.com> [Wed, 23 Apr 2014 16:06:42 -0500] rev 21590
workingctx: add note about super._prestatus calling manifest
Sean Farley <sean.michael.farley@gmail.com> [Wed, 23 Apr 2014 16:06:23 -0500] rev 21589
basectx: preserve loading the cached manifest in _prestatus
This is just a copy from localrepo.status and is a small step to removing that
method entirely. The prestatus hook is only called for changectx's, thereby
ensuring that the same behavior is guaranteed.
Sean Farley <sean.michael.farley@gmail.com> [Fri, 20 Sep 2013 21:59:34 -0500] rev 21588
localrepo: use new subrev method of context.py
With the machinery in place, we use context.subrev instead of testing for a
workingctx directly. This allows more flexibility for later patches that will
add memctx to the mix.
Sean Farley <sean.michael.farley@gmail.com> [Fri, 20 Sep 2013 22:07:58 -0500] rev 21587
committablectx: add subrev method to return None
This allows a future patch to use object oriented style to remove an if
statement in the status method.
Sean Farley <sean.michael.farley@gmail.com> [Fri, 20 Sep 2013 21:55:42 -0500] rev 21586
basectx: add subrev method to return the rev of a subrepo given a subpath
This will be used in an upcoming patch to simplify the status method by
eliminating an if block.
Matt Mackall <mpm@selenic.com> [Tue, 27 May 2014 17:41:20 -0700] rev 21585
merge with stable
Durham Goode <durham@fb.com> [Wed, 07 May 2014 17:24:19 -0700] rev 21584
bundle2: fix bundle2 pulling all revs on empty pulls
When bundle2 was enabled, if hg pull had no commits to pull, it would print
'no changes found' and then download the entire repository from the server. This
was caused by heads and common being set to None, which gets treated as
heads=cl.heads() and common=[nullid], which means download the entire repo.
Pulling bundles without a changegroup is a valid use case (like if we're just
updating bookmarks), so this modifes the bundle code to allow not adding
changegroups.
This is backport of
ab5040cd5749.