"Eric S. Raymond" <esr@snark.thyrsus.com> writes:
> Some months ago one of the listmembers here who was aware that I am
> the original author of Emacs VC mode asked me to review the vc-svn.el
> written by Jim Blandy that ships with Subversion.
>
> I have not forgotten this request, and it just worked its way far
> enough up my queue to get some action. I have looked at both the
> Blandy version and the version by Stefan Monnier that now ships with
> Emacs.
Thank you thank you thank you for tackling this. I've also been
wanting this mess to be cleaned up for a long time, but, unlike you,
hadn't gotten around to actually doing anything about it :-).
> Here are my findings:
>
> 1. The Monnier version was synced with the Blandy version at revision
> 5801, and has evolved since.
>
> 2. The Blandy version changed at revs r9195, r6632, and r6173. The
> last substantive change was at r5799.
>
> 3. Both have a serious problem in that they only do commits one file
> at a time. To fix this, the VC framework itself needs to have a
> notion of committing a group of files.
>
> My conclusion is that:
>
> (a) The three small changes to the Blandy version since r5801 should
> be ported to the Monnier version.
>
> (b) VC should learn to use a new optional method, vc-group-commit, that commits
> a group of files with a single change comment. And to fall back
> on individual-file checkins when that optional method is absent.
>
> (c) The Monnier vc-svn.el should be enhanced to supply this method.
>
> (d) The Blandy version should be dropped.
Totally agree with your conclusions. And (d) can happen anytime after
(a), there's no need for it to wait on (b) and (c).
> In furtherance of (c), there is a hint in the way Emacs calls svn ci
> that when svn ci is given path arguments, it commits only changes in
> the files named by those arguments (as opposed to shipping changes
> for the entire working copy).
>
> However, neither the help text for svn ci nor the Subversion book
> addresses this. (The failure to explain how path arguments are used
> is a documentation bug.) Is it in fact the case?
Yes, that's right. In other words:
$ svn ci -m "log msg"
commits all the changes in your working copy, but
$ svn ci -m "log msg" path1 another/path some/other/path
commits just the named paths, and does not commit whatever other local
modifications might be lurking in your working copy.
If the book doesn't explain this, it should.
> If so, enhancing VC to do the right thing will be easy.
That's great news.
Let us know when to drop vc-svn.el from our repository and start
pointing to the one in the Emacs tree as the canonical version.
How all this relates to pcl-cvs.el / psvn.el, I don't know. If VC
grows decent support for checkin groups, then it will overlap the
PCL-CVS / PSVN functionality (the former is in the FSF Emacs tree, and
the latter in the Subversion tree, IIRC). I don't think this overlap
is necessarily a bad thing, it's just something to stay aware of.
-Karl
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Feb 22 18:59:45 2005