But currently the instance scripts, templates, and modules are all version controlled as individual files, with nothing linking them as one "application".
One thing that has helped me do this is to treat everything as a CPAN distribution. I use Module::Build which is pureperl (unlike ExtUtils::MakeMaker which builds Makefiles). It's also completely extensible, though the documentation could use a little work. So, if each of your items is their own distro, you can have the actual app's Build.PL indicate that it depends on Foo, Bar, and Baz, each having a minimum version. It also allows you to verify all your CPAN installs, the Perl version, and anything else you might need. Then, you put the Build.PL into SVN and you're good to go.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?