mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-16 17:19:41 +00:00
(vc-svn-modify-change-comment): Add support for the
file:// access method.
This commit is contained in:
parent
32bae13cf7
commit
fd06445166
@ -1,3 +1,8 @@
|
||||
2008-04-09 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* vc-svn.el (vc-svn-modify-change-comment): Add support for the
|
||||
file:// access method.
|
||||
|
||||
2008-04-09 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* minibuffer.el: New file.
|
||||
|
@ -386,27 +386,42 @@ The changes are between FIRST-VERSION and SECOND-VERSION."
|
||||
(defun vc-svn-modify-change-comment (files rev comment)
|
||||
"Modify the change comments for a specified REV.
|
||||
You must have ssh access to the repository host, and the directory Emacs
|
||||
uses locally for temp files must also be writeable by you on that host."
|
||||
(vc-do-command nil 0 "svn" nil "info")
|
||||
(set-buffer "*vc*")
|
||||
(goto-char (point-min))
|
||||
(unless (re-search-forward "Repository Root: svn\\+ssh://\\([^/]+\\)\\(/.*\\)" nil t)
|
||||
(error "Repository information is unavailable."))
|
||||
(let* ((tempfile (make-temp-file user-mail-address))
|
||||
(host (match-string 1))
|
||||
(directory (match-string 2))
|
||||
(remotefile (concat host ":" tempfile)))
|
||||
uses locally for temp files must also be writeable by you on that host.
|
||||
This is only supported if the repository access method is either file://
|
||||
or svn+ssh://."
|
||||
(let (tempfile host remotefile directory fileurl-p)
|
||||
(with-temp-buffer
|
||||
(insert comment)
|
||||
(write-region (point-min) (point-max) tempfile))
|
||||
(unless (vc-do-command nil 0 "scp" nil "-q" tempfile remotefile)
|
||||
(error "Copy of comment to %s failed" remotefile))
|
||||
(unless (vc-do-command nil 0 "ssh" nil
|
||||
"-q" host
|
||||
(format "svnadmin setlog --bypass-hooks %s -r %s %s; rm %s"
|
||||
directory rev tempfile tempfile))
|
||||
(error "Log edit failed"))
|
||||
))
|
||||
(vc-do-command (current-buffer) 0 "svn" nil "info")
|
||||
(goto-char (point-min))
|
||||
(unless (re-search-forward "Repository Root: \\(file://\\(/.*\\)\\)\\|\\(svn\\+ssh://\\([^/]+\\)\\(/.*\\)\\)" nil t)
|
||||
(error "Repository information is unavailable"))
|
||||
(if (match-string 1)
|
||||
(progn
|
||||
(setq fileurl-p t)
|
||||
(setq directory (match-string 2)))
|
||||
(setq host (match-string 4))
|
||||
(setq directory (match-string 5))
|
||||
(setq remotefile (concat host ":" tempfile))))
|
||||
(with-temp-file (setq tempfile (make-temp-file user-mail-address))
|
||||
(insert comment))
|
||||
(if fileurl-p
|
||||
;; Repository Root is a local file.
|
||||
(progn
|
||||
(unless (vc-do-command
|
||||
nil 0 "svnadmin" nil
|
||||
"setlog" "--bypass-hooks" directory
|
||||
"-r" rev (format "%s" tempfile))
|
||||
(error "Log edit failed"))
|
||||
(delete-file tempfile))
|
||||
|
||||
;; Remote repository, using svn+ssh.
|
||||
(unless (vc-do-command nil 0 "scp" nil "-q" tempfile remotefile)
|
||||
(error "Copy of comment to %s failed" remotefile))
|
||||
(unless (vc-do-command
|
||||
nil 0 "ssh" nil "-q" host
|
||||
(format "svnadmin setlog --bypass-hooks %s -r %s %s; rm %s"
|
||||
directory rev tempfile tempfile))
|
||||
(error "Log edit failed")))))
|
||||
|
||||
;;;
|
||||
;;; History functions
|
||||
|
Loading…
Reference in New Issue
Block a user