I'm using svn:externals for automated module to system build promotion on source code level so that
/branches/release-123/modules/xxx
would contain a promoted revision of
/trunk/modules/xxx
I was thinking to create /branches/release-123/modules/xxx
with svn mkdir
and set svn:externals
property to that, but external checkout into root of the directory having the property doesn't seem to be allowed.
Another option would be to add the property to modules directory with xxx as checkout directory. But there are multiple module builds doing promotions independently, so scripted propget - modify - propset cycle can end up in a race condition.
Is there any workaround to either define external checkout directory as "." or do a non-interactive property modification as an atomic operation?
So far I figured out 2 workarounds:
1) Create dummy directories like .xxx that check out to ../xxx. It should work in theory, but is really a dirty hack.
2) Currently I've set it up so that all changes to externals happen by triggering a single parameterized Jenkins job so that there are no race conditions. It does the job, but now there's an additional single point of failure for the system.
I cannot use a simple svn copy since that would clutter the change log used for tracking changes in the system build.