Hello,
I occasionally wish to commit related changes to two projects in a
single commit.
At the moment, I am making use of SVN's partial checkout facility, and
have a working copy from the root of my repository with the following
structure:
projsAandB/ (URL: http://my_repository_path/)
projA/
trunk/
projB/
trunk/
Then to commit joint changes to projects projA and projB, I can commit
at projsAandB level.
It would be *really* helpful if I did not need to do this, but could
have the structure
my_work/
projA/ (URL: http://my_repository_path/projA/trunk/)
projB/ (URL: http://my_repository_path/projB/trunk/)
and commit on both these together with a command such as
svn commit -m"blah" projA projB
i.e. give two (or more) paths to potentially *different* working copies.
At the moment, any attempt to do this produces a reply
svn: 'c:\my_work' is not a working copy
I would only wish this to be possible for URLs all within the same
repository. (Obviously it would be near to impossible to get separate
repository servers to coordinate the atomic nature of the commit.)
There are two common "use cases" that might occur. One is the usual case
of two paths in the same working copy, as already supported. The other
is as above where the two (or more) paths are in different working
copies (mapped to disjoint directories of the repository).
One potential problem is with a mixture or generalisation of these: it
would be undesirable to attempt a commit two separate deltas of the same
file in the repository. This might happen if the two paths in the commit
are of two separate working copies that are both pointing to the same
directory in the repository (or to a pair of directories with one
contained in the other), but where instances of the same file are
(differently) modified in both working copies.
So, that case would need to be guarded against carefully. It might be
enough to reject any commit containing multiple, distinct deltas to a
single node in the repository.
Is there any plan to allow SVN to do this? I would guess that this is
pure client behaviour, i.e. that no change would be required to the
server.
By the way, I am aware of the very useful tool svnmucc. I do use that in
order to be able to tag two projects in the same commit:
svnmucc -m"Tags for version 1.0" -U http://my_repository_path/
cp 1000 projA/trunk projA/tags/v1.0
cp 1234 projB/trunk projB/tags/v1.0
(all on one line)
Of course, svnmucc is a fairly low-level client, and is not really
suitable for committing complex and extensive working copy changes, so
does not really provide a practical solution to the above problem.
I now notice that this feature has been discussed previously on the Dev
mailing list (see e.g.
http://svn.haxx.se/dev/archive-2009-05/0509.shtml). Please let me know
if there's anywhere where I can get an up-to-date status of this feature
proposal, and follow progress.
Thanks,
Rob.
Rob Hubbard
________________________________________________________________
This message has been independently scanned for the Softel Group and cleared of containing viruses and other malicious data.
Powering Television Beyond the Video (TM)
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId=2396341
To unsubscribe from this discussion, e-mail: [users-unsubscribe_at_subversion.tigris.org].
Received on 2009-09-18 12:17:48 CEST