Subject: bug#2092 closed by Nick Roberts <[email-masked]> (Re: bug#2092: 23.0.60; vc-svn-diff)

From: [email-masked] (Emacs bug Tracking System)
Date: Wed, 04 Feb 2009 11:10:04 +0000

This is an automatic notification regarding your bug report
which was filed against the emacs package:

#2092: 23.0.60; vc-svn-diff

It has been closed by Nick Roberts <[email-masked]>.

Their explanation is attached below along with your original report.
If this explanation is unsatisfactory and you have not received a
better one in a separate message then please contact Nick Roberts <[email-masked]> by
replying to this email.

-- 
2092: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=2092
Emacs Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#2092: 23.0.60; vc-svn-diff
From: Nick Roberts <[email-masked]>
To: Stefan Monnier <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Thu, 5 Feb 2009 00:03:01 +1300

 > > vc-svn-diff fails when oldvers equals (vc-working-revision f).
 > > In that case "svn diff" executes with no -r argument and only gives
 > > a diff if the file is locally modified.
 > 
 > That's the right behavior when newvers is nil, isn't it?
 > 
 > > I don't see how it could ever work (please note that I'm not saying that
 > > it could never work just that I don't see how it could).
 > 
 > I think it was written assuming (incorrectly) that "newvers == nil".
 > Is the bug fixed if you add (null newvers) to the conjunction?
 > 
 > 
 >         Stefan
 > 
 > 
 > PS: I see you've already removed this code, but I remember we added
 > specifically upon request from some users, so it would be better to fix
 > it than to remove it.

OK, I've looked through the archives.  I find it odd because:

1) I think that svn should be able to work out whether it can handle a
   request locally (a bug in svn?).
2) If you do "C-x v =" there is no problem.
3) I can only see a problem with "C-u C-x v =" with the default values which
   is eqivalent to 2).

So it looks very much like a corner case.

Anyway I've done as you say.

-- 
Nick                                           http://www.inet.net.nz/~nickrob

Subject: 23.0.60; vc-svn-diff
From: Nick Roberts <[email-masked]>
To: [email-masked]
Date: Wed, 28 Jan 2009 19:34:34 +1300 (NZDT)

vc-svn-diff fails when oldvers equals (vc-working-revision f).
In that case "svn diff" executes with no -r argument and only gives
a diff if the file is locally modified.

To see this bug, do vc-print-log on a file under Subversion control that
needs an update (newer revisions have been committed by someone else).
Place the cursor over the revision after (in time) the working-revision (the
revison with the number in the modeline) and press d (log-viw-diff).

I think this clause needs to be removed:

  (and oldvers
       files
       (catch 'no
	 (dolist (f files)
	   (or (equal oldvers (vc-working-revision f))
	       (throw 'no nil)))
	 t)
       ;; Use nil rather than the current revision because svn handles
       ;; it better (i.e. locally).  Note that if _any_ of the files
       ;; has a different revision, we fetch the lot, which is
       ;; obviously sub-optimal.
       (setq oldvers nil))

I don't see how it could ever work (please note that I'm not saying that
it could never work just that I don't see how it could).

-- 
Nick                                           http://www.inet.net.nz/~nickrob