Modules in SVN
From Zanecorpwiki
A module (in CVS) is a collection of checkouts organized under a name. In SVN, this functionality is provided via 'externals'. So, when a user checks out a directory (or file), there may be 'external requirements' attached to it that are also checked out. It seems the idea was to check them out from foreign repositories, however you can use this same facility to check out from the same repository, you just have to provide an absolute URL.
To do this, you edit the 'svn:externals' property and list what you want to check out when the thing the property is attached to is checked out. So, to edit the current directory's externals, run:
svn propedit --editor-cmd emacs svn:externals .
Without the editor command, it default to vi.
As on example, our 'webserver' module looks like this:
pre apache -r2778 https://svn.acme.com/repository/trunk/third_party/apache/ php5 -r2778 https://svn.acme.com/repository/trunk/third_party/php5 postgres -r2778 https://svn.acme.com/repository/trunk/third_party/postgres /pre
The first bit is the directory to create in the local checkout, the -r (which is optional, but recommended) specifies the version to checkout, and the final line (which, it seems, must be an absolute URL) is the repository and path to check out from.
To define a new Liquid SVN module, first check out the modules dir from the SVN root, ala:
svn co --ignore-externals nowikihttps://192.168.0.10:42069/svn/modules/nowiki
The 'no-externals' flag tells SVN not to follow the externals as you don't actually want them, you just want to mess with the externals definitions themselves.
Add a dir and edit the externals property of the dir as above to create a new module.


