If I understand you, you should make sure that foo and bar use the same branch. foo is your master project and has svn:externals on it somewhere, pointing to bar . When you enter foo , you must make sure that bar uses the same branch. The only way to ensure that you create a repository with the tags and branches directories in the root of your repository, and not in the root of the project (as most sites do).
You can then use relative external references to the point from the foo directory containing svn:external on bar . In addition, if you tag foo and bar with the same tag, foo and bar will maintain their ratio:
$ svn propset svn:externals ../../bar common
If your branches were at the root of your repository, the common directory will point to the same branch for foo as the bar .
The big problem with snv:externals is that if you are not careful, you are pointing to a constantly changing version of the directory to which you are bound. Say someone did this:
$ svn propset svn:externals /projects/bar/trunk common
in my foo project. I am doing a release and copying foo into a tag. However, the common directory that I noted will be changed when someone updates bar/trunk . This makes foo recovery impossible.
When I use svn:externals , I always make sure that I bind to either the labeled version of bar or to a specific revision, and if I bind to a specific revision, I also bind my URL to this if someone decides to delete the directory that I bind to my svn:externals property.
There is nothing in Subversion that automatically updates your svn:externals properties, but you can search for all svn: externals in the directory tree with
$svn propget -v -R svn:externals .
I have found that svn:externals usually turn out to be more painful than it costs.
Instead, I simply store the inline bar object or an encrypted copy of the source in my release repository, and as part of my build procedure, I copy the object or source zipped from my release repository.
I use Maven site repositories, such as Nexus or Artifactory, as the release repository, even if I am not doing a Maven project or even working in a Java based project. The Maven local repository provides all the tools you need to download and download dependent packages, and Maven has the concept of a release repository - where the code never changes - and a snapshot repository where you plan to free code, but that can change. This is useful if you suspect that bar may change due to what you need in foo .