Thinking about next steps. It seems worth investigating how feasible is making at least "update" hydrate pristines at point-of-use (optimally/minimally).
"Restore" is an aberration -------------------------- The first thought I had after sending that long post is that the "restore" functionality of update is, to my mind, a historical aberration. It's not consistent with anything: it's an intentional revert of one of the user's local modifications, and we explicitly avoid doing anything like that except in this one case. I don't know its history except I believe I learnt it was copied from CVS. It would not surprise me if in fact it was originally introduced to work around some flaw rather as an intentional user feature. (Anyone know... Karl?) So, it would not be totally unreasonable to declare that we intentionally omit that functionality when in pristines-on-demand mode, at least for the first cut. There's one simplification. "Merge" ------- First, an addendum to what I wrote under "Deltas: working file is *unmodified*": I described this step leaving the new pristine in the pristine store. But we don't want to leave it in the pristine store afterwards, because by definition this is a case where the file is unmodified. Options, with their pros and cons, are as I described under the "restore" case: either to avoid the store at that point or to let it be stored for a moment and have the clean-up remove it toward the end of the update operation. Now, is there any shortcut we can make on the 3-way merge aspect of update? The use case described in [1] is now (r1898846) committed on the branch as 'notes/i525/i525-use-case-4892-minimal-update.txt'. In that use case, the update brings in changes to small files that are locally modified; but it does not bring in any changes to the huge files. We want to avoid fetching the pristine of the (huge) locally modified files which receive no update; while the update is still expected to merge changes into the (small) locally modified files. (I am saying "huge" and "small" to help us visualise the case; in our current short term plans we don't expect the update operation to change its behaviour depending on file size.) Before I speculate and write more on this, I will take a deeper swim in the source code and see what more I can learn or hack together. - Julian [1] https://lists.apache.org/thread/t7y09576tz5xcqhwzqys3t0vfbdpg861 on dev@ from Julian Foad at 2022-03-04T20:52:38Z.