- You really shouldn't be storing libraries in your source-control system. Especially third-party libraries. Depending on the language and tools that you're using, there are a lot of ways to avoid doing so, but that's another question.
- Recognize that the Subversion repository uses the equivalent of links internally, so the only time a file is actually duplicated is when it's changed. If you commit a file in version 100 of the repository, every branch based on that version will reference the same file (unless and until you commit a new version).
- You don't want Subversion to create symlinks on the client. You want each branch to be self-contained, so that you don't accidentally change a shared file. However, be aware that Subversion will manage symlinks that you create.
With those in mind, and with the goal of moving toward a world where you don;t keep your libraries in the source repository, I recommend creating separate directories at the top of your repository:
This is one of the under-appreciated features of Subversion: you can check out any arbitrary subtree of the repository into any arbitrary directory on your local filesystem.
So, how do you deal with separation of libraries and source? That again depends on your language and tools. It can be as simple (and ugly, and barely maintainable) as a
lib directory in your project that contains symlinks back to the
Better is to use a build tool that gets its library references from a configuration file. This will let you easily add libraries into the repository, and lets different project versions use different sets of libraries.