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

Re: Stop creating mergeinfo on COPY (was: Problems reintegrating the issue-2843-dev branch)

From: Paul Burba <ptburba_at_gmail.com>
Date: Wed, 12 Nov 2008 10:46:32 -0500

On Wed, Nov 12, 2008 at 10:01 AM, Mark Phippard <markphip_at_gmail.com> wrote:
> On Wed, Nov 12, 2008 at 9:59 AM, C. Michael Pilato <cmpilato_at_collab.net> wrote:
>> Mark Phippard wrote:
>>> On Fri, Nov 7, 2008 at 7:10 PM, Paul Burba <ptburba_at_gmail.com> wrote:
>>>
>>>> REALLY FIXING THE PROBLEM:
>>>>
>>>> Stopping all the WC-to-WC production of needless explicit mergeinfo
>>>> would go a longggg way to avoiding this, but that doesn't help those
>>>> (including us) with lots of historical subtree mergeinfo. More and
>>>> more I think that copy and move (all, not just WC-to-WC) should never
>>>> produce mergeinfo on the destination *unless* the source has it. It
>>>> can't be worse than what we deal with now...
>>>
>>> I propose we just do this ... now. Let's just rip this code out of WC
>>> to WC copy. Do not create mergeinfo when copying stuff. Forget about
>>> making it smarter, let's just stop doing it. The problems we have
>>> created by doing this are far worse than the theoretical problems we
>>> could prevent by getting it right.
>>>
>>> Ripping this out will make our product better now and reduce user
>>> frustration. If the theoretical problems turn into real problems and
>>> if someone is motivated enough to put this code back then they can do
>>> so in a way that gets it right.
>>>
>>> Let's stop the madness. If this one feature had not been put into
>>> 1.5, then most of the problems relating to mergeinfo handling we
>>> complain about would not even exist.
>>
>> At the risk of having you show up on my doorstep in a few hours wielding a
>> battle axe, I'd suggest:
>>
>> 1. making 'svn copy WC WC' be mergeinfo-ignorant,
>> 2. having that type of invocation print a warning about the fact
>> that mergeinfo wasn't honored, and
>> 3. add -g as the flag to calculate mergeinfo *with full repository
>> access*?
>
> My only objection is that we have said this at least 100 times now. I
> am saying lets do #1 .. today. If someone cares enough to do #2 and 3
> it will get done.

Nothing but +1s on #1, so I am going to do this, and soon, unless
someone raises an objection.

Re #3, so this would be the equivalent of a REPOS-to-WC copy right?
Unfortunately that is often just as ugly as the WC-to-WC copy. Taking
our own trunk as an example, there is some explicit mergeinfo on
subversion/libsvn_subr:

C:\SVN\src-trunk-3>svn pg svn:mergeinfo -Rv subversion\libsvn_subr
Properties on 'subversion\libsvn_subr':
  svn:mergeinfo
    /branches/1.5.x-r30215/subversion/libsvn_subr:30238
    /branches/bdb-reverse-deltas/subversion/libsvn_subr:31976-32455
    /branches/diff-callbacks3/subversion/libsvn_subr:29985-30687
    /branches/dont-save-plaintext-passwords-by-default/subversion/libsvn_subr:30654-31044
    /branches/double-delete/subversion/libsvn_subr:30437-32896
    /branches/file-externals/subversion/libsvn_subr:31705-33228
    /branches/fs-rep-sharing/subversion/libsvn_subr:28962-33729
    /branches/gnome-keyring/subversion/libsvn_subr:30484-31336
    /branches/in-memory-cache/subversion/libsvn_subr:29755-31378
    /branches/issue-2843-dev/subversion/libsvn_subr:31358-34105
    /branches/issue-3000/subversion/libsvn_subr:31639,31642-31645,31647-31652,31654,31660
    /branches/issue-3067-deleted-subtrees/subversion/libsvn_subr:33301-34010
    /branches/issue-3220-dev/subversion/libsvn_subr:32136-32152
    /branches/kwallet/subversion/libsvn_subr:30711-31240
    /branches/log-g-performance/subversion/libsvn_subr:30867-30958
    /branches/reintegrate-improvements/subversion/libsvn_subr:33779-34090
    /branches/svn-mergeinfo-enhancements/subversion/libsvn_subr:30045-30214
    /branches/svnpatch-diff/subversion/libsvn_subr:31831,31912
    /branches/svnserve-logging/subversion/libsvn_subr:29754-30819
    /branches/tc-merge-notify/subversion/libsvn_subr:33943-33988
    /branches/tree-conflicts/subversion/libsvn_subr:28217-33080
    /branches/tree-conflicts-notify/subversion/libsvn_subr:33852-33934

Let's make a WC-to-WC copy of one of libsvn_subr's children with no
explicit mergeinfo:

C:\SVN\src-trunk-3>svn copy subversion\libsvn_subr\auth.c
subversion\libsvn_subr\auth_wc_to_wc_copy.c
A subversion\libsvn_subr\auth_wc_to_wc_copy.c

As this WC is at a uniform revision the newly added file get's
explicit mergeinfo equal to what its copy source inherited:

C:\SVN\src-trunk-3>svn pg svn:mergeinfo -v
subversion\libsvn_subr\auth_wc_to_wc_copy.c
Properties on 'subversion\libsvn_subr\auth_wc_to_wc_copy.c':
  svn:mergeinfo
    /branches/1.5.x-r30215/subversion/libsvn_subr/auth.c:30238
    /branches/bdb-reverse-deltas/subversion/libsvn_subr/auth.c:31976-32455
    /branches/diff-callbacks3/subversion/libsvn_subr/auth.c:29985-30687
    /branches/dont-save-plaintext-passwords-by-default/subversion/libsvn_subr/auth.c:30654-31044
    /branches/double-delete/subversion/libsvn_subr/auth.c:30437-32896
    /branches/file-externals/subversion/libsvn_subr/auth.c:31705-33228
    /branches/fs-rep-sharing/subversion/libsvn_subr/auth.c:28962-33729
    /branches/gnome-keyring/subversion/libsvn_subr/auth.c:30484-31336
    /branches/in-memory-cache/subversion/libsvn_subr/auth.c:29755-31378
    /branches/issue-2843-dev/subversion/libsvn_subr/auth.c:31358-34105
    /branches/issue-3000/subversion/libsvn_subr/auth.c:31639,31642-31645,31647-31652,31654,31660
    /branches/issue-3067-deleted-subtrees/subversion/libsvn_subr/auth.c:33301-34010
    /branches/issue-3220-dev/subversion/libsvn_subr/auth.c:32136-32152
    /branches/kwallet/subversion/libsvn_subr/auth.c:30711-31240
    /branches/log-g-performance/subversion/libsvn_subr/auth.c:30867-30958
    /branches/reintegrate-improvements/subversion/libsvn_subr/auth.c:33779-34090
    /branches/svn-mergeinfo-enhancements/subversion/libsvn_subr/auth.c:30045-30214
    /branches/svnpatch-diff/subversion/libsvn_subr/auth.c:31831,31912
    /branches/svnserve-logging/subversion/libsvn_subr/auth.c:29754-30819
    /branches/tc-merge-notify/subversion/libsvn_subr/auth.c:33943-33988
    /branches/tree-conflicts/subversion/libsvn_subr/auth.c:28217-33080
    /branches/tree-conflicts-notify/subversion/libsvn_subr/auth.c:33852-33934

Now do a REPOS-to-WC copy of the same file:

C:\SVN\src-trunk-3>svn copy
http://svn.collab.net/repos/svn/trunk/subversion/libsvn_subr/auth.c
subversion\libsvn_subr\auth_repos_to_wc_copy.c
A subversion\libsvn_subr\auth_repos_to_wc_copy.c

It still gets the same explicit mergeinfo!

C:\SVN\src-trunk-3>svn pg svn:mergeinfo -v
subversion\libsvn_subr\auth_repos_to_wc_copy.c
Properties on 'subversion\libsvn_subr\auth_repos_to_wc_copy.c':
  svn:mergeinfo
    /branches/1.5.x-r30215/subversion/libsvn_subr/auth.c:30238
    /branches/bdb-reverse-deltas/subversion/libsvn_subr/auth.c:31976-32455
    /branches/diff-callbacks3/subversion/libsvn_subr/auth.c:29985-30687
    /branches/dont-save-plaintext-passwords-by-default/subversion/libsvn_subr/auth.c:30654-31044
    /branches/double-delete/subversion/libsvn_subr/auth.c:30437-32896
    /branches/file-externals/subversion/libsvn_subr/auth.c:31705-33228
    /branches/fs-rep-sharing/subversion/libsvn_subr/auth.c:28962-33729
    /branches/gnome-keyring/subversion/libsvn_subr/auth.c:30484-31336
    /branches/in-memory-cache/subversion/libsvn_subr/auth.c:29755-31378
    /branches/issue-2843-dev/subversion/libsvn_subr/auth.c:31358-34105
    /branches/issue-3000/subversion/libsvn_subr/auth.c:31639,31642-31645,31647-31652,31654,31660
    /branches/issue-3067-deleted-subtrees/subversion/libsvn_subr/auth.c:33301-34010
    /branches/issue-3220-dev/subversion/libsvn_subr/auth.c:32136-32152
    /branches/kwallet/subversion/libsvn_subr/auth.c:30711-31240
    /branches/log-g-performance/subversion/libsvn_subr/auth.c:30867-30958
    /branches/reintegrate-improvements/subversion/libsvn_subr/auth.c:33779-34090
    /branches/svn-mergeinfo-enhancements/subversion/libsvn_subr/auth.c:30045-30214
    /branches/svnpatch-diff/subversion/libsvn_subr/auth.c:31831,31912
    /branches/svnserve-logging/subversion/libsvn_subr/auth.c:29754-30819
    /branches/tc-merge-notify/subversion/libsvn_subr/auth.c:33943-33988
    /branches/tree-conflicts/subversion/libsvn_subr/auth.c:28217-33080
    /branches/tree-conflicts-notify/subversion/libsvn_subr/auth.c:33852-33934

So in this common case, -g actually gives us the same old result. Not
to say we shouldn't implement copy/move -g, but it might be a mistake
to advertise it as "gives the correct results".

Paul "I love mergeinfo so much I want to marry it. So then I can
divorce it an have a bitter custody battle over our kids, psi, omega,
gamma, and beta" Burba

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-11-12 16:46:48 CET

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.