Hi -- I've just absorbed all of this thread that was new since the last time I read it (that's a lot! :-) ).

I agree with Julian's judgement that we should just ship the MVP version of our issue #525 solution with 'svn update' fetching pristines for locally-modified files.

While it's not ideal, it's also not a showstopper, and I don't think it's worth increasing time-to-ship for this feature over this relatively minor point.

1) It's "just" a performance issue, not a correctness issue.

2) It can be improved in the future.

3) For users who would be bitten by it, there are several easy
workarounds available: target one's updates to avoid stimulating the fetch-pristine behavior; or, copy a file locally before operating on it; or, sequence one's work so as to only have one modified file
  around at a given time.

The 525-enabled Subversion will still be a huge win, even with this small blemish.

Many thanks to Evgeny for pointing out the complexities, likewise to Julian for his very patient explanations and re-explanations. And I'd like to personally thank Mark for fighting the good fight :-). It sounds like we have consensus that this is an implementation-driven behavior not a usage-driven behavior, so if/when one day we go to fix it at least we'll already have agreement on that as a goal.

Best regards,
-Karl

On 14 Mar 2022, Julian Foad wrote:
Dear dev community, and especially Karl and Mark:

A plea to test the current design/implementation.

I wonder if we are missing some perspective.

We are worried that the current design won't be acceptable because it
has poor behaviour in a particular use case.

The use case involved running "svn update" at the root of the WC. (It didn't explicitly say that. More precisely, it implied the update target
tree contains the huge locally modified file.)

Using this new feature necessarily requires some adjustments to user
expectations and work flow.

What if we ask the user to limit their "svn update" to target the
particular files/paths that they need to update, keeping their huge
locally modified file out of its scope? Examples:

svn update readme.txt
svn update small-docs/
# BUT NOT: svn update the-whole-wc/

Then we side-step the issue. It only fetches pristines for modified files that are within the tree scope of the specified targets. (This is
how it works already, not a proposal.)

OK that's not optimal but it might be sufficient.

(Of course there are further concerns, such as what happens if the user starts an update at the WC root, then cancels it as it's taking too long: can we gracefully recover? Fine, we can look at those concerns.)

I can go ahead with further work on changing the design if required, but I am concerned that might not be the best use of resources. Also I don't know how to evaluate the balance of Evgeny's concerns about protocol level complexity of the alternative design, against the concerns about the present design. In other words pursuing that alternative seems riskier, while accepting the known down-sides of the current design is
sub-optimal but seems less risky.

Should we first test the current design and see if we can work with it,
before going full steam ahead into changing the design?

The current design/implementation (on branch
'pristines-on-demand-on-mwf') is in a working state. There are open issues that still need to be resolved, but it's complete enough to be
ready for this level of testing.

- Julian

On 14 Mar 2022, Mark Phippard wrote:
On Mon, Mar 14, 2022 at 6:48 AM Julian Foad <julianf...@apache.org> wrote:

Dear dev community, and especially Karl and Mark:

A plea to test the current design/implementation.

I wonder if we are missing some perspective.

Hi Julian,

I do not believe I can offer much in the way of testing, but I do want
to reiterate that I am not objecting to the current state of the
change. At least not in the veto sense.

My work has taken me away from SVN. I just wanted to bring some user
perspective into the conversation. I realize there may be
considerations that make it not the best option to try to solve this. I will have to leave that up to you ... and Karl if he has helped fund
this effort.

Karl did a great job explaining why the current behavior will be
unexpected to the user. I agree they may have workarounds they can use
to manage it. How a user feels about those workarounds is hard to
predict.

Good luck

Mark

On 14 Mar 2022, Julian Foad wrote:
Mark Phippard wrote:
[...] I just wanted to bring some user perspective [...]
Thanks, Mark. Understood.

I also want to clarify that this is my pragmatic side speaking. For anyone who doesn't remember me saying this before, I'll repeat that my purist side would love to see us do the alternative, optimal, design, and work through the consequent protocol issues. That seems obviously to me more "Right", but is only useful if we could afford to follow it through to completion, and we don't have a good estimate of the effort
required for that.

- Julian

- Julian

On 15 Mar 2022, Julian Foad wrote:
Just an addendum, perhaps a more positive portrayal of the brief
exploration of the alternative design approach: my assessment is that exploration was enough to show that an initial release based on the original approach has possibilities of being improved, incrementally, in
that way, as and when resources permit.

In other words I am not recommending choosing one approach and
abandoning the other, but starting with one and postponing the other as
possible future improvement work.

- Julian

On 11 Mar 2022, Julian Foad wrote:
Thank you, Evgeny. That is exactly the kind of discussion we need, and you were able to provide far more detailed insights than I was. That
should help us decide how to proceed.

As for your thoughts about the current approach for MVP, I tend to agree that your approach is likely to be useful for a lot of people's use cases. Unfortunately it has turned out that Karl has one of the use cases that doesn't match those assumptions, where it doesn't work so well.

Karl, would it make sense now for you to search and compare use cases that concern your group, and see if cases that don't work well with the current design (such as the particular case we are focusing on right now, r1898846 'notes/i525/i525-use-case-4892-minimal-update.txt') are of
majority or minority concern overall?

One thing we could do is to more formally document use cases in order
for potential users to spot which ones match their cases.

One thing we could do is release (preview) versions of both approaches and
get folks to evaluate them.

We need to decide how to spend the next effort here.

- Julian

Reply via email to