i update everything together. i structure my svn repository like this:
-- shared template includes
i put modules and shared template includes (i use mason just as an example) in lib because very likely, different apps need to share functionalities and some general templates (e.g. templates to show currencies)
the benefit of this structure is that i have everything in one tree so i don't need to remember which module is needed by which cgi script with which version. the downside is that it takes a lot of space, but space is cheap nowadays.