9

Firstly, I am trying to reintegrate a branch with the trunk (using TortoiseSVN) but I am getting the error message "Querying merge info requires version 3 of the FSFS filesystem schema; filesystem E:/MyRepository/ uses only version 2".

Was it really not possible to reintegrate branches in earlier versions of subversion? Or is there another way of doing this?

Anyway, how can I upgrade the file system from version 2 to version 3?

1

3 Answers 3

6

You didn't specify the version of Subversion that your server is running. But based on the message you provided in the question, it's probably a 1.4.x version or older. I don't remember if there was an upgrade command provided or not for conversion from 1.4.x to 1.5.x, but the sure file way to get your repository from version 2 to version is to a dump and load. But that doesn't matter much, you'll want to install 1.6.x anyway to go with the latest. So, here are the steps you need to do:

  • Upgrade to Subversion 1.6.x if haven't already
  • Dump your existing repository using svnadmin dump
  • Create a new repo, call it _new
  • Load your new repo with the dump of the old using svnadmin load
  • Copy the uuid file from the old repository to the new repository
  • rename the old repository to _old
  • rename the new repository to

See also Subversion FAQ http://subversion.apache.org/faq.html#dumpload for a concrete example.

That should get you taken care of and the uuid file will keep your clients from freaking out. Do an svn update to be sure though.

3
  • 2
    from svnadmin help load message: --force-uuid : set repos UUID to that found in stream, if any. In short: no need to play with files Feb 3, 2011 at 13:30
  • @Hubert Kario: Yeah, command line has that option. But not all the GUI clients do. And, if you can do it on the server side, that just makes it easier on the users. But I'll keep that switch in mind the next time I run into that problem. Thanks for the tip!
    – jgifford25
    Feb 4, 2011 at 16:46
  • When creating your new repository, be careful about setting permissions. For example, if you are accessing the repository via apache mod_svn, apache runs under user "www", group "www" and you are logged in as "fred", you will probably need something like: sudo chown -R fred:www myrepository followed by a sudo chmod g+w to myrepository/db/repcache.db and myrepository/db/uuid
    – xgretsch
    Mar 7, 2013 at 10:58
8

Dump/load is not required for upgrading Subversion repositories. Use svnadmin upgrade command:

svnadmin upgrade <path-to-repos>

NOTE: svnadmin upgrade "performs only the minimum amount of work needed to accomplish this while still maintaining the integrity of the repository. While a dump and subsequent load guarantee the most optimized repository state, svnadmin upgrade does not." - see also svnadmin upgrade documentation

2
  • 1
    NOTE, however, that this "performs only the minimum amount of work needed to accomplish this while still maintaining the integrity of the repository. While a dump and subsequent load guarantee the most optimized repository state, svnadmin upgrade does not." - see also svnbook.red-bean.com/en/1.7/svn.ref.svnadmin.c.upgrade.html
    – Jörg
    May 3, 2012 at 8:34
  • 1
    NOTE, as well, that "you should always back up your repository before" using svnadmin upgrade, whereas with dump/load you kind of have your backup implicitly.
    – Jörg
    May 3, 2012 at 8:40
5

Ivan has a good tip that works, i tried it and it is very simple.

svnadmin upgrade <path-to-repos>

One thing i Missed in Ivans example that can be useful to others are:

Ex.

<path-to-repos> = C:\repos\theRepo
(ie. NOT C:\repos\theRepo\db)

Don't point svnadmin at the db directory, but the directory containing the db directory.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .