Subject: Re: bug#7791: 24.0.50; vc-annotate doesn't work on large SVN files

From: Glenn Morris <[email-masked]>
Date: Fri, 07 Jan 2011 15:13:49 -0500

Mark A. Hershberger wrote:

> Works on the file when I check it out anonymously on the http transport,
> but when I use my credentials on the svn+ssh transport it fails in both
> emacs from trunk and emacs23.

Hmph, now I see it too, only with svn+ssh:

svnadmin create /path/to/repo

get Article.php, stick it in /some/dir

svn import /some/dir file:///path/to/repo

svn checkout svn+ssh://hostname/path/to/repo dir

If instead checked out via local file:/// it works fine.

Changing vc-svn-annotate-command to not run asynchronously seems to
make it work. I can only guess that for some reason Emacs mistakenly
thinks the asynchronous version finishes sooner than it actually does.

I remembered this old comment from INSTALL.CVS (back when it was
called INSTALL.CVS):

       If you execute cvs commands inside Emacs, specifically if you use
       pcl-cvs, output from CVS may be lost due to a problem in the
       interface between ssh, cvs, and libc.  Corrupted checkins are
       also known to have happened.

       To fix the problem, save the following script into a file, make it
       executable, and set CVS_RSH to the file name of the script:

       #!/bin/bash
       exec 2> >(exec cat >&2 2>/dev/null)
       exec /usr/bin/ssh "$@"

If I do the same trick with SVN_SSH, it seems to work OK asynchronously.
So I guess svn may be subject to the same issue as cvs.