Summary:
This is a resend of https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-May/097693.html,
with Yuya's comments addressed and some additional comments.
The original commit message is:
> The high-level idea is similar to metadataonlyctx.
> If filelog parents and metadata match, then raw revision data (rawtext,
> rawflags, hash) could be reused. This saves time calculating hash or going
> through flag processors.
Note in the original patch, the amend operation is not using the fast path.
But it uses the fast path today. That's because singhsrb's D636 change
(cmdutil: remove the redundant commit during amend):
```
# If the file being considered is not amongst the files
# to be amended, we should return the file context from the
# old changeset. This avoids issues when only some files in
# the working copy are being amended but there are also
# changes to other files from the old changeset.
if path not in filestoamend:
return old.filectx(path)
```
Reviewed By: DurhamG
Differential Revision: D8986780
fbshipit-source-id: 7d18957a713f90eafb786446972020f7939c3671