Dev:Subversion
Build_instructions has instructions for checking the source code out of subversion in 3 separate projects, but what if you want a single project?
Here's how I achieved it. The following steps will create a new directory called 'code' in the current directory, and put everything inside there.
Run this 'co' command. As soon as you see some output, hit control-c to stop it:
/tmp$ svn co http://svn.voria.com/code A code/ETL A code/ETL/releases A code/ETL/trunk A code/ETL/trunk/ETL.pbproj A code/ETL/trunk/ETL.pbproj/darco.pbxuser A code/ETL/trunk/ETL.pbproj/frameworkfix.cpp A code/ETL/trunk/ETL.pbproj/project.pbxproj A code/ETL/trunk/ETL.pbproj/etl_profile.h C-c svn: Caught signal
Notice that subversion was putting all the ETL files inside code/ETL/trunk. We don't want the 'trunk' directory, or any other tags or branches, so we use 'switch' to tell it that. Let the command complete:
/tmp$ svn switch http://svn.voria.com/code/ETL/trunk code/ETL/ D code/ETL/releases D code/ETL/trunk A code/ETL/ETL.pbproj A code/ETL/ETL.pbproj/darco.pbxuser A code/ETL/ETL.pbproj/frameworkfix.cpp [...] A code/ETL/README A code/ETL/bootstrap A code/ETL/ETL.prj U code/ETL Updated to revision 440.
Then issue the 'update' command, and again interrupt it when it starts pulling in files:
/tmp$ svn update code A code/synfig-studio A code/synfig-studio/trunk A code/synfig-studio/trunk/synfigstudio.mime.in A code/synfig-studio/trunk/macosxbuild.sh A code/synfig-studio/trunk/AUTHORS A code/synfig-studio/trunk/synfigstudio-thumbnailer.schemas.in A code/synfig-studio/trunk/src C-c svn: Caught signal
Again, use 'switch' to tell svn we only want the trunk:
/tmp$ svn switch http://svn.voria.com/code/synfig-studio/trunk code/synfig-studio/ D code/synfig-studio/trunk A code/synfig-studio/synfigstudio.mime.in A code/synfig-studio/macosxbuild.sh A code/synfig-studio/AUTHORS [...] A code/synfig-studio/studio.kdevprj A code/synfig-studio/NEWS A code/synfig-studio/bootstrap U code/synfig-studio/ Updated to revision 440.
And repeat again for synfig-core:
/tmp$ svn update code A code/synfig-core A code/synfig-core/trunk A code/synfig-core/trunk/synfig-core.xcodeproj A code/synfig-core/trunk/synfig-core.xcodeproj/darco.pbxuser A code/synfig-core/trunk/synfig-core.xcodeproj/project.pbxproj A code/synfig-core/trunk/synfig-core.xcodeproj/config.h A code/synfig-core/trunk/synfig-core.xcodeproj/darco.mode1 A code/synfig-core/trunk/macosxbuild.sh A code/synfig-core/trunk/AUTHORS A code/synfig-core/trunk/src C-c svn: Caught signal
Use switch to select only synfig-core's trunk:
/tmp$ svn switch http://svn.voria.com/code/synfig-core/trunk code/synfig-core/ D code/synfig-core/trunk A code/synfig-core/synfig-core.xcodeproj A code/synfig-core/synfig-core.xcodeproj/darco.pbxuser A code/synfig-core/synfig-core.xcodeproj/project.pbxproj [...] A code/synfig-core/examples/headmo.sif A code/synfig-core/examples/gradient.sif A code/synfig-core/examples/candy.sif U code/synfig-core Updated to revision 440.
Supposing there are some subdirectories which you don't want at all. For example, the next up is synfig-docs. Use control-c again to interrupt the update as soon as it gets started:
/tmp$ svn update code A code/synfig-docs A code/synfig-docs/trunk A code/synfig-docs/trunk/en A code/synfig-docs/trunk/en/animation A code/synfig-docs/trunk/en/animation/workspace.sgml A code/synfig-docs/trunk/en/animation/introduction.sgml C-c svn: Caught signal
Instead of switching to the trunk, this time we'll switch to 'code/empty', which is an empty directory. This will result in the whole of the synfig-docs/ being ignored:
/tmp$ svn switch http://svn.voria.com/code/empty code/synfig-docs/
D code/synfig-docs/trunk Updated to revision 440.
Proceed in the same manner for the remaining directories. I didn't want either of the OSX trees, so I switched those to 'empty' too:
/tmp$ svn update code A code/gtkmm-osx A code/gtkmm-osx/trunk A code/gtkmm-osx/trunk/gtkmm-meta.mpkg A code/gtkmm-osx/trunk/gtkmm-meta.mpkg/Contents A code/gtkmm-osx/trunk/gtkmm-meta.mpkg/Contents/Info.plist A code/gtkmm-osx/trunk/gtkmm-meta.mpkg/Contents/Resources A code/gtkmm-osx/trunk/gtkmm-meta.mpkg/Contents/Resources/package_version A code/gtkmm-osx/trunk/gtkmm-meta.mpkg/Contents/Resources/English.lproj C-c svn: Caught signal
/tmp$ svn switch http://svn.voria.com/code/empty code/gtkmm-osx/ D code/gtkmm-osx/trunk Updated to revision 440.
/tmp$ svn update code A code/synfig-osx A code/synfig-osx/trunk A code/synfig-osx/trunk/launcher A code/synfig-osx/trunk/launcher/darwin-new-keymap.c C-c svn: Caught signal
/tmp$ svn switch http://svn.voria.com/code/empty code/synfig-osx/ D code/synfig-osx/trunk Updated to revision 440.
/tmp$ svn update code A code/autobuild A code/autobuild/trunk A code/autobuild/trunk/Makefile A code/empty Updated to revision 440.
Finally, we're finished. 'du' shows us that only ETL, core, and studio have a significant amount of content:
/tmp$ du -sk code/* 44 code/autobuild 16 code/empty 3604 code/ETL 16 code/gtkmm-osx 95628 code/synfig-core 16 code/synfig-docs 16 code/synfig-osx 15420 code/synfig-studio /tmp$