summaryrefslogtreecommitdiff
path: root/lisp/vc-hooks.el
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1997-07-31 06:16:32 +0000
committerRichard M. Stallman <rms@gnu.org>1997-07-31 06:16:32 +0000
commit403d549cb7cdf070291c6d3a39172661b21390e8 (patch)
tree05bd73c0b1c99edbf86949b23cbb3382983514cd /lisp/vc-hooks.el
parent77e1b3d494eed714f22f8b18c9d87bdd2fb3f890 (diff)
downloademacs-403d549cb7cdf070291c6d3a39172661b21390e8.tar.gz
(vc-checkout-model): For CVS, look at
permissions to see if a file is "watched".
Diffstat (limited to 'lisp/vc-hooks.el')
-rw-r--r--lisp/vc-hooks.el11
1 files changed, 10 insertions, 1 deletions
diff --git a/lisp/vc-hooks.el b/lisp/vc-hooks.el
index 0cdfb82be7c..b775e89cbfe 100644
--- a/lisp/vc-hooks.el
+++ b/lisp/vc-hooks.el
@@ -514,7 +514,16 @@ For CVS, the full name of CVS/Entries is returned."
(vc-file-getprop file 'vc-checkout-model))))
((eq (vc-backend file) 'CVS)
(vc-file-setprop file 'vc-checkout-model
- (if (getenv "CVSREAD") 'manual 'implicit))))))
+ (cond
+ ((getenv "CVSREAD") 'manual)
+ ;; If the file is not writeable, this is probably because the
+ ;; file is being "watched" by other developers. Use "manual"
+ ;; checkout in this case. (If vc-mistrust-permissions was t,
+ ;; we actually shouldn't trust this, but there is no other way
+ ;; to learn this from CVS at the moment (version 1.9).)
+ ((string-match "r-..-..-." (nth 8 (file-attributes file)))
+ 'manual)
+ (t 'implicit)))))))
;;; properties indicating the locking state