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

Re: Selectively removing mergeinfo from svn dump with SvnDump python library

From: Mark Eichin <eichin_at_gmail.com>
Date: Sun, 30 Nov 2008 23:04:06 -0500

Is it actually necessary to edit the repository, instead of just
changing the *current* properties? (I'm honestly not sure, I was
confused by some of the things I saw when I first hunted down the
empty revision range problem...)

On Sun, Nov 30, 2008 at 12:38 PM, Arcady Volman <arkadiy8_at_gmail.com> wrote:
> Hello everybody,
>
> Please help me to understand how safe (or unsafe) is what I'm going to do to
> my repository.
>
> I have a repository that suffers from a lot redundant mergeinfo after we
> were performing merges into targets with switched directories and files.
> The switched items were all switched to URLs within the same branch/trunk
> (e.g.: trunk/project/foo.cpp was switched to repo/trunk/shared/foo.cpp).
> Now we have a lot of directories and files that has their own mergeinfo.
> This causes us two problems:
> 1. When we merge, we are likely to produce mergeinfo that cause the error
> "Mergeinfo for '...' maps to an empty revision range" (See
> http://subversion.tigris.org/issues/show_bug.cgi?id=3312)
> 2. When we merge we get lots of irrelevant mergeinfo modifications
> throughout the trunk tree.
>
> Now since issue #3312 makes our mergeinfo unusable and since the redundant
> mergeinfo will make it hard to read the logs and to review changes before
> committing a merge even if we'll overcome issue #3312, I'm considering to
> filter out all the irrelevant mergeinfo from the history.
>
> Here is how I'm planning to do it:
> I'm going to make sure that everything up untill now was merged into trunk
> and than use SvnDump python library (see
> http://svn.borg.ch/svndumptool/0.5.0/) to filter the svn dump.
> I'm going to use this script:
>
> ===============================
> import __init__
> from __init__ import copy_dump_file
> from file import SvnDumpFile
> from node import SvnDumpNode
>
> class MergeinfoFilter:
> def transform(self, dumpfile):
> for i in range(0, dumpfile.get_node_count()):
> n = dumpfile.get_node(i)
> if not n.get_path() in ['Trunk'] and n.has_properties and
> n.get_action() != 'delete':
> n.del_property('svn:mergeinfo')
>
> t = MergeinfoFilter()
> copy_dump_file( 'dump.txt', 'filtereddump.txt', t )
> =================================
>
> After I'll do it I see two problems:
> 1. Files that had mergeinfo changes and that also have additional svn
> properties, will appear in some revisions as modified without actual changes
> 2. Some merged revisions will appear as if they were not fully merged if the
> merge was not done from the root of the branch to the root of the trunk
> (I'll mark such revisions as merged with "Record Only Merge" because I
> assume non of us made partial merges - people here always merge all the
> modifications of each revision).
>
> Can see more problems that I can't ?
>
>
> Thank you very much,
> Arcady Volman.
>

-- 
_Mark_ <eichin_at_thok.org> <eichin_at_gmail.com>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: users-help_at_subversion.tigris.org
Received on 2008-12-01 05:04:32 CET

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

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