emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/vc-svn.el,v


From: Dan Nicolaescu
Subject: [Emacs-diffs] Changes to emacs/lisp/vc-svn.el,v
Date: Wed, 09 Apr 2008 03:38:41 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Dan Nicolaescu <dann>   08/04/09 03:38:40

Index: vc-svn.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/vc-svn.el,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -b -r1.75 -r1.76
--- vc-svn.el   31 Mar 2008 15:36:54 -0000      1.75
+++ vc-svn.el   9 Apr 2008 03:38:38 -0000       1.76
@@ -386,27 +386,42 @@
 (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))
+      (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
+      (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"))
-  ))
+       (error "Log edit failed")))))
 
 ;;;
 ;;; History functions




reply via email to

[Prev in Thread] Current Thread [Next in Thread]