mirror of
https://github.com/masscollaborationlabs/emacs.git
synced 2025-07-16 17:00:06 +00:00
(vc-backend-checkout): Use with-temp-file to check out into arbitrary
file names.
This commit is contained in:
parent
48970f2f02
commit
d76a596e39
1 changed files with 34 additions and 43 deletions
53
lisp/vc.el
53
lisp/vc.el
|
@ -5,7 +5,7 @@
|
|||
;; Author: Eric S. Raymond <esr@snark.thyrsus.com>
|
||||
;; Maintainer: Andre Spiegel <spiegel@inf.fu-berlin.de>
|
||||
|
||||
;; $Id: vc.el,v 1.253 1999/09/06 03:46:33 rms Exp rms $
|
||||
;; $Id: vc.el,v 1.254 1999/09/06 22:15:10 rms Exp $
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
|
@ -2595,24 +2595,19 @@ THRESHOLD, nil otherwise"
|
|||
(failed t))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(with-temp-file filename
|
||||
(apply 'vc-do-command
|
||||
nil 0 "/bin/sh" file 'MASTER "-c"
|
||||
;; Some shells make the "" dummy argument into $0
|
||||
;; while others use the shell's name as $0 and
|
||||
;; use the "" as $1. The if-statement
|
||||
;; converts the latter case to the former.
|
||||
(format "if [ x\"$1\" = x ]; then shift; fi; \
|
||||
umask %o; exec >\"$1\" || exit; \
|
||||
shift; umask %o; exec get \"$@\""
|
||||
(logand 511 (lognot vc-modes))
|
||||
(logand 511 (lognot (default-file-modes))))
|
||||
"" ; dummy argument for shell's $0
|
||||
filename
|
||||
(current-buffer) 0 "get" file 'MASTER
|
||||
"-s" ;; suppress diagnostic output
|
||||
(if writable "-e")
|
||||
"-p"
|
||||
(and rev
|
||||
(concat "-r" (vc-lookup-triple file rev)))
|
||||
switches)
|
||||
(concat "-r"
|
||||
(vc-lookup-triple file rev)))
|
||||
switches))
|
||||
(set-file-modes filename
|
||||
(logior (file-modes (vc-name file))
|
||||
(if writable 128 0)))
|
||||
(setq failed nil))
|
||||
(and failed (file-exists-p filename)
|
||||
(delete-file filename))))
|
||||
|
@ -2629,20 +2624,16 @@ THRESHOLD, nil otherwise"
|
|||
(failed t))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(with-temp-file filename
|
||||
(apply 'vc-do-command
|
||||
nil 0 "/bin/sh" file 'MASTER "-c"
|
||||
;; See the SCCS case, above, regarding the
|
||||
;; if-statement.
|
||||
(format "if [ x\"$1\" = x ]; then shift; fi; \
|
||||
umask %o; exec >\"$1\" || exit; \
|
||||
shift; umask %o; exec co \"$@\""
|
||||
(logand 511 (lognot vc-modes))
|
||||
(logand 511 (lognot (default-file-modes))))
|
||||
"" ; dummy argument for shell's $0
|
||||
filename
|
||||
(current-buffer) 0 "co" file 'MASTER
|
||||
"-q" ;; suppress diagnostic output
|
||||
(if writable "-l")
|
||||
(concat "-p" rev)
|
||||
switches)
|
||||
switches))
|
||||
(set-file-modes filename
|
||||
(logior (file-modes (vc-name file))
|
||||
(if writable 128 0)))
|
||||
(setq failed nil))
|
||||
(and failed (file-exists-p filename) (delete-file filename))))
|
||||
(let (new-version)
|
||||
|
@ -2684,14 +2675,14 @@ THRESHOLD, nil otherwise"
|
|||
(let ((failed t))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(with-temp-file filename
|
||||
(apply 'vc-do-command
|
||||
nil 0 "/bin/sh" file 'WORKFILE "-c"
|
||||
"exec >\"$1\" || exit; shift; exec cvs update \"$@\""
|
||||
"" ; dummy argument for shell's $0
|
||||
workfile
|
||||
(current-buffer) 0 "cvs" file 'WORKFILE
|
||||
"-Q" ;; suppress diagnostic output
|
||||
"update"
|
||||
(concat "-r" rev)
|
||||
"-p"
|
||||
switches)
|
||||
switches))
|
||||
(setq failed nil))
|
||||
(and failed (file-exists-p filename) (delete-file filename))))
|
||||
;; default for verbose checkout: clear the sticky tag
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue