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

svn copy driving me nuts - how to overwrite URLs in a vendor tree?

From: hans henderson <hans.svn_at_gmail.com>
Date: 2007-04-29 21:49:09 CEST

 I want to keep a tag of a "virgin" installation tree of an add-on component
in my repository separate from the "core" tree to which it gets added.

I also want to keep a branch of the "core+add-on" integrated tree in the
repository, as that in fact is the basis for the "my stuff" development
work, and tag that as well, whole point of vendor branches.

I don't want to have to keep two completely unrelated trees with identical
files in them, doubling the space taken by the repository completely
unnecessarily.

----------------------
My latest XAMPP-only "core" tree is here:
repos/website/vendors/apache-friends/xamppcore/v1.61/xampp

This currently happens to be exactly the same as:
repos/website/vendors/current

I've done an import of the Perl add-on installation tree to here:
repos/website/vendors/apache-friends/perl-add-on/v5.8.8.819/xampp

I would like to:

svn copy svn://localhost/vendors/apache-friends/perl-add-on/v5.8.8.819/xampp
\
    svn://localhost/vendors/current \
    -m "copying the Perl add-on v5.8.8.819 over /current/xampp"

but that gives me:

svn: Path 'current/xampp' already exists

Well *duh!* I know it does; I *want* to overwrite any existing files in the
core right down the tree with the ones from the new add-on directory, as
well as adding the new files and directories.

I reckon there should at least be a --force, but no such option, except for
messages.

I rolled my whole repository back to before the import and then imported
into
repos/website/vendors/apache-friends/perl-add-on/v5.8.8.819 (leaving out
the offending /xampp), and then did a:

svn copy svn://localhost/vendors/apache-friends/perl-add-on/v5.8.8.819 \
    svn://localhost/vendors/current/xampp -m "etc"

but that just *added* a new v5.8.8.819 directory as a sub under
/current/xampp, and even did the same thing if I changed it to (note the
trailing slash, should mean "send over the stuff *inside* this directory,
not the directory itself!")
svn copy svn://localhost/vendors/apache-friends/perl-add-on/v5.8.8.819\ \
    svn://localhost/vendors/current/xampp \

 (WTF?)

I did a bit of research in the list archive, and came across this snippet,
posted by someone basically saying this was reasonable behaviour because
that's how *nix does it:

cp path/A path/B --> if path/B doesn't exist, creates path/B
                      if path/B does exist, creates path/B/A

Now where I come from (DOS/Windows) this is nuts, but OK I acknowledge the
*nix world is superior in every way, I can accept that I'll just have to be
VERY careful with my copying from now on.

But for the life of me I can't figure out how to do what I want to do!

Now out in my local file system, I *could* just copy the unversioned Perl
add-on tree over my working copy of current and then commit it, but (I
think) that would be importing 250 MB of files twice into my repository,
seems to go against the whole point of Subversion.

Help me please my head hurts. . .
Received on Sun Apr 29 21:49:30 2007

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