0

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.

user3474104
  • 85
  • 1
  • 9
  • "multiple module builds doing promotions" must happen in different releases, isn't it? – Lazy Badger Mar 30 '14 at 13:52
  • Different releases, and also several modules in same release. Module xxx and module yyy have their own automated module builds that are independent on each other, so there's a chance of race condition if they both try to propget - modify - propset at the same time. – user3474104 Mar 31 '14 at 06:12

0 Answers0