RE: svn:externals - process question
From: Andrew Reedick <Andrew.Reedick_at_cbeyond.net>
Date: Thu, 31 Jan 2013 15:18:38 -0500
As you've discovered, externals *always* pull in the HEAD revision unless you specifically add a revision number to the svn:externals property. Needless to say, "rogue" svn:externals are bad for build reproducibility and tagging.
Options are:
If you want don't want to validate externals on the front end, you can try recording the externals after the fact. If you do a checkout of the code, you can cd into each external and get the revision number (via svn info.) Or you could parse the output of "svn co" or "svn export" to get the revision numbers of the externals items and record them somewhere. ("svn update" will also return the revision numbers of externals.) Ex: Create the tag, run "svn co tag", record the revision numbers pulled in, go back and add "-r 123" to the svn:externals in the tag branch. However, I haven't checked how nested externals are handled, e.g. your external reference could contain svn:externals which could have svn:externals of their own, ad infinitum.
A really simple option is to export the code (including externals) and then import the code again as its own tag. Needless to say this breaks history, but it does guarantee that you can reproduce the build.
Using "--ignore-externals" isn't normally practical.
|
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.