On Mon, Jun 13, 2016 at 12:50 PM, Stefan Sperling <s...@elego.de> wrote:
> On Mon, Jun 13, 2016 at 12:05:27AM +0200, Johan Corveleyn wrote:
>> To be honest, being able to use the python test framework would be a
>> lot more productive for me. Maybe I can look into how to make it
>> handle interactive prompting? Unless there's a reason why this would
>> be notoriously difficult to implement?
>
> One reason which makes this difficult is that 'svn status' and 'svn info'
> do not show the new conflict descriptions. They still show the same data
> as they did in 1.9. This allows me to avoid updating test expectations
> for a ton of existing python tests.

Ah okay. I suppose 'svn status' and 'svn info' will show the new
conflict descriptions eventually, but just not right now, and that
this might be a moving target (the exact wording etc.) for a while.
Okay, that may make it difficult to program tests against.

> So the python tests would have to run 'svn resolve' and parse the description
> of the conflict from English sentences. This could be done, but it's not
> going to be easy to maintain. I expect us to keep tweaking and refining
> conflict descriptions over time.
>
> Whereas the public C API is already "frozen" so it's possible to write
> a test once and have it working "forever". The hard part is all about
> getting the working copy into a conflicted state.
> The steps beyond that is almost identical in each test:
>   - resolve the conflict (same API call everywhere expect for the option ID)
>   - make sure the working copy has the expected status
>
> So I would guess that while the C tests are a bit more work to write
> they will pay off much better during long term maintenance.

Okay.

> Caveat: The interactive conflict menu is not automatically tested.
> But it never has been. And while some small mistakes did slip into
> released menu code in the past there hasn't been a serious problem.
>
>> Does this mean that none of your new resolution options can / will be
>> applied automatically (hard-coded or optionally by some configuration
>> or "conflict resolution policy" thing)? Like incoming move upon an
>> edit?
>
> The API allows the client to select an option so the decision is entirely
> up to the client. Different clients could do different things here.

Ack.

>> I'd like this to become available someday, but maybe it can be out of
>> scope for 1.10, something for later on ...
>
> I'd like to see how interactive resolution works out. I don't want to
> cut the user out of the loop, especially in situations where we use
> heuristics as we do with incoming moves. Perhaps later, once certain
> options have "proven" themselves, and/or if many people ask for it,
> we could execute certain options by default. But I believe the default
> should be interactive prompting, at least for now.
>
> For 1.10 we could try to add a configuration option somewhere in
> ~/.subversion which allows users to pre-select options for some conflicts.
> It's not trivial though, because the configuration directives would need
> to match a particular conflict and I'm not sure how exactly that could be
> expressed in the 'ini'-style syntax of our existing config files.
> It also pushes a configuration burden on our users. Instead of answering
> questions they'll be editing the config.
>
> Or we could add a single toggle for 1.10 that enables 'smart' resolution which
> would pick certain options automatically where we believe it to be 
> appropriate.
> This could either be some kind of 'svn resolve --be-smarter-than-me' command
> line option, a configuration file option, or both.
> This would be pretty easy to implement, but we'd have to make good guesses
> as to what is a 'smart' thing to do in a given situation.
> And we'll have to consider what could happen when heuristics get it wrong.

Okay, sounds like a good approach. I don't have anything to suggest
for this right now.

-- 
Johan

Reply via email to