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

Re: changing DIR structure of SVN dump

From: Shaaa <shaolinfinest_at_gmail.com>
Date: Wed, 11 Jan 2012 13:11:07 +0000

Hello Ryan

Thank you for your informative reply. I have managed to overcome the
initial problem, however I do have a new problem.

Basically, this is the current path to my repos:
svn list file:///var/svn/repos/hb/trunk/chi

I want to change it to conform to the 'standardised' structure. At the
moment it is a complete mess. /var/svn/repos/hb has a tonne of
obselete files, then you have a trunk within a trunk which is
basically a different project and should be in its own directory
instead of being a sub directory of an obselete project.

So to clean up the structure I have done the following:

Ive created a new directory:
svn mkdir file:///var/svn/repos/chi

and moved the other repos to the new directory:
svn move file:///var/svn/repos/hb/trunk/chi file:///var/svn/repos/chi/trunk

now I take a dump of the repos which will be taken to the new server
svnadmin dump /var/svn/repos/ > svn.dump

Now I try to filter and extract *only* the chi project
(file:///var/svn/repos/chi).
svndumpfilter include chi < dump > dump.filtered

Doing this however, gives me the following error:
svndumpfilter: Invalid copy source path '/trunk/chi'

Help on resolving this issue will be greatly appreciated.

Shaaa

On 10/01/2012, Ryan Schmidt <subversion-2012a_at_ryandesign.com> wrote:
> On Jan 10, 2012, at 08:39, Shaaa wrote:
>
>> So I am trying to move my repos to a new server. Problem is the old
>> guy did a really strange setup. Basically, in order to access the
>> repos I would have to use the following uri
>> file:///var/svn/repos/mysite/trunk/project1/trunk On the new server I
>> want to change it to file:///var/svn/repos/project1/trunk but I dont
>> want to show the changes in the revs. I have tried the following:
>>
>> svnadmin dump /var/svn/repos > mydump
>> svnadminfilter include trunk < mydump > newdump
>> svnadmin mkdir file:///var/svn/repos/myproject1
>> svnadmin load /var/svn/repos --parent-dir myproject1 < newdump
>>
>> but it gives me the following URI:
>> file:///var/svn/repos/myproject1/trunk/myproject1
>
> You need to distinguish between:
>
> 1. the path of the repository on the old server's disk
> 2. the path of the repository on the new server's disk
> 3. the url through which the repository is accessed on the old server
> 4. the url through which the repository is accessed on the new server
> 5. the path of things inside the repository
>
> Hopefully you are not actually accessing repositories via the file:///
> protocol over for example a file share, and are instead running an apache
> server and accessing it over the http:// or https:// protocol, or an
> svnserve server and accessing it over the svn:// protocol, or have ssh
> access and are accessing it over the svn+ssh:// protocol.
>
> When making any change to your setup, you should change as few things at a
> time as possible. For example, change the paths within the repository (by
> doing "svn mv", or a dump/filter/load cycle), without changing where the
> repository is on disk or the URL used to access it. Or, move the repository
> to a new server, without changing its contents. Though I understand that the
> new server might have a different disk layout than the old server.
>
> So, let's take a look at your situation:
>
>> svnadmin dump /var/svn/repos > mydump
>
> This says the repository was on disk at /var/svn/repos.
>
>> svnadminfilter include trunk < mydump > newdump
>
> There is no command "svnadminfilter"; perhaps you meant "svndumpfilter"?
>
> Based on the URLs you showed above, the repository doesn't contain a
> directory "trunk"; it contains a directory "mysite" which contains a
> directory "trunk". So the newdump shouldn't contain anything.
>
>> svnadmin mkdir file:///var/svn/repos/myproject1
>
> There is no such command "svnadmin mkdir"; did you mean "svnadmin create"?
> That would be odd though since you showed earlier that /var/svn/repos is a
> repository; you don't create repositories inside other repositories. So
> perhaps you meant "svn mkdir" instead?
>
>> svnadmin load /var/svn/repos --parent-dir myproject1 < newdump
>
> You are loading a new dumpfile into the same old /var/svn/repos repository?
>
> There appears to be significant confusion. Some of what I wrote above may be
> wrong, since it is based on what you said, and we already know two lines of
> your transcript cannot be correct. Perhaps we should start with:
>
> 1. Do you have one repository or multiple repositories? Do you want to
> change that?
> 2. What is the path of the repository or repositories on disk? Do you want
> to change that?
> 3. What is the path of the items inside the repository? I presume you at
> least want to change that, to remove the doubled "trunk" directories.
>
> Finally, note that if you really want to dump/filter/load and thus not
> change the revision numbers, what that means is that you are rewriting the
> repository's history (i.e. changing the contents of (at least some of) those
> revisions). As a consequence, you must ensure that you assign the new
> repository a new UUID, and thus everybody who has a working copy will have
> to throw it away and check out a new one. Of course while you are doing your
> work to rewrite the repository history (while you are running dump / filter
> / create / load), you'll have to disable write access to the repository.
> It's often more convenient to just "svn mv" things and accept a slightly
> "dirtier" history than to go through these steps; some would even argue the
> history is not dirty in this case; instead, it's accurate, in that it shows
> what was moved, when, and by whom (and if you write a good commit message,
> why).
>
>
Received on 2012-01-11 14:11:56 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.