[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Mergeinfo overwritten from successive merges

From: Philip Martin <philip_at_codematters.co.uk>
Date: Fri, 14 Mar 2014 12:02:01 +0000

Philip Martin <philip.martin_at_wandisco.com> writes:

> Philip Martin <philip.martin_at_wandisco.com> writes:
>> Bert Huijben <bert_at_qqmail.nl> writes:
>>> Can you see if this is related to httpv1 vs httpv2.
>>> I'm guessing that in v1 the checkout request would have resulted in
>>> the out of date error.
>> It doesn't happen with v1, the commit is rejected.
> It seems to me that mod_dav_svn should not be solely responsible here.
> The FS layer has ood conflict checks that should have rejected the
> commit but they do not get triggered because mod_dav_svn creates the
> transaction based on HEAD rather than on the revision in the working
> copy. If I tweak the transaction creation so that it is based on the
> working copy revision, rather than HEAD, then the v2 commit fails on
> MERGE with an ood error.
> I'm a bit surprised that we chose to have mod_dav_svn create
> transactions based on HEAD rather than having the client supply the
> revision from the working copy. It means we have to reimplement enough
> of the ood checks to compensate and making sure we implement enough is
> tricky, as demonstrated in this case.

The repos layer commit editor does the same, it bases the transaction on
HAED in libsvn_repos/commit.c:open_root. I was aware that we do checks
at lots of layers in Subversion but I thought that the early and high
level checks were designed to allow commits to be aborted early and that
they simply repeated the checks that were done in the final stage of the
commit. But that is not how it works, the commits are setup to avoid
some of the final checks and then the early/high level checks are the
only checks that are done.

Received on 2014-03-14 13:02:57 CET

This is an archived mail posted to the Subversion Dev mailing list.