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: Tue, 03 Feb 2009 08:48:30 +0100

Hallöchen!

Dan Nicolaescu writes:

> [...]
>
> This shows that (vc-working-revision
> "/home/bronger/src/chantal/current/chantal/samples/remote_client/la2chantal.py")
>
> returns nil.  So probably for some reason
> (vc-bzr-working-revision
> "/home/bronger/src/chantal/current/chantal/samples/remote_client/la2chantal.py")
>
> returns nil.  Can you try to debug why that happens?

I removed the interpretation of the meta data and fork a bzr process
always by pruning the routine to:

(defun vc-bzr-working-revision (file)
  ;; Together with the code in vc-state-heuristic, this makes it possible
  ;; to get the initial VC state of a Bzr file even if Bzr is not installed.
  (lexical-let*
      ((rootdir (vc-bzr-root file))
       (branch-format-file (expand-file-name vc-bzr-admin-branch-format-file
                                             rootdir))
       (revhistory-file (expand-file-name vc-bzr-admin-revhistory rootdir))
       (lastrev-file (expand-file-name vc-bzr-admin-lastrev rootdir)))
    (lexical-let*
        ((result (vc-bzr-command-discarding-stderr
                  vc-bzr-program "revno" (file-relative-name file)))
         (exitcode (car result))
         (output (cdr result)))
      (cond
       ((eq exitcode 0) (substring output 0 -1))
       (t nil)))))

This works perfectly, i.e. I see revision numbers always (even for
lightweight checkouts) and it solves this bug.  However, it is a
lazy and provisional solution because it's much less efficient.

Tschö,
Torsten.

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