Hello Bob, (havent checked the mailing list - perhaps I will repost there).
Thanks for the response. Option 4 doesnt work, since we build our libraries in certain parts of the SVN tree, then we commit them. Via svn:externals, they then end up into the file-system tree, during a checkout. So we need the initial check-in to get them where we want them. Unless we throw the nifty svn:external feature away and write scripts to copy files around to where we want them. I liked the elegance of the SVN based solution. svnrdump might come some way to providing a solution. I think I have no choice to live with the large CPU overhead: svnrdump --> dumpfilter--> svnadmin load. Every system build would take about 15-20 min or more, but at least it avoids large test commit. Thanks for your time. Gertjan On Mon, Aug 29, 2011 at 6:44 AM, Bob Archer <bob.arc...@amsi.com> wrote: > > After scratching my head for a while and reading documentation as best as > I > > can, I am not able to see a good method for doing the following. > > > > We use SVN to develop software for an embedded system. Our 'C' code is > > developed in parts of the tree that are grouped by project. We have a > > seperate tree containing the embedded file system. The file system > tree's > > binaries and libraries are populated automatically by using SVN externals > > from the parts of the tree that we use to develop our code. In other > words, > > after a major source code change, the programmer commits the library or > > executable and by the magic of SVN:externals is appears at the right > place on > > the file system. A developer only needs to check out his part of the > repo, > > but can automatically contribute to our final output, the embedded > > filesystem. > > > > For releases we copy our trunk to a tag, rebuild all the code, commit > the > > libraries and binaries to the tag and then create our file system by > pulling in > > the newly comitted binaries/libraries from that tag. That way, a release > is > > guarenteed to have libraries corrospond to the source code. It works > well for > > us. > > > > Problem is, it is not so great for creating a test release. For us to > build our > > embedded file system, we *have* to pull its files from SVN and that > means > > a lot of commits only for testing. Our svn repo is 7GB+ and growing too > fast. > > > > So here is a simple solution - i thought - for a test release, we extract > rev > > HEAD from the trunk repository, copy to a temporary SVN repository > > created on the fly. This will include all our svn:externals definitions. > We build > > the code in the project trees, commit to the temporary repository and > build > > our file-system from it. If it is a bad test, we just delete the temp > > repository. Fix the trunk in the real repo and start again. > > > > Here is where I need help. I can not find a way of extracting HEAD from a > > sub-part of the repo to create a new temp repo. > > > > 1. svnadmin dump followed by a load would re-create our entire > repository, > > when I really only need a part. Yes, I could svndumpfilter as a second > step > > but we are now talking some massive CPU overhead. Secondly it forces us > to > > build on the same machine (right ?) since you can't dump a URL. > > Svnrdump can do this. It's a new util... I'm not sure if it's been released > yet, or will only be released with 1.7. > > > > > 2. svnsync can do copies of sub-trees (as of v1.5) but it would copy the > entire > > history. > > > > 3. svn-hot-copy would copy the entire repo and all history. > > > > 4. svn export followed by svn import would lose all the SVN: externals - > our > > binaries would get build but never appear in the file-system tree. > > > > Am I missing a solution ? > > I'm not understanding why option 4 won't work. Can you not also create a > "test" file-system tree using export as well? > > Sorry I can't be of more help. > > BOb > > > -- ================================================== Gertjan Hofman ghofman [at] gmail.com gertjan.hofman [at] honeywell.com 604-982-3574 ==================================================