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

Re: Blank line in historic svn:mergeinfo

From: Johan Corveleyn <jcorvel_at_gmail.com>
Date: Thu, 11 Aug 2016 15:46:54 +0200

On Wed, Aug 10, 2016 at 6:21 PM, Grierson, David <David.Grierson_at_sky.uk> wrote:
> Hi,
>
>
>
> Our FishEye indexing service is currently having problems with a repository
> which appears to be due to an invalid svn:mergeinfo property which has an
> empty line.
>
>
>
> Looking at the revisions in question - I can successfully look at the
> regular log with no issues:
>
>
>
> $ svn log -v -r44647:44648
> http://<REPO-URL>/Database/OPR/01_BUILD/branches/DB_OPR-89.x_at_44647
>
> ------------------------------------------------------------------------
>
> r44648 | luw07 | 2016-07-15 09:43:34 +0100 (Fri, 15 Jul 2016) | 1 line
>
> Changed paths:
>
> M /Database/OPR/01_BUILD/branches/DB_OPR-89.x
>
>
>
> CIMBT-602 clean
>
> ------------------------------------------------------------------------
>
>
>
> But if I attempt to look at the merge history as well I get an error:
>
>
>
> $ svn log -g -r44647:44648
> http://<REPO-URL>/Database/OPR/01_BUILD/branches/DB_OPR-89.x_at_44647
>
> svn: E200020: Pathname not terminated by ':'
>
>
>
> Running a diff between these revisions reveals the erroneous empty line:
>
>
>
> $ svn diff -r44647:44648
> http://<REPO-URL>/Database/OPR/01_BUILD/branches/DB_OPR-89.x_at_44647
>
> Index: .
>
> ===================================================================
>
> --- . (revision 44647)
>
> +++ . (revision 44648)
>
>
>
> Property changes on: .
>
> ___________________________________________________________________
>
> Modified: svn:mergeinfo
>
> ## -1,3 +1,4 ##
>
> +
>
> /Database/OPR/01_BUILD/branches/DB_OPR-11.8:25707-25711
>
> /Database/OPR/01_BUILD/branches/DB_OPR-11.9:25760-25762
>
> /Database/OPR/01_BUILD/branches/DB_OPR-11.x:25671-25673
>
>
>
> This appears to have been fixed at a later revision in the repository:
>
>
>
> $ svn diff -r44647:44662
> http://<REPO-URL>/Database/OPR/01_BUILD/branches/DB_OPR-89.x_at_44647
>
> Index: .
>
> ===================================================================
>
> --- . (revision 44647)
>
> +++ . (revision 44662)
>
>
>
> Property changes on: .
>
> ___________________________________________________________________
>
> Modified: svn:mergeinfo
>
> ## -1,3 +1,4 ##
>
> +
>
> /Database/OPR/01_BUILD/branches/DB_OPR-11.8:25707-25711
>
> /Database/OPR/01_BUILD/branches/DB_OPR-11.9:25760-25762
>
> /Database/OPR/01_BUILD/branches/DB_OPR-11.x:25671-25673
>
> $ svn diff -r44647:44663
> http://<REPO-URL>/Database/OPR/01_BUILD/branches/DB_OPR-89.x_at_44647
>
>
>
> Is there any way I can modify the svn:mergeinfo properties on the revisions
> where this appears to be broken (revisions 44648 through to 44662)? When
> attempting to set this I get the following error:
>
>
>
> $ svn propset svn:mergeinfo -r44648 -F save-file
> http://<REPO-URL>/Database/OPR/01_BUILD/branches/DB_OPR-89.x
>
> svn: E205000: Try 'svn help propset' for more information
>
> svn: E205000: Cannot specify revision for setting versioned property
> 'svn:mergeinfo'
>
>
>
> Presumably this is because svn:mergeinfo isn't a revision property?
>
>
>
> Does anyone have any suggestions as to how to correct this?

First thing to try: does this problem also occur when using the
lastest svn release (1.9.4) as svn client? It's possible that more
recent svn client releases are more tolerant in this regard.

Apart from that, you're correct: because this isn't a revision
property but a *versioned* property (part of history), you can't
correct this in the repository. The only way to do this AFAIK is to
dump the repository, fix the dumpfile (using a tool like svndumptool
[1]), and load it into a new repository.

In practice, I would 'svnadmin dump OLDREPOS -r0:LASTGOODREV |
svnadmin load NEWREPOS', to do a plain dump-load (via a pipe) of
everything up until the last known good revision. Then do an
--incremental dump of the single broken revision which committed the
incorrect mergeinfo, and try to fix that single-rev dumpfile with
svndumptool (if you want, you might be able to visually verify if it's
fixed by opening the dumpfile before and after with a text editor (but
caution: do not edit by hand, there are checksums and content-lengths;
it's easy to corrupt the dumpfile)). Then load that fixed dumpfile in
NEWREPOS. Finally start another "piped dump-load" for the rest:
'svnadmin dump --incremental OLDREPOS -rNEXTREV:HEAD | svnadmin load
NEWREPOS'.

[1] https://github.com/jwiegley/svndumptool

-- 
Johan
Received on 2016-08-11 15:47:25 CEST

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.