tags:

views:

919

answers:

2

This may be impossible, but I'm going to ask anyway.

Without going into the details of why it's like this, I have two primary checkouts that I work in, one for the production release branch, and one for trunk. Each of them is a small collection of svn:externals references to sub-projects, with no direct content under the checked-out svn directory.

That is, the four svn:externals directives add all of the content in each of the checkout directories.

When I do a commit via Eclipse(/Subclipse) I can commit changes across all of the external projects in one go, which is good because they're just separate sub-projects in the same repository and this allows me to avoid doing 4 separate commits in a row to the same repo.

Is it not possible to do the same thing from the command line? Commits for each of the externals could certainly be scripted and aliased to one command, but I'd rather avoid cluttering the commit log with separate commits for related changes if possible.

+1  A: 

Unfortunately, your assumption was correct. The current subversion command line tool will not recurse into disjointed externals working copies during a commit. Eclipse probably figures out that it's all rooted the same and adjusts everything so that it's only doing a single commit transaction.

This drawback of the client is actually listed as one of the issues to watch out for when defining externals in your project. As of the 1.6.1 client, this limitation still exists.

Jason Coco
+2  A: 

You can specify all files and folders you want to commit in the command line client, including the externals. Since the CL doesn't recurse into externals, you have to specify those in your commit command separately:

svn ci working_copy externals1 externals2 -m "log message"

Haven't tried this though. If it doesn't work, you have to specify all the modified files and folders separately, not just the 'root' folders of the externals.

Stefan
Unfortunately I can't test this in my existing setup as two of the externals fake a common parent dir so I receive an error stating that isn't a working directory (because it's not) when attempting your solution as: svn ci htdocs/intra htdocs/update scripts includes -m "msg"
Trevor Bramble
...and there are no changes to commit in scripts and includes.
Trevor Bramble