On Fri, Feb 25, 2022 at 10:19 AM Daniel Shahaf <d...@daniel.shahaf.name> wrote:
>
> Nathan Hartman wrote on Thu, 24 Feb 2022 23:44 +00:00:
> > On Thu, Feb 24, 2022 at 2:33 PM Mark Phippard <markp...@gmail.com> wrote:
> >>
> >> On Thu, Feb 24, 2022 at 10:51 AM Lorenz <loren...@yahoo.com> wrote:
> >>
> >> > just discovered, that merging into a RO file succeeds.
> >> > I my case the file is RO because of a needs-lock property.
> >> > So when I try to commit I can't.
> >> >
> >> > This effect ist at least annoying.
> >> > There is a reason why the file is read only.
> >>
> >> It is interesting both that it was able to do this and also that this
> >> has never come up before. I am not sure I can wrap my head around what
> >> I think should even happen here. There is no way you could be expected
> >> to obtain locks on these files before merging.
>
> Why can't we expect that?

I had not considered your proposal to just lock everything before the
merge. I agree that would be a solution. I cannot predict user
reaction because it is hard to know what kind of scale we are talking
about.

When I said we could "not expect" what I was getting at is that it
would require the user to figure out what files the merge was going to
modify BEFORE they do the merge and lock those files. That does not
seem reasonable ... again I did not consider the simpler lock
everything idea.

> >> I guess ideally merge would obtain locks but I just do not know what
> >> merge should do if it cannot obtain the lock. I guess it should
> >> behave the same way it would if the file was not present due to it
> >> being a sparse working copy.
> >
> > Hopefully there would be a visible warning if that happened!
> >
> >> Maybe merge should just refuse to run at all if it detects any
> >> svn:needs-lock properties in the WC?
> >
> > Then it would never be able to run; I think you meant: refuse to run
> > if we don't hold the lock on a file that has the svn:needs-lock
> > property. However, it would be rather irritating if the refusal to run
> > were caused by files unaffected by the merge.

I am projecting a bit here based on memory of now 10+ year old discussions.

At the beginning of merge, the process has no idea what it is going to
merge so it has no way to check for locks.

I am assuming it is difficult for the merge process at the point of
merging a specific file to trigger a lock workflow before it does it.
The merge process kind of has to do all of this before it begins and
before it even knows what it is going to do. Those assumptions could
be wrong, or someone could rewrite the whole thing etc. I was just
being realistic that this is a problem that we are probably past the
point of solving.

> Or if the user deliberately did the merge without intending to commit it.
>
> How about making this situation a conflict?  "local file not locked,
> incoming edit upon merge".  Then the file is not silently changed, but
> the user can use --accept or «svn resolve» to make the changes anyway if
> they know that's what they want.

That seems like it could be a viable option given that we have
improved our process to include these sort of things with all of the
tree conflict work we have done and the additional workflows we added
for it. This definitely seems like the best idea for someone to
pursue.

Your lock everything idea before merging would be a good workaround if
we were to just make merge start to fail if it runs into a lock rather
than what it is doing today.

Mark

Reply via email to