]> git.eshelyaron.com Git - emacs.git/commitdiff
(cvs-retrieve-revision): Make sure HEAD gets you the head of the branch.
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 12 May 2003 17:49:22 +0000 (17:49 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 12 May 2003 17:49:22 +0000 (17:49 +0000)
lisp/pcvs.el

index 2c0824843c32adf850546da245a20ee09cdcf809..bb405834a9725ea8613f2a460d7f6430b7135123 100644 (file)
@@ -1,6 +1,6 @@
 ;;; pcvs.el --- a front-end to CVS
 
-;; Copyright (C) 1991,92,93,94,95,95,97,98,99,2000,2002
+;; Copyright (C) 1991,92,93,94,95,95,97,98,99,2000,02,2003
 ;;              Free Software Foundation, Inc.
 
 ;; Author: (The PCL-CVS Trust) pcl-cvs@cyclic.com
@@ -1638,8 +1638,14 @@ Signal an error if there is no backup file."
          ;; Discard stderr output to work around the CVS+SSH+libc
          ;; problem when stdout and stderr are the same.
          ;; FIXME: this doesn't seem to make any difference :-(
-         (let ((res (call-process cvs-program nil '(t . nil) nil
-                                  "-q" "update" "-p" "-r" rev file)))
+         (let ((res (apply 'call-process cvs-program nil '(t . nil) nil
+                           "-q" "update" "-p"
+                           ;; If `rev' is HEAD, don't pass it at all:
+                           ;; the default behavior is to get the head
+                           ;; of the current branch whereas "-r HEAD"
+                           ;; stupidly gives you the head of the trunk.
+                           (append (unless (equal rev "HEAD") (list "-r" rev))
+                                   (list file)))))
            (when (and res (not (and (equal 0 res))))
              (error "Something went wrong retrieving revision %s: %s" rev res))
            (set-buffer-modified-p nil)