Re: upgrading source code in local repository
From: Ryan Schmidt <subversion-2011a_at_ryandesign.com>
Date: Tue, 2 Aug 2011 23:10:08 -0500
On Aug 1, 2011, at 05:31, Ulrich Eckhardt wrote:
> On Friday 29 July 2011, Brecht Ameije wrote:
I think perhaps you still misunderstand. Correct, svn_load_dirs.pl does not preserve your local changes. That's not its job. You never run svn_load_dirs.pl on directories or parts of the repository that contain any changes. You only run them on pristine copies of the vendor software.
Example:
svn mkdir $URL/vendor
/vendor in the repository will contain copies of all the third-party software you want to keep track of. You will never make your own changes to that code in this part of the repository. These will always represent exact copies of the upstream source.
Let's say you want to keep track of a third-party software called foo. It's currently at version 1.1. You download the tarball of version 1.1 and you import it into the repository at this path:
svn mkdir $URL/vendor/foo
"current" is analogous to the "trunk" of a project that you're developing, but it's not called "trunk" here because "trunk" is a place where you make changes, and you're not going to be making any changes here.
Now you make a copy of current and call it 1.1:
svn cp $URL/vendor/foo/current $URL/vendor/foo/1.1
This is like a "tag" in a project that you're developing.
Finally, you copy version 1.1 into another location in the repository where you want to use it. Let's say that foo will be used inside a project you're developing called bar, so perhaps you run:
svn cp $URL/vendor/foo/1.1 $URL/bar/trunk/libs/foo
Now you have a copy of foo 1.1 in the libs directory in the trunk of your bar project. You can edit that copy of foo to your heart's content.
Next, imagine a new version 1.2 of foo is released and you want to upgrade the foo in the bar project to that verison.
So you download the tarball of foo 1.2 and use svn_load_dirs.pl to update $URL/vendor/foo/current to version 1.2. svn_load_dirs.pl will also copy that to $URL/vendor/foo/1.2 for you if you ask it to.
Now you can go into your working copy of bar/trunk/libs/foo and run:
svn merge $URL/vendor/foo/1.1 $URL/vendor/foo/1.2 .
That is: You ask subversion to apply changes that occurred between foo 1.1 and 1.2 to your existing (and possibly modified) copy of foo 1.1. You commit it, stating in the message that you updated it to 1.2. Done.
>> Running /usr/bin/svn add -N --targets
Correct, the @ sign has special meaning in subversion. If a filename has an @ in it, subversion will think you are asking for that special meaning and will probably not do what you meant. To work around that, you append an @ to the end of the filename. That is what the script is probably doing here and why you are seeing "@" at the end of each filename. It is not a bug; it is a feature of subversion, and a feature of svn_load_dirs.pl that it is trying to handle all filenames correctly for you, even those containing an @.
This does not explain why it failed for you though.
|
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.