Difference between revisions of "Dev:Subversion"

From Synfig Studio :: Documentation
Jump to: navigation, search
m (how to create a single svn working directory)
 
m (fixed link)
Line 1: Line 1:
[Build_instructions] has instructions for checking the source code out of subversion in 3 separate projects, but what if you want a single project?
+
[[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.
 
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.

Revision as of 16:19, 6 April 2007

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$