Subject: bug#2157: 23.0.90; bzr support: vc-diff doesn't work with prefix argument on unchanged files

From: Torsten Bronger <[email-masked]>
Date: Wed, 04 Feb 2009 18:09:30 +0100

Hallöchen!

Dan Nicolaescu writes:

> [...]
>
> It looks like the lightweight checkout contains a
> .bzr/branch/location file that is not present in a normal one.  So
> that could be used to differentiate between the two, like here:
>
> --- vc-bzr.el.~1.74.~ Wed Feb  4 05:54:29 2009
> +++ vc-bzr.el         Wed Feb  4 07:43:07 2009
> @@ -327,7 +327,12 @@
>         (lastrev-file (expand-file-name vc-bzr-admin-lastrev rootdir)))
>      ;; This looks at internal files to avoid forking a bzr process.
>      ;; May break if they change their format.
> -    (if (file-exists-p branch-format-file)
> +    (if (and 
> +     (file-exists-p branch-format-file)
> +      (not (file-exists-p 
> +             (expand-file-name
> +               (concat vc-bzr-admin-dirname
> +                               "/branch/location") rootdir))))
>          (with-temp-buffer
>            (insert-file-contents branch-format-file)
>            (goto-char (point-min))

This probably works, however, even better is to check whether the
"location" starts with "file://" and then look there.  Maybe one can
just call the function recursively just with another "file"
parameter (must "file" exist actually?).  If "location" doesn't
start with "file://", do the fallback.

The Bazaar documentation explicitly says that lightweight checkouts
should be done only locally.  For example, you can use them to
switch efficiently between locally stored branches.  Therefore, one
can expect "file://" in most cases indeed.

I use to have many files open (40+), and when I start Emacs, I can
see a significant CPU usage of bzr processes now, thus my concern.

Tschö,
Torsten.

-- 
Torsten Bronger, aquisgrana, europa vetus
                   Jabber ID: [email-masked]