- update to 1.3.0 (#176833)

- update to psvn.el r17921 Stefan Reichoer
This commit is contained in:
jorton 2006-01-04 13:07:01 +00:00
parent 0f2863f8f6
commit 1cd9ea3eab
8 changed files with 477 additions and 225 deletions

View File

@ -1,2 +1,2 @@
subversion-1.2.1.tar.gz subversion-1.3.0.tar.gz
subversion-1.2.1 subversion-1.2.3-3.src.rpm subversion-1.2.3-5.src.rpm

View File

@ -1 +1 @@
http://subversion.tigris.org/tarballs http://subversion.tigris.org/downloads

264
psvn.el
View File

@ -2,7 +2,7 @@
;; Copyright (C) 2002-2005 by Stefan Reichoer ;; Copyright (C) 2002-2005 by Stefan Reichoer
;; Author: Stefan Reichoer, <stefan@xsteve.at> ;; Author: Stefan Reichoer, <stefan@xsteve.at>
;; $Id: psvn.el 16917 2005-10-22 19:26:44Z xsteve $ ;; $Id: psvn.el 17921 2005-12-22 23:06:36Z xsteve $
;; psvn.el is free software; you can redistribute it and/or modify ;; psvn.el is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by ;; it under the terms of the GNU General Public License as published by
@ -48,9 +48,10 @@
;; A - svn-status-add-file-recursively run 'svn add' ;; A - svn-status-add-file-recursively run 'svn add'
;; + - svn-status-make-directory run 'svn mkdir' ;; + - svn-status-make-directory run 'svn mkdir'
;; R - svn-status-mv run 'svn mv' ;; R - svn-status-mv run 'svn mv'
;; C-d - svn-status-rm run 'svn rm' ;; D - svn-status-rm run 'svn rm'
;; M-c - svn-status-cleanup run 'svn cleanup' ;; M-c - svn-status-cleanup run 'svn cleanup'
;; b - svn-status-blame run 'svn blame' ;; b - svn-status-blame run 'svn blame'
;; X e - svn-status-export run 'svn export'
;; RET - svn-status-find-file-or-examine-directory ;; RET - svn-status-find-file-or-examine-directory
;; ^ - svn-status-examine-parent ;; ^ - svn-status-examine-parent
;; ~ - svn-status-get-specific-revision ;; ~ - svn-status-get-specific-revision
@ -115,16 +116,6 @@
;; Or you can check it out from the subversion repository: ;; Or you can check it out from the subversion repository:
;; svn co http://svn.collab.net/repos/svn/trunk/contrib/client-side/psvn psvn ;; svn co http://svn.collab.net/repos/svn/trunk/contrib/client-side/psvn psvn
;; "svn-" is the package prefix used in psvn.el. There are also longer
;; prefixes which clarify the code and help symbol completion, but they
;; are not intended to prevent name clashes with other packages. All
;; interactive commands meant to be used only in a specific mode should
;; have names beginning with the name of that mode: for example,
;; "svn-status-add-file" in "svn-status-mode". "psvn" should be used
;; only in names of files, customization groups, and features. If SVK
;; support is ever added, it should use "svn-svk-" when no existing
;; prefix is applicable.
;; TODO: ;; TODO:
;; * shortcut for svn propset svn:keywords "Date" psvn.el ;; * shortcut for svn propset svn:keywords "Date" psvn.el
;; * docstrings for the functions ;; * docstrings for the functions
@ -133,6 +124,10 @@
;; * finish svn-status-property-set ;; * finish svn-status-property-set
;; * Add repository browser ;; * Add repository browser
;; * Improve support for svn blame ;; * Improve support for svn blame
;; * Get rid of all byte-compiler warnings
;; * SVK working copy support
;; * multiple independent buffers in svn-status-mode
;; There are "TODO" comments in other parts of this file as well.
;; Overview over the implemented/not (yet) implemented svn sub-commands: ;; Overview over the implemented/not (yet) implemented svn sub-commands:
;; * add implemented ;; * add implemented
@ -144,7 +139,7 @@
;; * copy (cp) ;; * copy (cp)
;; * delete (del, remove, rm) implemented ;; * delete (del, remove, rm) implemented
;; * diff (di) implemented ;; * diff (di) implemented
;; * export ;; * export implemented
;; * help (?, h) ;; * help (?, h)
;; * import ;; * import
;; * info implemented ;; * info implemented
@ -170,9 +165,27 @@
;; Comments / suggestions and bug reports are welcome! ;; Comments / suggestions and bug reports are welcome!
;; Development notes
;; -----------------
;; "svn-" is the package prefix used in psvn.el. There are also longer
;; prefixes which clarify the code and help symbol completion, but they
;; are not intended to prevent name clashes with other packages. All
;; interactive commands meant to be used only in a specific mode should
;; have names beginning with the name of that mode: for example,
;; "svn-status-add-file" in "svn-status-mode". "psvn" should be used
;; only in names of files, customization groups, and features. If SVK
;; support is ever added, it should use "svn-svk-" when no existing
;; prefix is applicable.
;; Many of the variables marked as `risky-local-variable' are probably
;; impossible to abuse, as the commands that read them are used only in
;; buffers that are not visiting any files. Better safe than sorry.
;;; Code: ;;; Code:
(require 'easymenu) (require 'easymenu)
(require 'diff-mode nil t)
;;; user setable variables ;;; user setable variables
(defcustom svn-status-verbose t (defcustom svn-status-verbose t
@ -185,6 +198,7 @@ This can be either absolute, or relative to the default directory
of the *svn-log-edit* buffer." of the *svn-log-edit* buffer."
:type 'file :type 'file
:group 'psvn) :group 'psvn)
(put 'svn-log-edit-file-name 'risky-local-variable t)
(defcustom svn-log-edit-insert-files-to-commit t (defcustom svn-log-edit-insert-files-to-commit t
"*Insert the filelist to commit in the *svn-log* buffer" "*Insert the filelist to commit in the *svn-log* buffer"
:type 'boolean :type 'boolean
@ -220,6 +234,11 @@ Possible values are: commit, revert."
(const revert)) (const revert))
:group 'psvn) :group 'psvn)
(defcustom svn-status-preserve-window-configuration nil
"*Try to preserve the window configuration."
:type 'boolean
:group 'psvn)
(defcustom svn-status-negate-meaning-of-arg-commands '() (defcustom svn-status-negate-meaning-of-arg-commands '()
"*List of operations that should use a negated meaning of the prefix argument. "*List of operations that should use a negated meaning of the prefix argument.
The supported functions are `svn-status' and `svn-status-set-user-mark'." The supported functions are `svn-status' and `svn-status-set-user-mark'."
@ -233,17 +252,22 @@ This can be either absolute or looked up on `exec-path'."
;; Don't use (file :must-match t). It doesn't know about `exec-path'. ;; Don't use (file :must-match t). It doesn't know about `exec-path'.
:type 'file :type 'file
:group 'psvn) :group 'psvn)
(put 'svn-status-svn-executable 'risky-local-variable t)
(defcustom svn-status-default-export-directory "~/" "*The default directory that is suggested svn export."
:type 'file
:group 'psvn)
;; TODO: bind `process-environment' instead of running env?
;; That would probably work more reliably in Windows.
(defcustom svn-status-svn-environment-var-list '() (defcustom svn-status-svn-environment-var-list '()
"*A list of environment variables that should be set for that svn process. "*A list of environment variables that should be set for that svn process.
If you set that variable, svn is called with that environment variables set. Each element is either a string \"VARIABLE=VALUE\" which will be added to
That is done via the env program. the environment when svn is run, or just \"VARIABLE\" which causes that
variable to be entirely removed from the environment.
You could set it for example to '(\"LANG=C\")" You could set this for example to '(\"LANG=C\")"
:type '(repeat (string :valid-regexp "=" :value "LANG=C")) :type '(repeat string)
:group 'psvn) :group 'psvn)
(put 'svn-status-svn-environment-var-list 'risky-local-variable t)
(defcustom svn-browse-url-function nil (defcustom svn-browse-url-function nil
;; If the user hasn't changed `svn-browse-url-function', then changing ;; If the user hasn't changed `svn-browse-url-function', then changing
@ -272,6 +296,8 @@ Any non-nil value overrides that variable, with the same syntax."
:value (("." . browse-url-default-browser)))) :value (("." . browse-url-default-browser))))
:link '(emacs-commentary-link "browse-url") :link '(emacs-commentary-link "browse-url")
:group 'psvn) :group 'psvn)
;; (put 'svn-browse-url-function 'risky-local-variable t)
;; already implied by "-function" suffix
(defcustom svn-status-window-alist (defcustom svn-status-window-alist
'((diff "*svn-diff*") (log "*svn-log*") (info t) (blame t) (proplist t) (update t)) '((diff "*svn-diff*") (log "*svn-log*") (info t) (blame t) (proplist t) (update t))
@ -335,6 +361,7 @@ Otherwise: Don't display a header line"
\(used in `svn-status-show-svn-log'; override these by giving prefixes\)." \(used in `svn-status-show-svn-log'; override these by giving prefixes\)."
:type '(repeat string) :type '(repeat string)
:group 'psvn) :group 'psvn)
(put 'svn-status-default-log-arguments 'risky-local-variable t)
(defcustom svn-status-default-commit-arguments '() (defcustom svn-status-default-commit-arguments '()
"*List of arguments to pass to svn commit. "*List of arguments to pass to svn commit.
@ -345,6 +372,7 @@ Subversion and the operating system may treat that as a file name
equivalent to \".\", so you would commit more than you intended." equivalent to \".\", so you would commit more than you intended."
:type '(repeat string) :type '(repeat string)
:group 'psvn) :group 'psvn)
(put 'svn-status-default-commit-arguments 'risky-local-variable t)
(defcustom svn-status-default-diff-arguments '() (defcustom svn-status-default-diff-arguments '()
"*A list of arguments that is passed to the svn diff command. "*A list of arguments that is passed to the svn diff command.
@ -352,6 +380,7 @@ If you'd like to suppress whitespace changes use the following value:
'(\"--diff-cmd\" \"diff\" \"-x\" \"-wbBu\")" '(\"--diff-cmd\" \"diff\" \"-x\" \"-wbBu\")"
:type '(repeat string) :type '(repeat string)
:group 'psvn) :group 'psvn)
(put 'svn-status-default-diff-arguments 'risky-local-variable t)
(defvar svn-trac-project-root nil (defvar svn-trac-project-root nil
"Path for an eventual existing trac issue tracker. "Path for an eventual existing trac issue tracker.
@ -366,6 +395,9 @@ This can be set with \\[svn-status-set-module-name].")
;;; hooks ;;; hooks
(defvar svn-log-edit-mode-hook nil "Hook run when entering `svn-log-edit-mode'.") (defvar svn-log-edit-mode-hook nil "Hook run when entering `svn-log-edit-mode'.")
(defvar svn-log-edit-done-hook nil "Hook run after commiting files via svn.") (defvar svn-log-edit-done-hook nil "Hook run after commiting files via svn.")
;; (put 'svn-log-edit-mode-hook 'risky-local-variable t)
;; (put 'svn-log-edit-done-hook 'risky-local-variable t)
;; already implied by "-hook" suffix
(defvar svn-status-coding-system nil (defvar svn-status-coding-system nil
"A special coding system is needed for the output of svn. "A special coding system is needed for the output of svn.
@ -441,6 +473,9 @@ This is always set together with `svn-status-recursive-commit'.")
(defvar svn-status-recursive-commit nil (defvar svn-status-recursive-commit nil
"Non-nil if the next commit should be recursive. "Non-nil if the next commit should be recursive.
This is always set together with `svn-status-files-to-commit'.") This is always set together with `svn-status-files-to-commit'.")
(defvar svn-log-edit-update-log-entry nil
"Revision number whose log entry is being edited.
This is nil if the log entry is for a new commit.")
(defvar svn-status-pre-commit-window-configuration nil) (defvar svn-status-pre-commit-window-configuration nil)
(defvar svn-status-pre-propedit-window-configuration nil) (defvar svn-status-pre-propedit-window-configuration nil)
(defvar svn-status-head-revision nil) (defvar svn-status-head-revision nil)
@ -457,16 +492,49 @@ This is always set together with `svn-status-files-to-commit'.")
(expand-file-name (expand-file-name
(or (or
(when (boundp 'temporary-file-directory) temporary-file-directory) ;emacs (when (boundp 'temporary-file-directory) temporary-file-directory) ;emacs
(when (fboundp 'temp-directory) (temp-directory)) ;xemacs ;; XEmacs 21.4.17 can return "/tmp/kalle" from (temp-directory).
;; `file-name-as-directory' adds a slash so we can append a file name.
(when (fboundp 'temp-directory) (file-name-as-directory (temp-directory)))
"/tmp/")) "The directory that is used to store temporary files for psvn.") "/tmp/")) "The directory that is used to store temporary files for psvn.")
;; Because `temporary-file-directory' is not a risky local variable in
;; GNU Emacs 22.0.51, we don't mark `svn-status-temp-dir' as such either.
(defvar svn-temp-suffix (make-temp-name ".")) (defvar svn-temp-suffix (make-temp-name "."))
(put 'svn-temp-suffix 'risky-local-variable t)
(defvar svn-status-temp-file-to-remove nil) (defvar svn-status-temp-file-to-remove nil)
(put 'svn-status-temp-file-to-remove 'risky-local-variable t)
(defvar svn-status-temp-arg-file (concat svn-status-temp-dir "svn.arg" svn-temp-suffix)) (defvar svn-status-temp-arg-file (concat svn-status-temp-dir "svn.arg" svn-temp-suffix))
(put 'svn-status-temp-arg-file 'risky-local-variable t)
(defvar svn-status-options nil) (defvar svn-status-options nil)
(defvar svn-status-remote)
(defvar svn-status-commit-rev-number nil) (defvar svn-status-commit-rev-number nil)
(defvar svn-status-operated-on-dot nil) (defvar svn-status-operated-on-dot nil)
(defvar svn-status-elided-list nil) (defvar svn-status-elided-list nil)
(defvar svn-status-custom-hide-function nil) (defvar svn-status-custom-hide-function nil)
;; (put 'svn-status-custom-hide-function 'risky-local-variable t)
;; already implied by "-function" suffix
(defvar svn-status-get-specific-revision-file-info)
(defvar svn-status-last-output-buffer-name)
(defvar svn-transient-buffers)
(defvar svn-ediff-windows)
(defvar svn-ediff-result)
;; Emacs 21 defines these in ediff-init.el but it seems more robust
;; to just declare the variables here than try to load that file.
;; It is Ediff's job to declare these as risky-local-variable if needed.
(defvar ediff-buffer-A)
(defvar ediff-buffer-B)
(defvar ediff-buffer-C)
(defvar ediff-quit-hook)
;; Ditto for log-edit.el.
(defvar log-edit-initial-files)
(defvar log-edit-callback)
(defvar log-edit-listfun)
;; Ediff does not use this variable in GNU Emacs 20.7, GNU Emacs 21.4,
;; nor XEmacs 21.4.17. However, pcl-cvs (a.k.a. pcvs) does.
;; TODO: Check if this should be moved into the "svn-" namespace.
(defvar ediff-after-quit-destination-buffer)
;; That is an example for the svn-status-custom-hide-function: ;; That is an example for the svn-status-custom-hide-function:
;; (setq svn-status-custom-hide-function 'svn-status-hide-pyc-files) ;; (setq svn-status-custom-hide-function 'svn-status-hide-pyc-files)
@ -587,7 +655,7 @@ Otherwise, return \"\"."
(if (fboundp 'point-at-eol) 'point-at-eol 'line-end-position)) (if (fboundp 'point-at-eol) 'point-at-eol 'line-end-position))
(defalias 'svn-point-at-bol (defalias 'svn-point-at-bol
(if (fboundp 'point-at-bol) 'point-at-bol 'line-beginning-position)) (if (fboundp 'point-at-bol) 'point-at-bol 'line-beginning-position))
(defalias 'svn-read-directory-name (defalias 'svn-read-directory-name
(if (fboundp 'read-directory-name) 'read-directory-name 'read-file-name)) (if (fboundp 'read-directory-name) 'read-directory-name 'read-file-name))
(eval-when-compile (eval-when-compile
@ -643,6 +711,7 @@ Use this instead of `alist', for XEmacs 21.4 compatibility."
(defvar svn-global-keymap nil "Global keymap for psvn.el. (defvar svn-global-keymap nil "Global keymap for psvn.el.
To bind this to a different key, customize `svn-status-prefix-key'.") To bind this to a different key, customize `svn-status-prefix-key'.")
(put 'svn-global-keymap 'risky-local-variable t)
(when (not svn-global-keymap) (when (not svn-global-keymap)
(setq svn-global-keymap (make-sparse-keymap)) (setq svn-global-keymap (make-sparse-keymap))
(define-key svn-global-keymap (kbd "s") 'svn-status-this-directory) (define-key svn-global-keymap (kbd "s") 'svn-status-this-directory)
@ -651,8 +720,18 @@ To bind this to a different key, customize `svn-status-prefix-key'.")
(define-key svn-global-keymap (kbd "=") 'svn-status-show-svn-diff) (define-key svn-global-keymap (kbd "=") 'svn-status-show-svn-diff)
(define-key svn-global-keymap (kbd "c") 'svn-status-commit)) (define-key svn-global-keymap (kbd "c") 'svn-status-commit))
(defvar svn-status-diff-mode-map ()
"Keymap used in `svn-status-diff-mode' for additional commands that are not defined in diff-mode.")
(put 'svn-status-diff-mode-map 'risky-local-variable t) ;for Emacs 20.7
(when (not svn-status-diff-mode-map)
(setq svn-status-diff-mode-map (copy-keymap diff-mode-shared-map))
(define-key svn-status-diff-mode-map [?w] 'svn-status-diff-save-current-defun-as-kill))
(defvar svn-global-trac-map () (defvar svn-global-trac-map ()
"Subkeymap used in `svn-global-keymap' for trac issue tracker commands.") "Subkeymap used in `svn-global-keymap' for trac issue tracker commands.")
(put 'svn-global-trac-map 'risky-local-variable t) ;for Emacs 20.7
(when (not svn-global-trac-map) (when (not svn-global-trac-map)
(setq svn-global-trac-map (make-sparse-keymap)) (setq svn-global-trac-map (make-sparse-keymap))
(define-key svn-global-trac-map (kbd "t") 'svn-trac-browse-timeline) (define-key svn-global-trac-map (kbd "t") 'svn-trac-browse-timeline)
@ -752,6 +831,25 @@ If ARG then pass the -u argument to `svn status'."
(svn-status dir) (svn-status dir)
(error "%s is not a directory" dir)))) (error "%s is not a directory" dir))))
(defun svn-process-environment ()
"Construct the environment for the svn process.
It is a combination of `svn-status-svn-environment-var-list' and
the usual `process-environment'."
;; If there are duplicate elements in `process-environment', then GNU
;; Emacs 21.4 guarantees that the first one wins; but GNU Emacs 20.7
;; and XEmacs 21.4.17 don't document what happens. We'll just remove
;; any duplicates ourselves, then. This also gives us an opportunity
;; to handle the "VARIABLE" syntax that none of them supports.
(loop with found = '()
for elt in (append svn-status-svn-environment-var-list
process-environment)
for has-value = (string-match "=" elt)
for name = (substring elt 0 has-value)
unless (member name found)
do (push name found)
and when has-value
collect elt))
(defun svn-run-svn (run-asynchron clear-process-buffer cmdtype &rest arglist) (defun svn-run-svn (run-asynchron clear-process-buffer cmdtype &rest arglist)
"Run svn with arguments ARGLIST. "Run svn with arguments ARGLIST.
@ -799,20 +897,29 @@ is prompted for give extra arguments, which are appended to ARGLIST."
(setq svn-status-mode-line-process-status (format " running %s" cmdtype)) (setq svn-status-mode-line-process-status (format " running %s" cmdtype))
(svn-status-update-mode-line) (svn-status-update-mode-line)
(sit-for 0.1) (sit-for 0.1)
(when svn-status-svn-environment-var-list
(setq arglist (append svn-status-svn-environment-var-list
(list svn-status-svn-executable)
arglist))
(setq svn-exe "env"))
(if run-asynchron (if run-asynchron
(progn (progn
;;(message "running asynchron: %s %S" svn-exe arglist) ;;(message "running asynchron: %s %S" svn-exe arglist)
(setq svn-proc (apply 'start-process "svn" proc-buf svn-exe arglist)) (let ((process-environment (svn-process-environment))
(process-connection-type nil))
;; Communicate with the subprocess via pipes rather
;; than via a pseudoterminal, so that if the svn+ssh
;; scheme is being used, SSH will not ask for a
;; passphrase via stdio; psvn.el is currently unable
;; to answer such prompts. Instead, SSH will run
;; x11-ssh-askpass if possible. If Emacs is being
;; run on a TTY without $DISPLAY, this will fail; in
;; such cases, the user should start ssh-agent and
;; then run ssh-add explicitly.
(setq svn-proc (apply 'start-process "svn" proc-buf svn-exe arglist)))
(set-process-sentinel svn-proc 'svn-process-sentinel) (set-process-sentinel svn-proc 'svn-process-sentinel)
(when svn-status-track-user-input (when svn-status-track-user-input
(set-process-filter svn-proc 'svn-process-filter))) (set-process-filter svn-proc 'svn-process-filter)))
;;(message "running synchron: %s %S" svn-exe arglist) ;;(message "running synchron: %s %S" svn-exe arglist)
(apply 'call-process svn-exe nil proc-buf nil arglist) (let ((process-environment (svn-process-environment)))
;; `call-process' ignores `process-connection-type' and
;; never opens a pseudoterminal.
(apply 'call-process svn-exe nil proc-buf nil arglist))
(setq svn-status-mode-line-process-status "") (setq svn-status-mode-line-process-status "")
(svn-status-update-mode-line))))) (svn-status-update-mode-line)))))
(error "You can only run one svn process at once!"))) (error "You can only run one svn process at once!")))
@ -1125,14 +1232,22 @@ A and B must be line-info's."
(error (message "psvn: could not install menu"))) (error (message "psvn: could not install menu")))
(defvar svn-status-mode-map () "Keymap used in `svn-status-mode' buffers.") (defvar svn-status-mode-map () "Keymap used in `svn-status-mode' buffers.")
(put 'svn-status-mode-map 'risky-local-variable t) ;for Emacs 20.7
(defvar svn-status-mode-mark-map ()
"Subkeymap used in `svn-status-mode' for mark commands.")
(put 'svn-status-mode-mark-map 'risky-local-variable t) ;for Emacs 20.7
(defvar svn-status-mode-property-map () (defvar svn-status-mode-property-map ()
"Subkeymap used in `svn-status-mode' for property commands.") "Subkeymap used in `svn-status-mode' for property commands.")
(put 'svn-status-mode-property-map 'risky-local-variable t) ;for Emacs 20.7
(defvar svn-status-mode-options-map () (defvar svn-status-mode-options-map ()
"Subkeymap used in `svn-status-mode' for option commands.") "Subkeymap used in `svn-status-mode' for option commands.")
(put 'svn-status-mode-options-map 'risky-local-variable t) ;for Emacs 20.7
(defvar svn-status-mode-trac-map () (defvar svn-status-mode-trac-map ()
"Subkeymap used in `svn-status-mode' for trac issue tracker commands.") "Subkeymap used in `svn-status-mode' for trac issue tracker commands.")
(put 'svn-status-mode-trac-map 'risky-local-variable t) ;for Emacs 20.7
(defvar svn-status-mode-extension-map () (defvar svn-status-mode-extension-map ()
"Subkeymap used in `svn-status-mode' for some seldom used commands.") "Subkeymap used in `svn-status-mode' for some seldom used commands.")
(put 'svn-status-mode-extension-map 'risky-local-variable t) ;for Emacs 20.7
(when (not svn-status-mode-map) (when (not svn-status-mode-map)
(setq svn-status-mode-map (make-sparse-keymap)) (setq svn-status-mode-map (make-sparse-keymap))
@ -1203,6 +1318,8 @@ A and B must be line-info's."
(define-key svn-status-mode-map (kbd "C-n") 'svn-status-next-line) (define-key svn-status-mode-map (kbd "C-n") 'svn-status-next-line)
(define-key svn-status-mode-map (kbd "C-p") 'svn-status-previous-line) (define-key svn-status-mode-map (kbd "C-p") 'svn-status-previous-line)
(define-key svn-status-mode-map (kbd "n") 'svn-status-next-line)
(define-key svn-status-mode-map (kbd "p") 'svn-status-previous-line)
(define-key svn-status-mode-map (kbd "<down>") 'svn-status-next-line) (define-key svn-status-mode-map (kbd "<down>") 'svn-status-next-line)
(define-key svn-status-mode-map (kbd "<up>") 'svn-status-previous-line) (define-key svn-status-mode-map (kbd "<up>") 'svn-status-previous-line)
(define-key svn-status-mode-map (kbd "C-x C-j") 'svn-status-dired-jump) (define-key svn-status-mode-map (kbd "C-x C-j") 'svn-status-dired-jump)
@ -1240,6 +1357,7 @@ A and B must be line-info's."
(setq svn-status-mode-extension-map (make-sparse-keymap)) (setq svn-status-mode-extension-map (make-sparse-keymap))
(define-key svn-status-mode-extension-map (kbd "v") 'svn-status-resolved) (define-key svn-status-mode-extension-map (kbd "v") 'svn-status-resolved)
(define-key svn-status-mode-extension-map (kbd "X") 'svn-status-resolve-conflicts) (define-key svn-status-mode-extension-map (kbd "X") 'svn-status-resolve-conflicts)
(define-key svn-status-mode-extension-map (kbd "e") 'svn-status-export)
(define-key svn-status-mode-map (kbd "X") svn-status-mode-extension-map)) (define-key svn-status-mode-map (kbd "X") svn-status-mode-extension-map))
(when (not svn-status-mode-options-map) (when (not svn-status-mode-options-map)
(setq svn-status-mode-options-map (make-sparse-keymap)) (setq svn-status-mode-options-map (make-sparse-keymap))
@ -1276,6 +1394,7 @@ A and B must be line-info's."
["svn mkdir..." svn-status-make-directory t] ["svn mkdir..." svn-status-make-directory t]
["svn mv..." svn-status-mv t] ["svn mv..." svn-status-mv t]
["svn rm..." svn-status-rm t] ["svn rm..." svn-status-rm t]
["svn export..." svn-status-export t]
["Up Directory" svn-status-examine-parent t] ["Up Directory" svn-status-examine-parent t]
["Elide Directory" svn-status-toggle-elide t] ["Elide Directory" svn-status-toggle-elide t]
["svn revert" svn-status-revert t] ["svn revert" svn-status-revert t]
@ -2374,8 +2493,9 @@ Consider svn-status-window-alist to choose the buffer name."
(when svn-status-last-output-buffer-name (when svn-status-last-output-buffer-name
(if window-mode (if window-mode
(progn (progn
(when (string= (buffer-name) svn-status-buffer-name) (unless svn-status-preserve-window-configuration
(delete-other-windows)) (when (string= (buffer-name) svn-status-buffer-name)
(delete-other-windows)))
(pop-to-buffer "*svn-process*") (pop-to-buffer "*svn-process*")
(switch-to-buffer (get-buffer-create svn-status-last-output-buffer-name)) (switch-to-buffer (get-buffer-create svn-status-last-output-buffer-name))
(let ((buffer-read-only nil)) (let ((buffer-read-only nil))
@ -2456,7 +2576,9 @@ If ARG then prompt for revision to diff against, else compare working copy with
(when (eq revision :ask) (when (eq revision :ask)
(setq revision (svn-status-read-revision-string (setq revision (svn-status-read-revision-string
"Diff with files for version: " "PREV"))) "Diff with files for version: " "PREV")))
(let ((clear-buf t))
(let ((clear-buf t)
(beginning nil))
(dolist (line-info line-infos) (dolist (line-info line-infos)
(svn-run-svn nil clear-buf 'diff "diff" svn-status-default-diff-arguments (svn-run-svn nil clear-buf 'diff "diff" svn-status-default-diff-arguments
"-r" (if (eq revision :auto) "-r" (if (eq revision :auto)
@ -2465,19 +2587,59 @@ If ARG then prompt for revision to diff against, else compare working copy with
revision) revision)
(unless recursive "--non-recursive") (unless recursive "--non-recursive")
(svn-status-line-info->filename line-info)) (svn-status-line-info->filename line-info))
(setq clear-buf nil))) (setq clear-buf nil)
(svn-status-diff-mode))
(defun svn-status-diff-mode () ;; "svn diff --non-recursive" skips only subdirectories, not files.
;; But a non-recursive diff via psvn should skip files too, because
;; the user would have marked them if he wanted them to be compared.
;; So we'll look for the "Index: foo" line that marks the first file
;; in the diff output, and delete it and everything that follows.
;; This is made more complicated by the fact that `svn-status-activate-diff-mode'
;; expects the output to be left in the *svn-process* buffer.
(unless recursive
;; Check `directory-p' relative to the `default-directory' of the
;; "*svn-status*" buffer, not that of the "*svn-process*" buffer.
(let ((directory-p (svn-status-line-info->directory-p line-info)))
(with-current-buffer "*svn-process*"
(when directory-p
(goto-char (or beginning (point-min)))
(when (re-search-forward "^Index: " nil t)
(delete-region (match-beginning 0) (point-max))))
(goto-char (setq beginning (point-max))))))))
(svn-status-activate-diff-mode))
(defun svn-status-diff-save-current-defun-as-kill ()
"Copy the function name for the change at point to the kill-ring.
That function uses `add-log-current-defun'"
(interactive)
(let ((func-name (add-log-current-defun)))
(if func-name
(progn
(kill-new func-name)
(message "Copied %S" func-name))
(message "No current defun detected."))))
(defun svn-status-activate-diff-mode ()
"Show the *svn-process* buffer, using the diff-mode." "Show the *svn-process* buffer, using the diff-mode."
(svn-status-show-process-output 'diff t) (svn-status-show-process-output 'diff t)
(save-excursion (save-excursion
(set-buffer svn-status-last-output-buffer-name) (set-buffer svn-status-last-output-buffer-name)
(when (fboundp 'diff-mode) ;not in GNU Emacs 20.7 (svn-status-diff-mode)
(diff-mode)
(font-lock-fontify-buffer))
(setq buffer-read-only t))) (setq buffer-read-only t)))
(define-derived-mode svn-status-diff-mode fundamental-mode "svn-diff"
"Major mode to display svn diffs. Derives from `diff-mode'.
Commands:
\\{svn-status-diff-mode-map}
"
(let ((diff-mode-shared-map (copy-keymap svn-status-diff-mode-map))
major-mode mode-name)
(diff-mode)))
(defun svn-status-show-process-buffer () (defun svn-status-show-process-buffer ()
"Show the content of the *svn-process* buffer" "Show the content of the *svn-process* buffer"
(interactive) (interactive)
@ -2662,9 +2824,20 @@ If no files have been marked, commit recursively the file at point."
(setq default-directory dir) (setq default-directory dir)
(unless use-existing-buffer (unless use-existing-buffer
(when (and svn-log-edit-file-name (file-readable-p svn-log-edit-file-name)) (when (and svn-log-edit-file-name (file-readable-p svn-log-edit-file-name))
(insert-file svn-log-edit-file-name))) (insert-file-contents svn-log-edit-file-name)))
(svn-log-edit-mode))) (svn-log-edit-mode)))
(defun svn-status-export ()
"Run `svn export' for the current working copy.
Ask the user for the destination path.
`svn-status-default-export-directory' is suggested as export directory."
(interactive)
(let* ((src default-directory)
(dir1-name (nth 1 (nreverse (split-string src "/"))))
(dest (read-file-name (format "Export %s to " src) (concat svn-status-default-export-directory dir1-name))))
(svn-run-svn t t 'export "export" (expand-file-name src) (expand-file-name dest))
(message "svn-status-export %s %s" src dest)))
(defun svn-status-cleanup (arg) (defun svn-status-cleanup (arg)
"Run `svn cleanup' on all selected files. "Run `svn cleanup' on all selected files.
See `svn-status-marked-files' for what counts as selected. See `svn-status-marked-files' for what counts as selected.
@ -3161,6 +3334,7 @@ When called with a prefix argument, it is possible to enter a new property."
;; -------------------------------------------------------------------------------- ;; --------------------------------------------------------------------------------
(defvar svn-prop-edit-mode-map () "Keymap used in `svn-prop-edit-mode' buffers.") (defvar svn-prop-edit-mode-map () "Keymap used in `svn-prop-edit-mode' buffers.")
(put 'svn-prop-edit-mode-map 'risky-local-variable t) ;for Emacs 20.7
(when (not svn-prop-edit-mode-map) (when (not svn-prop-edit-mode-map)
(setq svn-prop-edit-mode-map (make-sparse-keymap)) (setq svn-prop-edit-mode-map (make-sparse-keymap))
@ -3244,6 +3418,9 @@ Commands:
;; -------------------------------------------------------------------------------- ;; --------------------------------------------------------------------------------
(defvar svn-log-edit-mode-map () "Keymap used in `svn-log-edit-mode' buffers.") (defvar svn-log-edit-mode-map () "Keymap used in `svn-log-edit-mode' buffers.")
(put 'svn-log-edit-mode-map 'risky-local-variable t) ;for Emacs 20.7
(defvar svn-log-edit-mode-menu) ;really defined with `easy-menu-define' below.
(if svn-log-edit-use-log-edit-mode (if svn-log-edit-use-log-edit-mode
(define-derived-mode svn-log-edit-mode log-edit-mode "svn-log-edit" (define-derived-mode svn-log-edit-mode log-edit-mode "svn-log-edit"
@ -3293,6 +3470,7 @@ Commands:
["Show files to commit" svn-log-edit-show-files-to-commit t] ["Show files to commit" svn-log-edit-show-files-to-commit t]
["Erase buffer" svn-log-edit-erase-edit-buffer] ["Erase buffer" svn-log-edit-erase-edit-buffer]
["Abort" svn-log-edit-abort t])) ["Abort" svn-log-edit-abort t]))
(put 'svn-log-edit-mode-menu 'risky-local-variable t)
(defun svn-log-edit-abort () (defun svn-log-edit-abort ()
(interactive) (interactive)
@ -3403,6 +3581,7 @@ If ARG then show diff between some other version of the selected files."
;; -------------------------------------------------------------------------------- ;; --------------------------------------------------------------------------------
(defvar svn-log-view-mode-map () "Keymap used in `svn-log-view-mode' buffers.") (defvar svn-log-view-mode-map () "Keymap used in `svn-log-view-mode' buffers.")
(put 'svn-log-view-mode-map 'risky-local-variable t) ;for Emacs 20.7
(when (not svn-log-view-mode-map) (when (not svn-log-view-mode-map)
(setq svn-log-view-mode-map (make-sparse-keymap)) (setq svn-log-view-mode-map (make-sparse-keymap))
@ -3422,6 +3601,7 @@ If ARG then show diff between some other version of the selected files."
(defvar svn-log-view-font-lock-keywords (defvar svn-log-view-font-lock-keywords
'(("^r.+" . font-lock-keyword-face) '(("^r.+" . font-lock-keyword-face)
"Keywords in svn-log-view-mode.")) "Keywords in svn-log-view-mode."))
(put 'svn-log-view-font-lock-keywords 'risky-local-variable t) ;for Emacs 20.7
(define-derived-mode svn-log-view-mode fundamental-mode "svn-log-view" (define-derived-mode svn-log-view-mode fundamental-mode "svn-log-view"
@ -3458,7 +3638,7 @@ When called with a prefix argument, ask the user for the revision."
(when arg (when arg
(setq rev-arg (read-string "Revision for changeset: " rev-arg))) (setq rev-arg (read-string "Revision for changeset: " rev-arg)))
(svn-run-svn nil t 'diff "diff" (concat "-r" rev-arg)) (svn-run-svn nil t 'diff "diff" (concat "-r" rev-arg))
(svn-status-diff-mode))) (svn-status-activate-diff-mode)))
(defun svn-log-edit-log-entry () (defun svn-log-edit-log-entry ()
"Edit the given log entry." "Edit the given log entry."
@ -3612,7 +3792,7 @@ The conflicts must be marked with rcsmerge conflict markers."
(save-excursion (save-excursion
(set-buffer your-buffer) (set-buffer your-buffer)
(erase-buffer) (erase-buffer)
(insert-buffer result-buffer) (insert-buffer-substring result-buffer)
(goto-char (point-min)) (goto-char (point-min))
(while (re-search-forward "^<<<<<<< .mine\n" nil t) (while (re-search-forward "^<<<<<<< .mine\n" nil t)
(setq found t) (setq found t)
@ -3631,7 +3811,7 @@ The conflicts must be marked with rcsmerge conflict markers."
(error "No conflict markers found"))) (error "No conflict markers found")))
(set-buffer other-buffer) (set-buffer other-buffer)
(erase-buffer) (erase-buffer)
(insert-buffer result-buffer) (insert-buffer-substring result-buffer)
(goto-char (point-min)) (goto-char (point-min))
(while (re-search-forward "^<<<<<<< .mine\n" nil t) (while (re-search-forward "^<<<<<<< .mine\n" nil t)
(let ((start (match-beginning 0))) (let ((start (match-beginning 0)))
@ -3666,7 +3846,7 @@ The conflicts must be marked with rcsmerge conflict markers."
(ediff-cleanup-mess) (ediff-cleanup-mess)
(set-buffer result) (set-buffer result)
(erase-buffer) (erase-buffer)
(insert-buffer buffer-C) (insert-buffer-substring buffer-C)
(kill-buffer buffer-A) (kill-buffer buffer-A)
(kill-buffer buffer-B) (kill-buffer buffer-B)
(kill-buffer buffer-C) (kill-buffer buffer-C)

View File

@ -1 +1 @@
95f9b43801b4d9bc071564bca2116763 subversion-1.2.3.tar.gz 0d91a7fe152d0373044c47c54deb2c9a subversion-1.3.0.tar.gz

View File

@ -4,9 +4,9 @@ ensure that executables in the test suite are *not* built using
-pie, since that doesn't work when main() is not itself an -pie, since that doesn't work when main() is not itself an
object built with -pie. object built with -pie.
--- subversion-1.2.0/build/generator/gen_base.py.pie --- subversion-1.3.0/build/generator/gen_base.py.pie
+++ subversion-1.2.0/build/generator/gen_base.py +++ subversion-1.3.0/build/generator/gen_base.py
@@ -375,6 +375,9 @@ @@ -399,6 +399,9 @@
self.manpages = options.get('manpages', '') self.manpages = options.get('manpages', '')
self.testing = options.get('testing') self.testing = options.get('testing')
@ -16,7 +16,7 @@ object built with -pie.
def add_dependencies(self): def add_dependencies(self):
TargetLinked.add_dependencies(self) TargetLinked.add_dependencies(self)
@@ -417,8 +420,11 @@ @@ -441,8 +444,11 @@
self.msvc_fake = options.get('msvc-fake') == 'yes' # has fake target self.msvc_fake = options.get('msvc-fake') == 'yes' # has fake target
self.msvc_export = string.split(options.get('msvc-export', '')) self.msvc_export = string.split(options.get('msvc-export', ''))
@ -30,9 +30,9 @@ object built with -pie.
class TargetApacheMod(TargetLib): class TargetApacheMod(TargetLib):
--- subversion-1.2.0/Makefile.in.pie --- subversion-1.3.0/Makefile.in.pie
+++ subversion-1.2.0/Makefile.in +++ subversion-1.3.0/Makefile.in
@@ -145,9 +145,10 @@ @@ -143,9 +143,10 @@
CPPFLAGS = @CPPFLAGS@ $(EXTRA_CPPFLAGS) CPPFLAGS = @CPPFLAGS@ $(EXTRA_CPPFLAGS)
LDFLAGS = @LDFLAGS@ $(EXTRA_LDFLAGS) LDFLAGS = @LDFLAGS@ $(EXTRA_LDFLAGS)
@ -45,7 +45,7 @@ object built with -pie.
# special compilation for files destined for mod_dav_svn # special compilation for files destined for mod_dav_svn
COMPILE_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) $(APACHE_INCLUDES) $(INCLUDES) -o $@ -c COMPILE_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) $(APACHE_INCLUDES) $(INCLUDES) -o $@ -c
@@ -162,8 +163,11 @@ @@ -160,8 +161,11 @@
COMPILE_JAVAHL_JAVAC = $(JAVAC) $(JAVAC_FLAGS) COMPILE_JAVAHL_JAVAC = $(JAVAC) $(JAVAC_FLAGS)
COMPILE_JAVAHL_JAVAH = $(JAVAH) COMPILE_JAVAHL_JAVAH = $(JAVAH)
@ -59,14 +59,14 @@ object built with -pie.
# special link rule for mod_dav_svn # special link rule for mod_dav_svn
LINK_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(APACHE_LIBEXECDIR) -avoid-version -module LINK_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(APACHE_LIBEXECDIR) -avoid-version -module
--- subversion-1.2.0/build.conf.pie --- subversion-1.3.0/build.conf.pie
+++ subversion-1.2.0/build.conf +++ subversion-1.3.0/build.conf
@@ -346,7 +346,7 @@ @@ -356,7 +356,7 @@
sources = swigutil_py.c lang = python
libs = libsvn_subr libsvn_delta aprutil apriconv apr path = subversion/bindings/swig/python/libsvn_swig_py
# need SWIG_LDFLAGS to be able to link swig_runtime libs = libsvn_subr libsvn_delta libsvn_wc aprutil apriconv apr
-link-cmd = $(LINK) $(SWIG_LDFLAGS) $(SWIG_PY_LIBS) -link-cmd = $(LINK) $(SWIG_PY_LIBS)
+link-cmd = $(LINK_LIB) $(SWIG_LDFLAGS) $(SWIG_PY_LIBS) +link-cmd = $(LINK_LIB) $(SWIG_PY_LIBS)
install = swig-py-lib install = swig-py-lib
# need special build rule to include -DSWIGPYTHON # need special build rule to include -DSWIGPYTHON
compile-cmd = $(COMPILE_SWIG_PY) compile-cmd = $(COMPILE_SWIG_PY)

View File

@ -10,8 +10,8 @@
Summary: Modern Version Control System designed to replace CVS Summary: Modern Version Control System designed to replace CVS
Name: subversion Name: subversion
Version: 1.2.3 Version: 1.3.0
Release: 6 Release: 2
License: BSD License: BSD
Group: Development/Tools Group: Development/Tools
URL: http://subversion.tigris.org/ URL: http://subversion.tigris.org/
@ -19,7 +19,6 @@ Source0: http://subversion.tigris.org/tarballs/subversion-%{version}.tar.gz
Source1: subversion.conf Source1: subversion.conf
Source3: filter-requires.sh Source3: filter-requires.sh
Source4: http://www.xsteve.at/prg/emacs/psvn.el Source4: http://www.xsteve.at/prg/emacs/psvn.el
Patch1: subversion-0.24.2-swig.patch
Patch2: subversion-0.20.1-deplibs.patch Patch2: subversion-0.20.1-deplibs.patch
Patch3: subversion-0.31.0-rpath.patch Patch3: subversion-0.31.0-rpath.patch
Patch6: subversion-1.0.3-pie.patch Patch6: subversion-1.0.3-pie.patch
@ -97,7 +96,6 @@ This package includes the Ruby bindings to the Subversion libraries.
%prep %prep
%setup -q %setup -q
%patch1 -p1 -b .swig
%patch2 -p1 -b .deplibs %patch2 -p1 -b .deplibs
%patch3 -p1 -b .rpath %patch3 -p1 -b .rpath
%patch6 -p1 -b .pie %patch6 -p1 -b .pie
@ -246,6 +244,10 @@ rm -rf ${RPM_BUILD_ROOT}
%endif %endif
%changelog %changelog
* Wed Jan 4 2006 Joe Orton <jorton@redhat.com> 1.3.0-2
- update to 1.3.0 (#176833)
- update to psvn.el r17921 Stefan Reichoer
* Mon Dec 12 2005 Joe Orton <jorton@redhat.com> 1.2.3-6 * Mon Dec 12 2005 Joe Orton <jorton@redhat.com> 1.2.3-6
- fix ownership of libsvnjavahl.* (#175289) - fix ownership of libsvnjavahl.* (#175289)
- try building javahl on ia64/ppc64 again - try building javahl on ia64/ppc64 again

View File

@ -1 +1 @@
subversion-1.2.3.tar.gz subversion-1.3.0.tar.gz

View File

@ -1,161 +1,231 @@
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.6 (GNU/Linux) Version: GnuPG v1.4.1 (GNU/Linux)
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
=V64X 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
n3XvPxBbvJUFwy3Y7bEr4YW/Cy9f
=4sB1
-----END PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----