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

Re: upgrading source code in local repository

From: Ulrich Eckhardt <ulrich.eckhardt_at_dominolaser.com>
Date: Tue, 9 Aug 2011 09:20:17 +0200

On Wednesday 03 August 2011, you wrote:
> On Aug 1, 2011, at 05:31, Ulrich Eckhardt wrote:
> > On Friday 29 July 2011, Brecht Ameije wrote:
> >> I read the referred page in the book, indeed: the script
> >> svn_load_dirs.pl is exactly what I need. It implements the steps that I
> >> did by hand.
> >
> > There is one thing that took me a while to understand when starting to
> > use that: This doesn't preserve your local changes. Instead, after
> > uploading a new upstream version, you have to apply your local changes
> > again. Merging helps though.
>
> 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
> svn import /path/to/foo-1.1 $URL/vendor/foo/current
>
> "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.

Yes I am. You might question whether it is reasonable to make them here, but
it doesn't matter. The point is that you use svn_load_dirs not in order to
just mirror the upstream sources locally, you could use a simple shared
directory for that. No, you typically want to modify those sources, like adapt
them to your company's build system or similar requirements.

Now, these changes must be applied to any upstream release before you can use
it and the astonishing part to me was that svn_load_dirs doesn't help you at
all with that. So if you (like we do here) modify "current", you have to
manually re-apply all those changes after you uploaded a new version. It's no
big deal, but I at first expected svn_load_dirs to help me with that.

> 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.

svn_load_dirs already makes a tag for you, if you want.

> 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

Ahem, no? :-) I don't copy things around just in order to use them. Libraries
are simply installed and are then available for any project that needs them.
This restricts changes to be made in just one place. But of course, you can do
it like that if you want to, I just wanted to point out that there is no One
True Way(tm).

Cheers!

Uli

-- 
ML: http://subversion.apache.org/docs/community-guide/mailing-lists.html
FAQ: http://subversion.apache.org/faq.html
Docs: http://svnbook.red-bean.com/
**************************************************************************************
Domino Laser GmbH, Fangdieckstraße 75a, 22547 Hamburg, Deutschland
Geschäftsführer: Thorsten Föcking, Amtsgericht Hamburg HR B62 932
**************************************************************************************
Visit our website at http://www.dominolaser.com
**************************************************************************************
Diese E-Mail einschließlich sämtlicher Anhänge ist nur für den Adressaten bestimmt und kann vertrauliche Informationen enthalten. Bitte benachrichtigen Sie den Absender umgehend, falls Sie nicht der beabsichtigte Empfänger sein sollten. Die E-Mail ist in diesem Fall zu löschen und darf weder gelesen, weitergeleitet, veröffentlicht oder anderweitig benutzt werden.
E-Mails können durch Dritte gelesen werden und Viren sowie nichtautorisierte Änderungen enthalten. Domino Laser GmbH ist für diese Folgen nicht verantwortlich.
**************************************************************************************
Received on 2011-08-09 09:18:05 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.