I have a set of applications that all rely on a cross-platform library (internal development), and everything is stored in subversion. Now this library is part of every application, and such a copy should be in every working directory of the application.
To be able to revert to any version of the application and have the correct version of lib, one option would be to keep a copy of the library in the project, however this is a nightmare to maintain.
More elegant, apparently, is the use of the subversion function of the externals definition . However, it seems that you need to use explicit revision numbers to make 100% sure that the correct revision is assigned (for example, if a line or tag or branch was specified without a version number, it seems that you cannot be 100% sure that you get EXACTLY the same revision as a year ago, as people can always commit over the trunk / branch / tag).
Now this library is under constant development, as it is basically the heart of our multi-platform application. Therefore, to save changes to svn: external prop, a constant update is required. Also, developers often make changes to their local copy (corrections, new features), and then commit it. I'm afraid that if I configure it with revisions, it will be more difficult to track exactly where this commit occurs (for example, developers may lose the track that the deposit is on the branch, and when committed, it will be attached to the top of the connecting line / branch, possibly skipping other commits by other developers).
In principle, it seems that even with external definitions, developers working with this will still have to maintain a certain limitation and manage this management (see, for example, an example on SO ). Ideally, they should be smart enough to do this, but (judging by themselves), forgetting these small details, is quite common and can cause a lot of headache later.
So, what I'm looking for is a really flawless solution (if any) for this problem: synchronize this library with several projects so that I can go back in time and always get the correct version answers together without having to constantly be on the clock.