                                (vc-svn-workfile-version buffer-file-name))
               (vc-mode-line buffer-file-name))))
         (setq svn-commit-files (cdr svn-commit-files))))
-    (delete-file svn-commit-msg-file)))
+    (delete-file svn-commit-msg-file))
+  (svn-default-sentinel proc reason))
 
 ;;; Svn log
+
+(defun svn-file-log (pos)
+  "List the change log of the selected file or directory."
+  (interactive "d")
+  (let ((file (or (svn-getprop pos 'file)
+                  (svn-getprop pos 'dir))))
+    (unless file
+      (error "No file or directory on this line"))
+    (svn-log (list file))))
 
 (defun svn-log (arg)
   "Run `svn log'.
-Argument ARG is the command-line arguments, as a string."
+Argument ARG is the command-line arguments, as a string or a list."
   (interactive "ssvn log arguments: ")
-  (svn-run-with-output "log" (split-string arg)
+  (when (stringp arg)
+    (setq arg (split-string arg)))
+  (svn-run-with-output "log" arg
                        'svn-log-mode))
 
 (defvar svn-log-mode-map nil

      (make-local-variable 'svn-running-label)
      (make-local-variable 'svn-output-marker)

      (setq default-directory dir)
      (insert "Svn status for " dir) (newline)
      (insert "URL: ") (setq svn-url-label (svn-new-label))
      (insert " revision " ) (setq svn-revision-label (svn-new-label))

  (make-local-variable 'svn-last-inserted-marker)
  (make-local-variable 'svn-last-inserted-filename)
  (make-local-variable 'svn-running)

  (set (make-local-variable 'list-buffers-directory)
       (expand-file-name "*svn*"))

  (setq major-mode 'svn-status-mode
        mode-name "Svn status")
