[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Commit to multiple repositories

From: Gavin Lambert <tsvn_at_mirality.co.nz>
Date: 2006-09-25 08:47:22 CEST

Quoth Adrian Herscu:
> Q: ...and what happens if someone want to checkout only a subset of
> those projects? A: He will get all of them because of the svn:externals!

Not necessarily. That's why the original suggestion was to create a
private repository on your machine (that contains nothing but empty
folders with svn:externals references). You can create as many of these
linking folders as you want, in any combinations that you want, and
someone else can have completely different ones from you. But if
certain combinations are common, then you can make a shared repository
easily enough. The point is that this particular repository never
contains code, just references to the other repositories that *do*
contain code.

> - somebody else wants to copy multiple folders, he selects them and
> choose "copy" and "paste" them in some other location; if some folder
> doesn't "copy/paste" then a message is thrown and the operation stops

Actually you can't do that without losing history. You have to
right-click-drag if you want to copy/move files.

> - and yet someone else wants to commit multiple working copies, he
> selects them and choose "commit"; if some working copy doesn't "commit"
> then a message is thrown and the operation stops (the same thing apply
> to few other tsvn operations, e.g. "update", "revert" and "clean up")

It is completely impossible to do a truly atomic commit across multiple
repositories, even if the UI will let you click a single 'commit' button
to commit to all of them at once. Imagine this scenario:

1. user makes changes to files checked out from repository A
2. user makes changes to files checked out from repository B
3. user commits both sets of changes together (ie. clicks a single
commit button)
4. the changes to repository A were committed successfully
5. the changes to repository B could not be committed because of some error
6. now, the logical 'commit' operation has failed, but the files
destined for repository A really have been committed, and are now a
permanent part of the repository, while repository B has been left unchanged

Hence, if you want truly atomic operation (usually because there is some
dependency between your projects), then you need to keep them in the
same repository.

(It's also a major pain in the butt to move files from one repository to
another, especially if you want to keep their history. You're just
setting yourself up for a world of hurt if you create more repositories
than you actually need. Most people only need 1, unless there's
absolutely no overlap whatsoever between two projects, and that's very
rare.)

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tortoisesvn.tigris.org
For additional commands, e-mail: users-help@tortoisesvn.tigris.org
Received on Mon Sep 25 08:47:45 2006

This is an archived mail posted to the TortoiseSVN Users mailing list.