mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-28 07:45:00 +00:00
Don't bother making files writable for commit with modern VCS
* lisp/vc/vc.el (vc-next-action): Only gripe about committing read-only files for RCS and SCCS. Fixes: debbugs:9781
This commit is contained in:
parent
4695c85095
commit
daee954c00
@ -1,3 +1,8 @@
|
||||
2012-09-27 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* vc/vc.el (vc-next-action): Only gripe about committing read-only
|
||||
files for RCS and SCCS. (Bug#9781)
|
||||
|
||||
2012-09-27 Chong Yidong <cyd@gnu.org>
|
||||
|
||||
* progmodes/verilog-mode.el (verilog-mode-release-emacs): Fix last
|
||||
|
@ -1105,24 +1105,27 @@ For old-style locking-based version control systems, like RCS:
|
||||
;; Files have local changes
|
||||
((vc-compatible-state state 'edited)
|
||||
(let ((ready-for-commit files))
|
||||
;; If files are edited but read-only, give user a chance to correct.
|
||||
(dolist (file files)
|
||||
;; If committing a mix of removed and edited files, the
|
||||
;; fileset has state = 'edited. Rather than checking the
|
||||
;; state of each individual file in the fileset, it seems
|
||||
;; simplest to just check if the file exists. Bug#9781.
|
||||
(when (and (file-exists-p file) (not (file-writable-p file)))
|
||||
;; Make the file+buffer read-write.
|
||||
(unless (y-or-n-p (format "%s is edited but read-only; make it writable and continue? " file))
|
||||
(error "Aborted"))
|
||||
;; Maybe we somehow lost permissions on the directory.
|
||||
(condition-case nil
|
||||
(set-file-modes file (logior (file-modes file) 128))
|
||||
(error (error "Unable to make file writable")))
|
||||
(let ((visited (get-file-buffer file)))
|
||||
(when visited
|
||||
(with-current-buffer visited
|
||||
(read-only-mode -1))))))
|
||||
;; CVS, SVN and bzr don't care about read-only (bug#9781).
|
||||
;; RCS does, SCCS might (someone should check...).
|
||||
(when (memq backend '(RCS SCCS))
|
||||
;; If files are edited but read-only, give user a chance to correct.
|
||||
(dolist (file files)
|
||||
;; If committing a mix of removed and edited files, the
|
||||
;; fileset has state = 'edited. Rather than checking the
|
||||
;; state of each individual file in the fileset, it seems
|
||||
;; simplest to just check if the file exists. Bug#9781.
|
||||
(when (and (file-exists-p file) (not (file-writable-p file)))
|
||||
;; Make the file+buffer read-write.
|
||||
(unless (y-or-n-p (format "%s is edited but read-only; make it writable and continue? " file))
|
||||
(error "Aborted"))
|
||||
;; Maybe we somehow lost permissions on the directory.
|
||||
(condition-case nil
|
||||
(set-file-modes file (logior (file-modes file) 128))
|
||||
(error (error "Unable to make file writable")))
|
||||
(let ((visited (get-file-buffer file)))
|
||||
(when visited
|
||||
(with-current-buffer visited
|
||||
(read-only-mode -1)))))))
|
||||
;; Allow user to revert files with no changes
|
||||
(save-excursion
|
||||
(dolist (file files)
|
||||
|
Loading…
Reference in New Issue
Block a user