GNU bug report logs - #2652
23.0.91; wacky behavior of "v" command in *vc-dir* buffer

Previous Next

Package: emacs;

Reported by: Miles Bader <miles <at> gnu.org>

Date: Fri, 13 Mar 2009 00:05:05 UTC

Severity: normal

Done: Dan Nicolaescu <dann <at> ics.uci.edu>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Dan Nicolaescu <dann <at> ics.uci.edu>
To: Miles Bader <miles <at> gnu.org>
Cc: 2652 <at> debbugs.gnu.org
Subject: bug#2652: 23.0.91; wacky behavior of "v" command in *vc-dir*  buffer
Date: Fri, 13 Mar 2009 09:22:10 -0700 (PDT)
Miles Bader <miles <at> gnu.org> writes:

  > On Fri, Mar 13, 2009 at 4:27 PM, Dan Nicolaescu <dann <at> ics.uci.edu> wrote:
  > > Thanks.
  > > The immediate cause of the problem is that
  > > (vc-git-registered "/tmp/zonk/")
  > > returns nil.
  > >
  > > vc-git-registered is called because vc-finish-log-entry does a
  > > `vc-call'.  `vc-call' tries to find the corresponding VC backend.
  > >
  > > Now, the VC backend should be know known at point when the log entry is
  > > started, so there should be no need for the vc-call, vc-call-backend
  > > could be used...

You can try this patch that passes down the VC backend.  
Not tested beyond M-x byte-compile-file.

--- vc.el.~1.711.~	Thu Jan  8 14:24:05 2009
+++ vc.el	Fri Mar 13 09:14:58 2009
@@ -1085,13 +1085,13 @@
 	(if (not ready-for-commit)
 	    (message "No files remain to be committed")
 	  (if (not verbose)
-	      (vc-checkin ready-for-commit)
+	      (vc-checkin ready-for-commit backend)
 	    (progn
 	      (setq revision (read-string "New revision or backend: "))
 	      (let ((vsym (intern (upcase revision))))
 		(if (member vsym vc-handled-backends)
 		    (dolist (file files) (vc-transfer-file file vsym))
-		  (vc-checkin ready-for-commit revision))))))))
+		  (vc-checkin ready-for-commit backend revision))))))))
      ;; locked by somebody else (locking VCSes only)
      ((stringp state)
       ;; In the old days, we computed the revision once and used it on
@@ -1327,7 +1327,7 @@
      ".\n")
     (message "Please explain why you stole the lock.  Type C-c C-c when done.")))
 
-(defun vc-checkin (files &optional rev comment initial-contents)
+(defun vc-checkin (files backend &optional rev comment initial-contents)
   "Check in FILES.
 The optional argument REV may be a string specifying the new revision
 level (if nil increment the current level).  COMMENT is a comment
@@ -1341,6 +1341,7 @@
 Runs the normal hooks `vc-before-checkin-hook' and `vc-checkin-hook'."
   (when vc-before-checkin-hook
     (run-hooks 'vc-before-checkin-hook))
+  (lexical-let ((backend backend))
   (vc-start-logentry
    files rev comment initial-contents
    "Enter a change comment."
@@ -1356,13 +1357,13 @@
       ;; We used to change buffers to get local value of vc-checkin-switches,
       ;; but 'the' local buffer is not a well-defined concept for filesets.
       (progn
-	(vc-call checkin files rev comment)
+	(vc-call-backend backend 'checkin files rev comment)
 	(mapc 'vc-delete-automatic-version-backups files))
       `((vc-state . up-to-date)
 	(vc-checkout-time . ,(nth 5 (file-attributes file)))
 	(vc-working-revision . nil)))
      (message "Checking in %s...done" (vc-delistify files)))
-   'vc-checkin-hook))
+   'vc-checkin-hook)))
 
 ;;; Additional entry points for examining version histories
 
@@ -2096,7 +2097,7 @@
     (when (or move edited)
       (vc-file-setprop file 'vc-state 'edited)
       (vc-mode-line file)
-      (vc-checkin file nil comment (stringp comment)))))
+      (vc-checkin file new-backend nil comment (stringp comment)))))
 
 (defun vc-rename-master (oldmaster newfile templates)
   "Rename OLDMASTER to be the master file for NEWFILE based on TEMPLATES."




This bug report was last modified 16 years and 101 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.