views:

322

answers:

1

We have an svn project that also has several plugins in vendor/plugins - all pulled in via svn:externals.

I have a commit that spans both the main project and several of these plugins all at once.

When I do an svn st it lists all my changed files across all the correct sub directories, but when I try to do an svn ci it only shows files from my local project.

How do I make a single commit that encompasses both the local changes and the svn:externals directories too?

+1  A: 

Ok, it looks like it's not completely possible to combine local changes with svn externals, but you can combine all of several externals together and then checkin your local working changes afterwards.

To commit back to an svn:externals project you have to explicitly put the svn:externals directory name in the checkin eg:

svn ci vendor/plugin/<plugin_name>

You can checkin any number of different plugins all together on the same command-line with:

svn ci vendor/plugin/<plugin_one>  vendor/plugin/<plugin_two> ... 

But then your local working-copy changes have to be done separately. If you don't, you'll end up with either a nasty warning telling you that is "Unable to lock" your local working copy and asking if "Are all the targets part of the same working copy?" OR you'll get some weird message saying

svn: Commit failed (details follow):
svn: Illegal repository URL ''

So it seems you must commit working-copy changes independent of your svn:externals commit. Still - at least it's only to, not N (where N is the number of plugins plus working-copy). You can still tie the two commits together with the same commit-message.

Taryn East