Search code examples
svnsvn-externals

SVN externals and tagging


I'm using a trunk based development model with SVN externals using the HEAD revision. Is there a way to automatically fix the current revision of the externals when I'm tagging a version?

Currently, I have to set SVN externals properties to the current revision for each external repo, commit the properties, create the tag, revert the externals back to HEAD.


Solution

  • There is no command-line tool in SVN, to my knowledge, that will automatically fix the externals for tagging.

    However, TortoiseSVN gives you this option whenever you create a tag.

    It does this by making a second commit to the tag, after the tag is created, that sets all externals to a fixed revision on whatever path they are already pointing to.

    You could do this manually by tagging, modifying the externals, and committing to the tag. I know normally tags should be immutable, but you can probably make an exception for this one task.

    As an alternative, consider ALWAYS setting a fixed revision on externals. This is the recommended usage. If you don't, then you have no way of going "back in time" to see what your project looked like at a certain point in its history. The externals will not reflect the version they were using when your trunk was at a given state.