Compare commits

...

5 Commits

Author SHA1 Message Date
jorton 0566451834 - update to 1.6.11 2010-04-30 08:54:12 +00:00
jorton ab3b474a32 - update to 1.6.9 2010-02-13 16:41:12 +00:00
Bill Nottingham 1cce504a3f Fix typo that causes a failure to update the common directory. (releng
#2781)
2009-11-26 01:44:53 +00:00
jorton 6e2e2f86b8 - update to 1.6.6 2009-11-08 17:52:42 +00:00
Jesse Keating cdd0cee31e Initialize branch F-12 for subversion 2009-09-29 06:57:59 +00:00
13 changed files with 582 additions and 246 deletions

View File

@ -1 +1,2 @@
subversion-1.6.5.tar.bz2 subversion-1.6.5.tar.bz2
subversion-1.6.6.tar.bz2

View File

@ -1,11 +1,11 @@
# Makefile for source rpm: subversion # Makefile for source rpm: subversion
# $Id: Makefile,v 1.3 2004/09/30 10:49:48 jorton Exp $ # $Id: Makefile,v 1.4 2007/10/15 19:24:42 notting Exp $
NAME := subversion NAME := subversion
SPECFILE = $(firstword $(wildcard *.spec)) SPECFILE = $(firstword $(wildcard *.spec))
UPSTREAM_CHECKS := asc UPSTREAM_CHECKS := asc
define find-makefile-common define find-makefile-common
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
endef endef
MAKEFILE_COMMON := $(shell $(find-makefile-common)) MAKEFILE_COMMON := $(shell $(find-makefile-common))

1
branch Normal file
View File

@ -0,0 +1 @@
F-12

362
psvn.el
View File

@ -1,8 +1,8 @@
;;; psvn.el --- Subversion interface for emacs ;;; psvn.el --- Subversion interface for emacs
;; Copyright (C) 2002-2008 by Stefan Reichoer ;; Copyright (C) 2002-2009 by Stefan Reichoer
;; Author: Stefan Reichoer <stefan@xsteve.at> ;; Author: Stefan Reichoer <stefan@xsteve.at>
;; $Id: psvn.el 33557 2008-10-08 20:01:12Z xsteve $ ;; $Id: psvn.el 40299 2009-10-29 19:38:54Z 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
@ -22,7 +22,7 @@
;;; Commentary ;;; Commentary
;; psvn.el is tested with GNU Emacs 21.3 on windows, debian linux, ;; psvn.el is tested with GNU Emacs 21.3 on windows, debian linux,
;; freebsd5, red hat el4, ubuntu edgy with svn 1.4.0 ;; freebsd5, red hat el4, ubuntu intrepid with svn 1.5.1
;; psvn.el needs at least svn 1.1.0 ;; psvn.el needs at least svn 1.1.0
;; if you upgrade to a higher version, you need to do a fresh checkout ;; if you upgrade to a higher version, you need to do a fresh checkout
@ -73,6 +73,7 @@
;; e - svn-status-toggle-edit-cmd-flag ;; e - svn-status-toggle-edit-cmd-flag
;; ? - svn-status-toggle-hide-unknown ;; ? - svn-status-toggle-hide-unknown
;; _ - svn-status-toggle-hide-unmodified ;; _ - svn-status-toggle-hide-unmodified
;; z - svn-status-toggle-hide-externals
;; m - svn-status-set-user-mark ;; m - svn-status-set-user-mark
;; u - svn-status-unset-user-mark ;; u - svn-status-unset-user-mark
;; $ - svn-status-toggle-elide ;; $ - svn-status-toggle-elide
@ -103,6 +104,7 @@
;; P i - svn-status-property-ignore-file ;; P i - svn-status-property-ignore-file
;; P I - svn-status-property-ignore-file-extension ;; P I - svn-status-property-ignore-file-extension
;; P C-i - svn-status-property-edit-svn-ignore ;; P C-i - svn-status-property-edit-svn-ignore
;; P X e - svn-status-property-edit-svn-externals
;; P k - svn-status-property-set-keyword-list ;; P k - svn-status-property-set-keyword-list
;; P K i - svn-status-property-set-keyword-id ;; P K i - svn-status-property-set-keyword-id
;; P K d - svn-status-property-set-keyword-date ;; P K d - svn-status-property-set-keyword-date
@ -245,6 +247,7 @@
(eval-when-compile (require 'dired)) (eval-when-compile (require 'dired))
(eval-when-compile (require 'ediff-util)) (eval-when-compile (require 'ediff-util))
(eval-when-compile (require 'ediff-wind)) (eval-when-compile (require 'ediff-wind))
(eval-when-compile (require 'vc-hooks))
(eval-when-compile (require 'elp)) (eval-when-compile (require 'elp))
(eval-when-compile (require 'pp)) (eval-when-compile (require 'pp))
@ -253,7 +256,7 @@
(require 'diff-mode)) (require 'diff-mode))
(error nil)) (error nil))
(defconst svn-psvn-revision "$Id: psvn.el 33557 2008-10-08 20:01:12Z xsteve $" (defconst svn-psvn-revision "$Id: psvn.el 40299 2009-10-29 19:38:54Z xsteve $"
"The revision number of psvn.") "The revision number of psvn.")
;;; user setable variables ;;; user setable variables
@ -302,6 +305,11 @@ This can be toggled with \\[svn-status-toggle-hide-unknown]."
This can be toggled with \\[svn-status-toggle-hide-unmodified]." This can be toggled with \\[svn-status-toggle-hide-unmodified]."
:type 'boolean :type 'boolean
:group 'psvn) :group 'psvn)
(defcustom svn-status-hide-externals nil
"*Hide external files in `svn-status-buffer-name' buffer.
This can be toggled with \\[svn-status-toggle-hide-externals]."
:type 'boolean
:group 'psvn)
(defcustom svn-status-sort-status-buffer t (defcustom svn-status-sort-status-buffer t
"*Whether to sort the `svn-status-buffer-name' buffer. "*Whether to sort the `svn-status-buffer-name' buffer.
@ -414,6 +422,12 @@ Any non-nil value overrides that variable, with the same syntax."
;; (put 'svn-browse-url-function 'risky-local-variable t) ;; (put 'svn-browse-url-function 'risky-local-variable t)
;; already implied by "-function" suffix ;; already implied by "-function" suffix
(defcustom svn-log-edit-header
"## Lines starting with '## ' will be removed from the log message.\n"
"*Header content of the *svn-log* buffer"
:type 'string
:group 'psvn)
(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))
"An alist to specify which windows should be used for svn command outputs. "An alist to specify which windows should be used for svn command outputs.
@ -562,7 +576,7 @@ These link handlers must be registered via `svn-log-register-link-handler'")
;; (put 'svn-log-edit-done-hook 'risky-local-variable t) ;; (put 'svn-log-edit-done-hook 'risky-local-variable t)
;; already implied by "-hook" suffix ;; already implied by "-hook" suffix
(defvar svn-post-process-svn-output-hook nil "Hook that can be used to preprocess the output from svn. (defvar svn-post-process-svn-output-hook 'svn-fixup-tramp-output-maybe "Hook that can be used to preprocess the output from svn.
The function `svn-status-remove-control-M' can be useful for that hook") The function `svn-status-remove-control-M' can be useful for that hook")
(when (eq system-type 'windows-nt) (when (eq system-type 'windows-nt)
@ -936,7 +950,7 @@ If POS is nil, use current buffer location."
(defun svn-substring-no-properties (string &optional from to) (defun svn-substring-no-properties (string &optional from to)
(if (fboundp 'substring-no-properties) (if (fboundp 'substring-no-properties)
(substring-no-properties string from to) (substring-no-properties string from to)
(substring string from to))) (substring string (or from 0) to)))
; xemacs ; xemacs
;; Evaluate the defsubst at compile time, so that the byte compiler ;; Evaluate the defsubst at compile time, so that the byte compiler
@ -948,6 +962,14 @@ If POS is nil, use current buffer location."
(defsubst svn-match-string-no-properties (match) (defsubst svn-match-string-no-properties (match)
(buffer-substring-no-properties (match-beginning match) (match-end match))))) (buffer-substring-no-properties (match-beginning match) (match-end match)))))
; XEmacs doesn't have a function `help-buffer'
(eval-and-compile
(if (fboundp 'help-buffer)
(defalias 'svn-help-buffer 'help-buffer) ; FSF Emacs
(defun svn-help-buffer ()
(buffer-name (get-buffer-create (help-buffer-name "SVN")))))) ; XEmacs
;; XEmacs 21.4.17 does not have an `alist' widget. Define a replacement. ;; XEmacs 21.4.17 does not have an `alist' widget. Define a replacement.
;; To find out whether the `alist' widget exists, we cannot check just ;; To find out whether the `alist' widget exists, we cannot check just
;; (get 'alist 'widget-type), because GNU Emacs 21.4 defines it in ;; (get 'alist 'widget-type), because GNU Emacs 21.4 defines it in
@ -1010,7 +1032,8 @@ To bind this to a different key, customize `svn-status-prefix-key'.")
(define-key svn-global-keymap (kbd "f r") 'svn-file-revert) (define-key svn-global-keymap (kbd "f r") 'svn-file-revert)
(define-key svn-global-keymap (kbd "c") 'svn-status-commit) (define-key svn-global-keymap (kbd "c") 'svn-status-commit)
(define-key svn-global-keymap (kbd "S") 'svn-status-switch-to-status-buffer) (define-key svn-global-keymap (kbd "S") 'svn-status-switch-to-status-buffer)
(define-key svn-global-keymap (kbd "o") 'svn-status-pop-to-status-buffer)) (define-key svn-global-keymap (kbd "o") 'svn-status-pop-to-status-buffer)
(define-key svn-global-keymap (kbd "C-k") 'svn-process-kill))
(defvar svn-status-diff-mode-map () (defvar svn-status-diff-mode-map ()
"Keymap used in `svn-status-diff-mode' for additional commands that are not defined in diff-mode.") "Keymap used in `svn-status-diff-mode' for additional commands that are not defined in diff-mode.")
@ -1161,13 +1184,14 @@ If there is no .svn directory, examine if there is CVS and run
(if arg "-u" ""))))) (if arg "-u" "")))))
(save-excursion (save-excursion
(set-buffer status-buf) (set-buffer status-buf)
(buffer-disable-undo)
(setq default-directory dir) (setq default-directory dir)
(set-buffer proc-buf) (set-buffer proc-buf)
(setq default-directory dir (setq default-directory dir
svn-status-remote (when arg t)) svn-status-remote (when arg t))
(set-buffer cur-buf) (set-buffer cur-buf)
(if want-edit (if want-edit
(let (svn-status-edit-svn-command t) (let ((svn-status-edit-svn-command t))
(svn-run t t 'status "status" svn-status-default-status-arguments status-option)) (svn-run t t 'status "status" svn-status-default-status-arguments status-option))
(svn-run t t 'status "status" svn-status-default-status-arguments status-option))))) (svn-run t t 'status "status" svn-status-default-status-arguments status-option)))))
@ -1196,6 +1220,19 @@ If there is no .svn directory, examine if there is CVS and run
(defun svn-had-user-input-since-asynch-run () (defun svn-had-user-input-since-asynch-run ()
(not (equal (recent-keys) svn-pre-run-asynch-recent-keys))) (not (equal (recent-keys) svn-pre-run-asynch-recent-keys)))
(defun svn-expand-filename-for-remote-access (file-name)
"Convert the given local part of a filename to a full file name to allow accessing remote files"
;; when running svn on a remote host: expand local file names to get full names to access the file on the remote host via emacs
(if (and (fboundp 'file-remote-p) (file-remote-p default-directory))
(concat (file-remote-p default-directory) file-name)
file-name))
(defun svn-local-filename-for-remote-access (file-name)
"Convert a full file name to a local file name that can be used for a local svn invocation."
(if (and (fboundp 'file-remote-p) (file-remote-p file-name))
(tramp-file-name-localname (tramp-dissect-file-name file-name))
file-name))
(defun svn-process-environment () (defun svn-process-environment ()
"Construct the environment for the svn process. "Construct the environment for the svn process.
It is a combination of `svn-status-svn-environment-var-list' and It is a combination of `svn-status-svn-environment-var-list' and
@ -1272,7 +1309,7 @@ The hook svn-pre-run-hook allows to monitor/modify the ARGLIST."
(setq svn-status-last-commit-author nil) (setq svn-status-last-commit-author nil)
(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) (save-excursion (sit-for 0.1))
(ring-insert svn-last-cmd-ring (list (current-time-string) arglist default-directory)) (ring-insert svn-last-cmd-ring (list (current-time-string) arglist default-directory))
(if run-asynchron (if run-asynchron
(progn (progn
@ -1320,8 +1357,8 @@ The hook svn-pre-run-hook allows to monitor/modify the ARGLIST."
(replace-match "/"))))) (replace-match "/")))))
(defun svn-process-sentinel (process event) (defun svn-process-sentinel (process event)
"Called after a svn process has finished."
;;(princ (format "Process: %s had the event `%s'" process event))) ;;(princ (format "Process: %s had the event `%s'" process event)))
;;(save-excursion
(let ((act-buf (current-buffer))) (let ((act-buf (current-buffer)))
(when svn-pre-run-mode-line-process (when svn-pre-run-mode-line-process
(with-current-buffer svn-status-pre-run-svn-buffer (with-current-buffer svn-status-pre-run-svn-buffer
@ -1452,17 +1489,30 @@ The hook svn-pre-run-hook allows to monitor/modify the ARGLIST."
(while (accept-process-output process 0 100)) (while (accept-process-output process 0 100))
;; find last error message and show it. ;; find last error message and show it.
(goto-char (point-max)) (goto-char (point-max))
(if (re-search-backward "^svn: \\(.*\\)" nil t) (if (re-search-backward "^svn: " nil t)
(svn-process-handle-error (match-string 1)) (let ((error-strings)
(beginning-of-buffer))
(while (and (looking-at "^svn: ") (not beginning-of-buffer))
(setq error-strings (append error-strings (list (buffer-substring-no-properties (+ 5 (svn-point-at-bol)) (svn-point-at-eol)))))
(setq beginning-of-buffer (bobp))
(forward-line -1))
(svn-process-handle-error (mapconcat 'identity (reverse error-strings) "\n")))
(message "svn failed: %s" event))) (message "svn failed: %s" event)))
(t (t
(message "svn process had unknown event: %s" event)) (message "svn process had unknown event: %s" event))
(svn-status-show-process-output nil t)))) (svn-status-show-process-output nil t))))
(defvar svn-process-handle-error-msg nil) (defvar svn-process-handle-error-msg nil)
(defvar svn-handle-error-function nil
"A function that will be called with an error string received from the svn client.
When this function resets `svn-process-handle-error-msg' to nil, the default error handling
(just show the error message) is not executed.")
(defun svn-process-handle-error (error-msg) (defun svn-process-handle-error (error-msg)
(let ((svn-process-handle-error-msg error-msg)) (let ((svn-process-handle-error-msg error-msg))
(electric-helpify 'svn-process-help-with-error-msg))) (when (functionp svn-handle-error-function)
(funcall svn-handle-error-function error-msg))
(when svn-process-handle-error-msg
(electric-helpify 'svn-process-help-with-error-msg))))
(defun svn-process-help-with-error-msg () (defun svn-process-help-with-error-msg ()
(interactive) (interactive)
@ -1471,9 +1521,9 @@ The hook svn-pre-run-hook allows to monitor/modify the ARGLIST."
"Please unmark all files and position point at the directory you would like to remove.\nThen run commit again.")))))) "Please unmark all files and position point at the directory you would like to remove.\nThen run commit again."))))))
(if help-msg (if help-msg
(save-excursion (save-excursion
(with-output-to-temp-buffer (help-buffer) (with-output-to-temp-buffer (svn-help-buffer)
(princ (format "svn failed: %s\n\n%s" svn-process-handle-error-msg help-msg)))) (princ (format "svn failed: %s\n\n%s" svn-process-handle-error-msg help-msg))))
(message "svn failed: %s" svn-process-handle-error-msg)))) (message "svn failed:\n%s" svn-process-handle-error-msg))))
(defun svn-process-filter (process str) (defun svn-process-filter (process str)
@ -1485,17 +1535,17 @@ The hook svn-pre-run-hook allows to monitor/modify the ARGLIST."
(insert str) (insert str)
(save-excursion (save-excursion
(goto-char (svn-point-at-bol)) (goto-char (svn-point-at-bol))
(when (looking-at "Password for '\\(.+\\)': ") (when (looking-at "Password for '\\(.*\\)': ")
;(svn-status-show-process-buffer) ;(svn-status-show-process-buffer)
(let ((passwd (read-passwd (let ((passwd (read-passwd
(format "Enter svn password for %s: " (match-string 1))))) (format "Enter svn password for %s: " (match-string 1)))))
(svn-process-send-string-and-newline passwd t))) (svn-process-send-string-and-newline passwd t)))
(when (looking-at "Username: ") (when (looking-at "Username: ")
(let ((user-name (read-string "Username for svn operation: "))) (let ((user-name (with-local-quit (read-string "Username for svn operation: "))))
(svn-process-send-string-and-newline user-name))) (svn-process-send-string-and-newline user-name)))
(when (looking-at "(R)eject, accept (t)emporarily or accept (p)ermanently") (when (looking-at "(R)eject, accept (t)emporarily or accept (p)ermanently")
(svn-status-show-process-buffer) (svn-status-show-process-buffer)
(let ((answer (read-string "(R)eject, accept (t)emporarily or accept (p)ermanently? "))) (let ((answer (with-local-quit (read-string "(R)eject, accept (t)emporarily or accept (p)ermanently? "))))
(svn-process-send-string (substring answer 0 1))))))) (svn-process-send-string (substring answer 0 1)))))))
(defun svn-revert-some-buffers (&optional tree) (defun svn-revert-some-buffers (&optional tree)
@ -1696,10 +1746,10 @@ The results are used to build the `svn-status-info' variable."
svn-property-mark (elt svn-marks 1) ; 2nd column - M,C (properties) svn-property-mark (elt svn-marks 1) ; 2nd column - M,C (properties)
svn-wc-locked-mark (elt svn-marks 2) ; 3rd column - L or blank svn-wc-locked-mark (elt svn-marks 2) ; 3rd column - L or blank
svn-with-history-mark (elt svn-marks 3) ; 4th column - + or blank svn-with-history-mark (elt svn-marks 3) ; 4th column - + or blank
svn-switched-mark (elt svn-marks 4) ; 5th column - S or blank svn-switched-mark (elt svn-marks 4) ; 5th column - S,X or blank
svn-repo-locked-mark (elt svn-marks 5)) ; 6th column - K,O,T,B or blank svn-repo-locked-mark (elt svn-marks 5)) ; 6th column - K,O,T,B or blank
(when svn-status-remote (when svn-status-remote
(setq svn-update-mark (elt svn-marks 7))) ; 8th column - * or blank (setq svn-update-mark (elt svn-marks 7))) ; 8th column - * or blank
(when (eq svn-property-mark ?\ ) (setq svn-property-mark nil)) (when (eq svn-property-mark ?\ ) (setq svn-property-mark nil))
(when (eq svn-wc-locked-mark ?\ ) (setq svn-wc-locked-mark nil)) (when (eq svn-wc-locked-mark ?\ ) (setq svn-wc-locked-mark nil))
(when (eq svn-with-history-mark ?\ ) (setq svn-with-history-mark nil)) (when (eq svn-with-history-mark ?\ ) (setq svn-with-history-mark nil))
@ -1783,7 +1833,7 @@ The results are used to build the `svn-status-info' variable."
(setq svn-status-info (sort svn-status-info 'svn-status-sort-predicate)))))) (setq svn-status-info (sort svn-status-info 'svn-status-sort-predicate))))))
;;(string-lessp "." "%") => nil ;;(string-lessp "." "%") => nil
;(svn-status-sort-predicate '(t t t ".") '(t t t "%")) => t ;;(svn-status-sort-predicate '(t t t ".") '(t t t "%")) => t
(defun svn-status-sort-predicate (a b) (defun svn-status-sort-predicate (a b)
"Return t if A should appear before B in the `svn-status-buffer-name' buffer. "Return t if A should appear before B in the `svn-status-buffer-name' buffer.
A and B must be line-info's." A and B must be line-info's."
@ -1809,6 +1859,21 @@ A and B must be line-info's."
(while (re-search-forward "\r$" (point-max) t) (while (re-search-forward "\r$" (point-max) t)
(replace-match "" nil nil)))))) (replace-match "" nil nil))))))
(defun svn-fixup-tramp-exit ()
"Helper function to handle tramp connections stopping with an exit output."
(goto-char (point-max))
(when (eq (svn-point-at-bol) (svn-point-at-eol))
(forward-line -1))
(beginning-of-line)
(when (looking-at "exit")
(delete-region (point) (svn-point-at-eol))))
(defun svn-fixup-tramp-output-maybe ()
"Fixup leftover output when running via tramp"
(when (fboundp 'file-remote-p)
(when (file-remote-p default-directory)
(svn-fixup-tramp-exit))))
(condition-case nil (condition-case nil
;;(easy-menu-add-item nil '("tools") ["SVN Status" svn-status t] "PCL-CVS") ;;(easy-menu-add-item nil '("tools") ["SVN Status" svn-status t] "PCL-CVS")
(easy-menu-add-item nil '("tools") ["SVN Status" svn-status t]) (easy-menu-add-item nil '("tools") ["SVN Status" svn-status t])
@ -1877,10 +1942,10 @@ A and B must be line-info's."
;; XEmacs allows simultaneous connections to multiple devices with ;; XEmacs allows simultaneous connections to multiple devices with
;; different keyboards. ;; different keyboards.
(define-key svn-status-mode-map (define-key svn-status-mode-map
(if (member (kbd "DEL") '([(delete)] [delete])) (if (member (kbd "DEL") '([(delete)] [delete]))
[(backspace)] ; XEmacs [(backspace)] ; XEmacs
(kbd "DEL")) ; GNU Emacs (kbd "DEL")) ; GNU Emacs
'svn-status-unset-user-mark-backwards) 'svn-status-unset-user-mark-backwards)
(define-key svn-status-mode-map (kbd "$") 'svn-status-toggle-elide) (define-key svn-status-mode-map (kbd "$") 'svn-status-toggle-elide)
(define-key svn-status-mode-map (kbd "w") 'svn-status-copy-current-line-info) (define-key svn-status-mode-map (kbd "w") 'svn-status-copy-current-line-info)
(define-key svn-status-mode-map (kbd ".") 'svn-status-goto-root-or-return) (define-key svn-status-mode-map (kbd ".") 'svn-status-goto-root-or-return)
@ -1888,6 +1953,7 @@ A and B must be line-info's."
(define-key svn-status-mode-map (kbd "V") 'svn-status-svnversion) (define-key svn-status-mode-map (kbd "V") 'svn-status-svnversion)
(define-key svn-status-mode-map (kbd "?") 'svn-status-toggle-hide-unknown) (define-key svn-status-mode-map (kbd "?") 'svn-status-toggle-hide-unknown)
(define-key svn-status-mode-map (kbd "_") 'svn-status-toggle-hide-unmodified) (define-key svn-status-mode-map (kbd "_") 'svn-status-toggle-hide-unmodified)
(define-key svn-status-mode-map (kbd "z") 'svn-status-toggle-hide-externals)
(define-key svn-status-mode-map (kbd "a") 'svn-status-add-file) (define-key svn-status-mode-map (kbd "a") 'svn-status-add-file)
(define-key svn-status-mode-map (kbd "A") 'svn-status-add-file-recursively) (define-key svn-status-mode-map (kbd "A") 'svn-status-add-file-recursively)
(define-key svn-status-mode-map (kbd "+") 'svn-status-make-directory) (define-key svn-status-mode-map (kbd "+") 'svn-status-make-directory)
@ -1954,6 +2020,7 @@ A and B must be line-info's."
;; reducing clutter in `where-is'. ;; reducing clutter in `where-is'.
(define-key svn-status-mode-property-map [(control ?i)] 'svn-status-property-edit-svn-ignore) (define-key svn-status-mode-property-map [(control ?i)] 'svn-status-property-edit-svn-ignore)
(define-key svn-status-mode-property-map (kbd "TAB") 'svn-status-property-edit-svn-ignore) (define-key svn-status-mode-property-map (kbd "TAB") 'svn-status-property-edit-svn-ignore)
(define-key svn-status-mode-property-map (kbd "Xe") 'svn-status-property-edit-svn-externals)
(define-key svn-status-mode-property-map (kbd "k") 'svn-status-property-set-keyword-list) (define-key svn-status-mode-property-map (kbd "k") 'svn-status-property-set-keyword-list)
(define-key svn-status-mode-property-map (kbd "Ki") 'svn-status-property-set-keyword-id) (define-key svn-status-mode-property-map (kbd "Ki") 'svn-status-property-set-keyword-id)
(define-key svn-status-mode-property-map (kbd "Kd") 'svn-status-property-set-keyword-date) (define-key svn-status-mode-property-map (kbd "Kd") 'svn-status-property-set-keyword-date)
@ -2045,6 +2112,8 @@ A and B must be line-info's."
["svn:ignore File Extension..." svn-status-property-ignore-file-extension t] ["svn:ignore File Extension..." svn-status-property-ignore-file-extension t]
["Edit svn:ignore Property" svn-status-property-edit-svn-ignore t] ["Edit svn:ignore Property" svn-status-property-edit-svn-ignore t]
"---" "---"
["Edit svn:externals Property" svn-status-property-edit-svn-externals t]
"---"
["Edit svn:keywords List" svn-status-property-set-keyword-list t] ["Edit svn:keywords List" svn-status-property-set-keyword-list t]
["Add/Remove Id to/from svn:keywords" svn-status-property-set-keyword-id t] ["Add/Remove Id to/from svn:keywords" svn-status-property-set-keyword-id t]
["Add/Remove Date to/from svn:keywords" svn-status-property-set-keyword-date t] ["Add/Remove Date to/from svn:keywords" svn-status-property-set-keyword-date t]
@ -2100,6 +2169,8 @@ A and B must be line-info's."
:style toggle :selected svn-status-hide-unknown] :style toggle :selected svn-status-hide-unknown]
["Hide Unmodified" svn-status-toggle-hide-unmodified ["Hide Unmodified" svn-status-toggle-hide-unmodified
:style toggle :selected svn-status-hide-unmodified] :style toggle :selected svn-status-hide-unmodified]
["Hide Externals" svn-status-toggle-hide-externals
:style toggle :selected svn-status-hide-externals]
["Show Client versions" svn-status-version t] ["Show Client versions" svn-status-version t]
["Prepare bug report" svn-prepare-bug-report t] ["Prepare bug report" svn-prepare-bug-report t]
)) ))
@ -2145,7 +2216,7 @@ PREFIX is passed to `popup-menu'."
(progn (progn
(setq o (make-overlay begin end)) (setq o (make-overlay begin end))
(overlay-put o 'face face) (overlay-put o 'face face)
(sit-for 0) (save-excursion (sit-for 0))
(popup-menu menu prefix)) (popup-menu menu prefix))
(delete-overlay o)))) (delete-overlay o))))
@ -2332,7 +2403,7 @@ history, when it will be \"+\"."
(defun svn-status-line-info->switched (line-info) (defun svn-status-line-info->switched (line-info)
"Return whether LINE-INFO is switched relative to its parent. "Return whether LINE-INFO is switched relative to its parent.
This is column five of the output from `svn status'. This is column five of the output from `svn status'.
The result will be nil or \"S\"." The result will be \"S\", \"X\" or nil."
(nth 10 line-info)) (nth 10 line-info))
(defun svn-status-line-info->repo-locked (line-info) (defun svn-status-line-info->repo-locked (line-info)
"Return whether LINE-INFO contains some locking information. "Return whether LINE-INFO contains some locking information.
@ -2349,6 +2420,7 @@ This list holds currently only one element:
"Return whether the line is visible or not" "Return whether the line is visible or not"
(or (not (or (svn-status-line-info->hide-because-unknown line-info) (or (not (or (svn-status-line-info->hide-because-unknown line-info)
(svn-status-line-info->hide-because-unmodified line-info) (svn-status-line-info->hide-because-unmodified line-info)
(svn-status-line-info->hide-because-externals line-info)
(svn-status-line-info->hide-because-custom-hide-function line-info) (svn-status-line-info->hide-because-custom-hide-function line-info)
(svn-status-line-info->hide-because-user-elide line-info))) (svn-status-line-info->hide-because-user-elide line-info)))
(svn-status-line-info->update-available line-info) ;; show the line, if an update is available (svn-status-line-info->update-available line-info) ;; show the line, if an update is available
@ -2359,6 +2431,10 @@ This list holds currently only one element:
(and svn-status-hide-unknown (and svn-status-hide-unknown
(eq (svn-status-line-info->filemark line-info) ??))) (eq (svn-status-line-info->filemark line-info) ??)))
(defun svn-status-line-info->hide-because-externals (line-info)
(and svn-status-hide-externals
(eq (svn-status-line-info->filemark line-info) ?X)))
(defun svn-status-line-info->hide-because-custom-hide-function (line-info) (defun svn-status-line-info->hide-because-custom-hide-function (line-info)
(and svn-status-custom-hide-function (and svn-status-custom-hide-function
(apply svn-status-custom-hide-function (list line-info)))) (apply svn-status-custom-hide-function (list line-info))))
@ -2491,26 +2567,27 @@ When called with a prefix argument, toggle the hiding of all subdirectories for
(len-test) (len-test)
(elided-list) (elided-list)
(elide-mark)) (elide-mark))
(while st-info (when svn-status-elided-list
(setq fname (svn-status-line-info->filename (car st-info))) (while st-info
(setq len-fname (length fname)) (setq fname (svn-status-line-info->filename (car st-info)))
(setq elided-list svn-status-elided-list) (setq len-fname (length fname))
(setq elide-mark nil) (setq elided-list svn-status-elided-list)
(while elided-list (setq elide-mark nil)
(setq test (car elided-list)) (while elided-list
(when (string= test ".") (setq test (car elided-list))
(setq test "")) (when (string= test ".")
(setq len-test (length test)) (setq test ""))
(when (and (>= len-fname len-test) (setq len-test (length test))
(string= (substring fname 0 len-test) test)) (when (and (>= len-fname len-test)
(setq elide-mark t) (string= (substring fname 0 len-test) test))
(when (or (string= fname ".") (setq elide-mark t)
(and (= len-fname len-test) (svn-status-line-info->directory-p (car st-info)))) (when (or (string= fname ".")
(setq elide-mark 'directory))) (and (= len-fname len-test) (svn-status-line-info->directory-p (car st-info))))
(setq elided-list (cdr elided-list))) (setq elide-mark 'directory)))
;;(message "fname: %s elide-mark: %S" fname elide-mark) (setq elided-list (cdr elided-list)))
(setcar (nthcdr 1 (svn-status-line-info->ui-status (car st-info))) elide-mark) ;;(message "fname: %s elide-mark: %S" fname elide-mark)
(setq st-info (cdr st-info)))) (setcar (nthcdr 1 (svn-status-line-info->ui-status (car st-info))) elide-mark)
(setq st-info (cdr st-info)))))
(svn-status-update-buffer)) (svn-status-update-buffer))
(defun svn-status-update-with-command-list (cmd-list) (defun svn-status-update-with-command-list (cmd-list)
@ -2794,7 +2871,8 @@ Symbolic links to directories count as directories (see `file-directory-p')."
(filename ;; <indentation>file or /path/to/file (filename ;; <indentation>file or /path/to/file
(concat (concat
(if (or svn-status-display-full-path (if (or svn-status-display-full-path
svn-status-hide-unmodified) svn-status-hide-unmodified
svn-status-hide-externals)
(svn-add-face (svn-add-face
(let ((dir-name (file-name-as-directory (let ((dir-name (file-name-as-directory
(svn-status-line-info->directory-containing-line-info (svn-status-line-info->directory-containing-line-info
@ -2859,7 +2937,7 @@ Symbolic links to directories count as directories (see `file-directory-p')."
((eq flag ?B) " [ REPO-LOCK-BROKEN ]") ((eq flag ?B) " [ REPO-LOCK-BROKEN ]")
(t " [ REPO-LOCK-UNKNOWN ]"))) (t " [ REPO-LOCK-UNKNOWN ]")))
'svn-status-locked-face) 'svn-status-locked-face)
(svn-status-maybe-add-string (svn-status-line-info->switched line-info) (svn-status-maybe-add-string (eq (svn-status-line-info->switched line-info) ?S)
" (switched)" 'svn-status-switched-face) " (switched)" 'svn-status-switched-face)
elide-hint) elide-hint)
'svn-status-marked-face) 'svn-status-marked-face)
@ -2891,6 +2969,7 @@ Additionally clear the psvn-extra-info field in all line-info lists."
(overlay) (overlay)
(unmodified-count 0) ;how many unmodified files are hidden (unmodified-count 0) ;how many unmodified files are hidden
(unknown-count 0) ;how many unknown files are hidden (unknown-count 0) ;how many unknown files are hidden
(externals-count 0) ;how many svn:externals files are hidden
(custom-hide-count 0) ;how many files are hidden via svn-status-custom-hide-function (custom-hide-count 0) ;how many files are hidden via svn-status-custom-hide-function
(marked-count 0) ;how many files are elided (marked-count 0) ;how many files are elided
(user-elide-count 0) (user-elide-count 0)
@ -2920,12 +2999,15 @@ Additionally clear the psvn-extra-info field in all line-info lists."
(setq unknown-count (1+ unknown-count))) (setq unknown-count (1+ unknown-count)))
((svn-status-line-info->hide-because-unmodified (car st-info)) ((svn-status-line-info->hide-because-unmodified (car st-info))
(setq unmodified-count (1+ unmodified-count))) (setq unmodified-count (1+ unmodified-count)))
((svn-status-line-info->hide-because-externals (car st-info))
(setq externals-count (1+ externals-count)))
(t (t
(svn-insert-line-in-status-buffer (car st-info)))) (svn-insert-line-in-status-buffer (car st-info))))
(when (svn-status-line-info->has-usermark (car st-info)) (when (svn-status-line-info->has-usermark (car st-info))
(setq marked-count (+ marked-count 1))) (setq marked-count (+ marked-count 1)))
(setq overlay (make-overlay start-pos (point))) (setq overlay (make-overlay start-pos (point)))
(overlay-put overlay 'svn-info (car st-info)) (overlay-put overlay 'svn-info (car st-info))
(overlay-put overlay 'evaporate t)
(setq st-info (cdr st-info))) (setq st-info (cdr st-info)))
;; Insert status information at the buffer beginning ;; Insert status information at the buffer beginning
(goto-char (point-min)) (goto-char (point-min))
@ -2949,6 +3031,10 @@ Additionally clear the psvn-extra-info field in all line-info lists."
(insert (insert
(format "%d Unmodified file(s) are hidden - press `_' to toggle hiding\n" (format "%d Unmodified file(s) are hidden - press `_' to toggle hiding\n"
unmodified-count))) unmodified-count)))
(when svn-status-hide-externals
(insert
(format "%d Externals file(s) are hidden - press `z' to toggle hiding\n"
externals-count)))
(when (> custom-hide-count 0) (when (> custom-hide-count 0)
(insert (insert
(format "%d file(s) are hidden via the svn-status-custom-hide-function\n" (format "%d file(s) are hidden via the svn-status-custom-hide-function\n"
@ -3188,7 +3274,7 @@ When called from a file buffer provide a structure that contains the filename."
(cond ((eq major-mode 'svn-status-mode) (cond ((eq major-mode 'svn-status-mode)
(svn-status-get-line-information)) (svn-status-get-line-information))
(t (t
;; a fake strukture that contains the buffername for the current buffer ;; a fake structure that contains the buffername for the current buffer
(svn-status-make-line-info (buffer-file-name (current-buffer)))))) (svn-status-make-line-info (buffer-file-name (current-buffer))))))
(defun svn-status-select-line () (defun svn-status-select-line ()
@ -3197,12 +3283,12 @@ When called from a file buffer provide a structure that contains the filename."
(interactive) (interactive)
(let ((info (svn-status-get-line-information))) (let ((info (svn-status-get-line-information)))
(if info (if info
(message "%S hide-because-unknown: %S hide-because-unmodified: %S" info (message "%S hide-because-unknown: %S hide-because-unmodified: %S hide-because-externals: %S" info
(svn-status-line-info->hide-because-unknown info) (svn-status-line-info->hide-because-unknown info)
(svn-status-line-info->hide-because-unmodified info)) (svn-status-line-info->hide-because-unmodified info)
(svn-status-line-info->hide-because-externals info))
(message "No file on this line")))) (message "No file on this line"))))
(defun svn-status-ensure-cursor-on-file ()
(defun svn-status-ensure-cursor-on-file ()
"Raise an error unless point is on a valid file." "Raise an error unless point is on a valid file."
(unless (svn-status-get-line-information) (unless (svn-status-get-line-information)
(error "No file on the current line"))) (error "No file on the current line")))
@ -3390,13 +3476,15 @@ This means we mark
* all modified files * all modified files
* all files scheduled for addition * all files scheduled for addition
* all files scheduled for deletion * all files scheduled for deletion
* all files with modified properties
The last two categories include all copied and moved files. The last two categories include all copied and moved files.
If called with a prefix ARG, unmark all such files." If called with a prefix ARG, unmark all such files."
(interactive "P") (interactive "P")
(svn-status-mark-added arg) (svn-status-mark-added arg)
(svn-status-mark-modified arg) (svn-status-mark-modified arg)
(svn-status-mark-deleted arg)) (svn-status-mark-deleted arg)
(svn-status-mark-modified-properties arg))
(defun svn-status-unset-all-usermarks () (defun svn-status-unset-all-usermarks ()
(interactive) (interactive)
@ -3455,6 +3543,11 @@ If the function is called with a prefix arg, unmark all these files."
(setq svn-status-hide-unmodified (not svn-status-hide-unmodified)) (setq svn-status-hide-unmodified (not svn-status-hide-unmodified))
(svn-status-update-buffer)) (svn-status-update-buffer))
(defun svn-status-toggle-hide-externals ()
(interactive)
(setq svn-status-hide-externals (not svn-status-hide-externals))
(svn-status-update-buffer))
(defun svn-status-get-file-name-buffer-position (name) (defun svn-status-get-file-name-buffer-position (name)
"Find the buffer position for a file. "Find the buffer position for a file.
If the file is not found, return nil." If the file is not found, return nil."
@ -3551,6 +3644,10 @@ if no files have been marked."
(defun svn-status-create-arg-file (file-name prefix file-info-list postfix) (defun svn-status-create-arg-file (file-name prefix file-info-list postfix)
"Create an svn client argument file"
;; create the arg file on the remote host when we will run svn on this host!
(setq file-name (svn-expand-filename-for-remote-access file-name))
;; (message "svn-status-create-arg-file %s: %s" default-directory file-name)
(with-temp-file file-name (with-temp-file file-name
(insert prefix) (insert prefix)
(let ((st-info file-info-list)) (let ((st-info file-info-list))
@ -4099,22 +4196,29 @@ When called with a prefix argument, ask the user for the revision to update to.
When called with a negative prefix argument, only update the selected files." When called with a negative prefix argument, only update the selected files."
(interactive "P") (interactive "P")
(let* ((selective-update (or (and (numberp arg) (< arg 0)) (eq arg '-))) (let* ((selective-update (or (and (numberp arg) (< arg 0)) (eq arg '-)))
(update-extra-arg)
(rev (when arg (svn-status-read-revision-string (rev (when arg (svn-status-read-revision-string
(if selective-update (if selective-update
(format "Selected entries: Run svn update -r ") (format "Selected entries: Run svn update -r ")
(format "Directory: %s: Run svn update -r " default-directory)) (format "Directory: %s: Run svn update -r " default-directory))
(if selective-update "HEAD" nil))))) (if selective-update "HEAD" nil)))))
(unless svn-client-version
(svn-status-version))
(if (and (<= (car svn-client-version) 1) (< (cadr svn-client-version) 5))
(setq update-extra-arg (list "--non-interactive")) ;; svn version < 1.5
(setq update-extra-arg (list "--accept" "postpone"))) ;; svn version >= 1.5
(if selective-update (if selective-update
(progn (progn
(message "Running svn-update for %s" (svn-status-marked-file-names)) (message "Running svn-update for %s" (svn-status-marked-file-names))
(svn-run t t 'update "update" (svn-run t t 'update "update"
(when rev (list "-r" rev)) (when rev (list "-r" rev))
(list "--non-interactive") update-extra-arg
(svn-status-marked-file-names))) (svn-status-marked-file-names)))
(message "Running svn-update for %s" default-directory) (message "Running svn-update for %s" default-directory)
(svn-run t t 'update "update" (svn-run t t 'update "update"
(when rev (list "-r" rev)) (when rev (list "-r" rev))
(list "--non-interactive") (expand-file-name default-directory))))) update-extra-arg
(svn-local-filename-for-remote-access (expand-file-name default-directory))))))
(defun svn-status-commit () (defun svn-status-commit ()
"Commit selected files. "Commit selected files.
@ -4332,7 +4436,11 @@ static char * data[] = {
(defsubst svn-status-in-vc-mode? () (defsubst svn-status-in-vc-mode? ()
"Is vc-svn active?" "Is vc-svn active?"
(and vc-mode (string-match "^ SVN" (svn-substring-no-properties vc-mode)))) (cond
((fboundp 'vc-backend)
(eq 'SVN (vc-backend buffer-file-name)))
((and (boundp 'vc-mode) vc-mode)
(string-match "^ SVN" (svn-substring-no-properties vc-mode)))))
(when svn-status-fancy-file-state-in-modeline (when svn-status-fancy-file-state-in-modeline
(defadvice vc-find-file-hook (after svn-status-vc-svn-find-file-hook activate) (defadvice vc-find-file-hook (after svn-status-vc-svn-find-file-hook activate)
@ -4831,6 +4939,17 @@ When called with a prefix argument, it is possible to enter a new property."
(message "Edit svn:ignore on %s" dir))) (message "Edit svn:ignore on %s" dir)))
(defun svn-status-property-edit-svn-externals ()
(interactive)
(let* ((line-info (svn-status-get-line-information))
(dir (if (svn-status-line-info->directory-p line-info)
(svn-status-line-info->filename line-info)
(svn-status-get-directory line-info))))
(svn-status-property-edit
(list (svn-status-find-info-for-file-name dir)) "svn:externals")
(message "Edit svn:externals on %s" dir)))
(defun svn-status-property-set-keyword-list () (defun svn-status-property-set-keyword-list ()
"Edit the svn:keywords property on the marked files." "Edit the svn:keywords property on the marked files."
(interactive) (interactive)
@ -4943,22 +5062,22 @@ Commands:
(set-buffer (get-buffer "*svn-property-edit*")) (set-buffer (get-buffer "*svn-property-edit*"))
(when (fboundp 'set-buffer-file-coding-system) (when (fboundp 'set-buffer-file-coding-system)
(set-buffer-file-coding-system svn-status-svn-file-coding-system nil)) (set-buffer-file-coding-system svn-status-svn-file-coding-system nil))
(setq svn-status-temp-file-to-remove (let ((svn-propedit-file-name (concat svn-status-temp-dir "svn-prop-edit.txt" svn-temp-suffix)))
(concat svn-status-temp-dir "svn-prop-edit.txt" svn-temp-suffix)) (setq svn-status-temp-file-to-remove (svn-expand-filename-for-remote-access svn-propedit-file-name))
(write-region (point-min) (point-max) svn-status-temp-file-to-remove nil 1)) (write-region (point-min) (point-max) svn-status-temp-file-to-remove nil 1)
(when svn-status-propedit-file-list ; there are files to change properties (when svn-status-propedit-file-list ; there are files to change properties
(svn-status-create-arg-file svn-status-temp-arg-file "" (svn-status-create-arg-file svn-status-temp-arg-file ""
svn-status-propedit-file-list "") svn-status-propedit-file-list "")
(setq svn-status-propedit-file-list nil) (setq svn-status-propedit-file-list nil)
(svn-run async t 'propset "propset" (svn-run async t 'propset "propset"
svn-status-propedit-property-name svn-status-propedit-property-name
"--targets" svn-status-temp-arg-file "--targets" svn-status-temp-arg-file
(when (eq svn-status-svn-file-coding-system 'utf-8) (when (eq svn-status-svn-file-coding-system 'utf-8)
'("--encoding" "UTF-8")) '("--encoding" "UTF-8"))
"-F" (concat svn-status-temp-dir "svn-prop-edit.txt" svn-temp-suffix)) "-F" svn-propedit-file-name)
(unless async (svn-status-remove-temp-file-maybe))) (unless async (svn-status-remove-temp-file-maybe)))
(when svn-status-pre-propedit-window-configuration (when svn-status-pre-propedit-window-configuration
(set-window-configuration svn-status-pre-propedit-window-configuration))) (set-window-configuration svn-status-pre-propedit-window-configuration)))))
(defun svn-prop-edit-svn-diff (arg) (defun svn-prop-edit-svn-diff (arg)
(interactive "P") (interactive "P")
@ -5050,41 +5169,41 @@ Commands:
"Finish editing the log message and run svn commit." "Finish editing the log message and run svn commit."
(interactive) (interactive)
(svn-status-save-some-buffers) (svn-status-save-some-buffers)
(save-excursion (let ((svn-logedit-file-name))
(set-buffer (get-buffer svn-log-edit-buffer-name)) (save-excursion
(when svn-log-edit-insert-files-to-commit (set-buffer (get-buffer svn-log-edit-buffer-name))
(svn-log-edit-remove-comment-lines)) (when svn-log-edit-insert-files-to-commit
(when (fboundp 'set-buffer-file-coding-system) (svn-log-edit-remove-comment-lines))
(set-buffer-file-coding-system svn-status-svn-file-coding-system nil)) (when (fboundp 'set-buffer-file-coding-system)
(when (or svn-log-edit-update-log-entry svn-status-files-to-commit) (set-buffer-file-coding-system svn-status-svn-file-coding-system nil))
(setq svn-status-temp-file-to-remove (when (or svn-log-edit-update-log-entry svn-status-files-to-commit)
(concat svn-status-temp-dir "svn-log-edit.txt" svn-temp-suffix)) (setq svn-log-edit-file-name (concat svn-status-temp-dir "svn-log-edit.txt" svn-temp-suffix))
(write-region (point-min) (point-max) svn-status-temp-file-to-remove nil 1)) (setq svn-status-temp-file-to-remove (svn-expand-filename-for-remote-access svn-log-edit-file-name))
(bury-buffer)) (write-region (point-min) (point-max) svn-status-temp-file-to-remove nil 1))
(if svn-log-edit-update-log-entry (bury-buffer))
(when (y-or-n-p "Update the log entry? ") (if svn-log-edit-update-log-entry
;; svn propset svn:log --revprop -r11672 -F file (when (y-or-n-p "Update the log entry? ")
(svn-run nil t 'propset "propset" "svn:log" "--revprop" ;; svn propset svn:log --revprop -r11672 -F file
(concat "-r" svn-log-edit-update-log-entry) (svn-run nil t 'propset "propset" "svn:log" "--revprop"
"-F" svn-status-temp-file-to-remove) (concat "-r" svn-log-edit-update-log-entry)
(save-excursion "-F" svn-log-edit-file-name)
(set-buffer svn-process-buffer-name) (save-excursion
(message "%s" (buffer-substring (point-min) (- (point-max) 1))))) (set-buffer svn-process-buffer-name)
(when svn-status-files-to-commit ; there are files to commit (message "%s" (buffer-substring (point-min) (- (point-max) 1)))))
(setq svn-status-operated-on-dot (when svn-status-files-to-commit ; there are files to commit
(and (= 1 (length svn-status-files-to-commit)) (setq svn-status-operated-on-dot
(string= "." (svn-status-line-info->filename (car svn-status-files-to-commit))))) (and (= 1 (length svn-status-files-to-commit))
(svn-status-create-arg-file svn-status-temp-arg-file "" (string= "." (svn-status-line-info->filename (car svn-status-files-to-commit)))))
svn-status-files-to-commit "") (svn-status-create-arg-file svn-status-temp-arg-file "" svn-status-files-to-commit "")
(svn-run t t 'commit "commit" (svn-run t t 'commit "commit"
(unless svn-status-recursive-commit "--non-recursive") (unless svn-status-recursive-commit "--non-recursive")
"--targets" svn-status-temp-arg-file "--targets" svn-status-temp-arg-file
"-F" svn-status-temp-file-to-remove "-F" svn-log-edit-file-name
(when (eq svn-status-svn-file-coding-system 'utf-8) (when (eq svn-status-svn-file-coding-system 'utf-8)
'("--encoding" "UTF-8")) '("--encoding" "UTF-8"))
svn-status-default-commit-arguments)) svn-status-default-commit-arguments))
(set-window-configuration svn-status-pre-commit-window-configuration) (set-window-configuration svn-status-pre-commit-window-configuration)
(message "svn-log editing done"))) (message "svn-log editing done"))))
(defun svn-log-edit-svn-diff (arg) (defun svn-log-edit-svn-diff (arg)
"Show the diff we are about to commit. "Show the diff we are about to commit.
@ -5136,7 +5255,7 @@ If ARG then show diff between some other version of the selected files."
(let ((buf-size (- (point-max) (point-min)))) (let ((buf-size (- (point-max) (point-min))))
(save-excursion (save-excursion
(goto-char (point-min)) (goto-char (point-min))
(insert "## Lines starting with '## ' will be removed from the log message.\n") (insert svn-log-edit-header)
(insert "## File(s) to commit" (insert "## File(s) to commit"
(if svn-status-recursive-commit " recursively" "") ":\n") (if svn-status-recursive-commit " recursively" "") ":\n")
(let ((file-list svn-status-files-to-commit)) (let ((file-list svn-status-files-to-commit))
@ -5359,7 +5478,8 @@ Commands:
"Mark the revision at point to be used as diff against revision." "Mark the revision at point to be used as diff against revision."
(interactive) (interactive)
(let ((start-pos) (let ((start-pos)
(point-at-partner-rev)) (point-at-partner-rev)
(overlay))
(dolist (ov (overlays-in (point-min) (point-max))) (dolist (ov (overlays-in (point-min) (point-max)))
(when (overlay-get ov 'svn-log-partner-revision) (when (overlay-get ov 'svn-log-partner-revision)
(setq point-at-partner-rev (and (>= (point) (overlay-start ov)) (setq point-at-partner-rev (and (>= (point) (overlay-start ov))
@ -5803,23 +5923,33 @@ The optional prefix argument ARG determines which switches are passed to `svn lo
"Show statistics for the current blame buffer." "Show statistics for the current blame buffer."
(interactive) (interactive)
(let ((author-map (make-hash-table :test 'equal)) (let ((author-map (make-hash-table :test 'equal))
(revision-map (make-hash-table :test 'equal))
(rev-info)
(author-list) (author-list)
(author)) (author)
(revision-list)
(revision))
(save-excursion (save-excursion
(goto-char (point-min)) (goto-char (point-min))
(while (not (eobp)) (while (not (eobp))
(dolist (ov (overlays-in (svn-point-at-bol) (line-end-position))) (dolist (ov (overlays-in (svn-point-at-bol) (line-end-position)))
(when (overlay-get ov 'svn-blame-line-info) (when (overlay-get ov 'svn-blame-line-info)
(setq author (cadr (overlay-get ov 'rev-info))) (setq rev-info (overlay-get ov 'rev-info))
(svn-puthash author (setq author (cadr rev-info))
(+ (gethash author author-map 0) 1) (setq revision (string-to-number (car rev-info)))
author-map))) (svn-puthash author (+ (gethash author author-map 0) 1) author-map)
(svn-puthash revision (+ (gethash revision revision-map 0) 1) revision-map)))
(forward-line)) (forward-line))
(maphash '(lambda (key value) (add-to-list 'author-list (list key value))) author-map) (maphash '(lambda (key value) (add-to-list 'author-list (list key value))) author-map)
(maphash '(lambda (key value) (add-to-list 'revision-list (list key value))) revision-map)
(pop-to-buffer (get-buffer-create (replace-regexp-in-string "svn-blame:" "svn-blame-statistics:" (buffer-name)))) (pop-to-buffer (get-buffer-create (replace-regexp-in-string "svn-blame:" "svn-blame-statistics:" (buffer-name))))
(erase-buffer) (erase-buffer)
(insert (propertize "Authors:\n" 'face 'font-lock-function-name-face))
(dolist (line (sort author-list '(lambda (v1 v2) (> (cadr v1) (cadr v2))))) (dolist (line (sort author-list '(lambda (v1 v2) (> (cadr v1) (cadr v2)))))
(insert (format "%s: %s line%s\n" (car line) (cadr line) (if (eq (cadr line) 1) "" "s")))) (insert (format "%s: %s line%s\n" (car line) (cadr line) (if (eq (cadr line) 1) "" "s"))))
(insert (propertize "\nRevisions:\n" 'face 'font-lock-function-name-face))
(dolist (line (sort revision-list '(lambda (v1 v2) (< (car v1) (car v2)))))
(insert (format "%s: %s line%s\n" (car line) (cadr line) (if (eq (cadr line) 1) "" "s"))))
(goto-char (point-min))))) (goto-char (point-min)))))
(defun svn-blame-highlight-author-field (ov) (defun svn-blame-highlight-author-field (ov)

View File

@ -1 +1 @@
1a53a0e72bee0bf814f4da83a9b6a636 subversion-1.6.5.tar.bz2 75419159b50661092c4137449940b5cc subversion-1.6.11.tar.bz2

View File

@ -1,35 +0,0 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEABECAAYFAkoDD0IACgkQCwOubk4kUXx7kACgx2OOfBOPAMBeUHrM+xSsdsWj
WLkAnA4tzj8eBBfKtfIUnomLB+0xSqh7
=dIoL
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
iD8DBQBKA6AAxXIjJtpWHZERAv/PAJ4iSk7tHYYHI7t+EPmxC6pmD3hT9QCgk9lX
/nEquZMpPhZie6qQWNDZyLs=
=5jcM
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEABECAAYFAkoDJg8ACgkQ9o1G+2zNQDhVYwCgpZMjlTopJIOREHHsr+E/775n
O9YAniuC/5S5W92vRFpAahpH9j7GzGul
=GMi5
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (FreeBSD)
iEYEABECAAYFAkoEpmkACgkQ/P1jBZgh97JkegCgvAWA8MlEycZIkWud4HLK0uw4
YrsAnRFtdlwzeOI3knarehRe0q7ixYvg
=9hZJ
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.11 (GNU/Linux)
iEYEABECAAYFAkoEWNoACgkQIEGVSeBq/j6U8QCgkkd3w7znQ/dMOtIQIGdg9gwC
P/UAn3T6R8pj+3cOLSFsFUuy/V7bkGbU
=GPSt
-----END PGP SIGNATURE-----

View File

@ -1,7 +0,0 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEABECAAYFAko5swkACgkQCwOubk4kUXwbpQCfT7+XfNkX8nb2HAO0og5Tn8Xu
9ukAoPIKZ/+taVMeiPXRC8AX0x24niOr
=1vmx
-----END PGP SIGNATURE-----

View File

@ -1,35 +0,0 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEABECAAYFAkp3xLQACgkQCwOubk4kUXxp8wCdEk4skjDqre08fEuF/bc+n05d
WQIAoNzA2nVuza0td20YjDqXbX2lW7GG
=BEAB
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEABECAAYFAkp4nzUACgkQ5dMCc/WdJfBwZACgpAcORwz5rnbUpMacRRNZ7cNw
v98AoPBo/9ULXBt4dPn021pjsLxgyUw3
=FLdA
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEABECAAYFAkp4k/kACgkQokEGqRcG/W5gdACguMlg/4QUAAsh811ffgM6upmt
qA0AoLd1R8UXEqnozKjGPuzljtEDBolg
=HVCk
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEABECAAYFAkp5RxAACgkQ9o1G+2zNQDhMiwCgh8xaAhXxyp6/YHf2onxWEiXb
hR8AmgKuMuBS+R8XDZaoLDx+i0o+XCHX
=57CQ
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (FreeBSD)
iEYEABECAAYFAkp7AzwACgkQ/P1jBZgh97LPSACfV0Q1NEW7uilPCGyED7n3urqU
VPIAnjJVMYpb6aG10C9ymDj0LiucKOi9
=jGlb
-----END PGP SIGNATURE-----

View File

@ -1,35 +0,0 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEABECAAYFAkp3xLYACgkQCwOubk4kUXwuHwCgxFKL+QnzIebGGcjqPm4l/iBp
/2QAni/Ye1w73QjIikRxSsvNaBxr7Ik6
=Vkwq
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEABECAAYFAkp4n9QACgkQ5dMCc/WdJfBD0QCg+UN5zZ9HS6bouwVexaFWYXbh
GeEAmQGA7yQtvHgYJ97DJM3LNAW6cd5X
=5fXs
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEABECAAYFAkp4k+UACgkQokEGqRcG/W7VUQCeNFQ7VJgRxQFOG1Ukp026e+H4
bDUAoIRMH84/Bb3OYa5Gr0xSOuhPhWEx
=EfId
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEABECAAYFAkp5RxgACgkQ9o1G+2zNQDgGHACdGJWmRW6L8qjrBpIPIqdvQfGw
X7IAn2icEiXqv7/TMROxCVGJh5jvxVAx
=2Td8
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (FreeBSD)
iEYEABECAAYFAkp7Az8ACgkQ/P1jBZgh97KJSQCgyQz56frR5zEAf+l4m/Ny3Dr5
u50AmQErCcguvMp/MJva2oluweihoW4Y
=ZQx2
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,273 @@
diff -up svn2cl-0.11/svn2cl.xsl~ svn2cl-0.11/svn2cl.xsl
--- svn2cl-0.11/svn2cl.xsl~ 2008-12-21 17:41:20.000000000 +0200
+++ svn2cl-0.11/svn2cl.xsl 2009-11-02 22:29:34.000000000 +0200
@@ -55,12 +55,6 @@
-->
-<!DOCTYPE xsl:stylesheet [
- <!ENTITY tab "&#9;">
- <!ENTITY newl "&#38;#xA;">
- <!ENTITY space "&#32;">
-]>
-
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
@@ -119,7 +113,7 @@
</xsl:otherwise>
</xsl:choose>
<!-- add newlines at the end of the changelog -->
- <xsl:text>&newl;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
</xsl:template>
<!-- format one entry from the log -->
@@ -149,33 +143,33 @@
<xsl:if test="($prevdate!=$date) or ($prevauthor!=$author)">
<!-- add newline -->
<xsl:if test="not(position()=1)">
- <xsl:text>&newl;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
</xsl:if>
<!-- date -->
<xsl:value-of select="$date" />
<!-- two spaces -->
- <xsl:text>&space;&space;</xsl:text>
+ <xsl:text>&#32;&#32;</xsl:text>
<!-- author's name -->
<xsl:apply-templates select="author" />
<!-- two newlines -->
- <xsl:text>&newl;</xsl:text>
- <xsl:if test="$separate-daylogs!='yes'"><xsl:text>&newl;</xsl:text></xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:if test="$separate-daylogs!='yes'"><xsl:text>&#10;</xsl:text></xsl:if>
</xsl:if>
</xsl:when>
<!-- write the log header -->
<xsl:otherwise>
<!-- add newline -->
<xsl:if test="not(position()=1)">
- <xsl:text>&newl;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
</xsl:if>
<!-- date -->
<xsl:apply-templates select="date" />
<!-- two spaces -->
- <xsl:text>&space;&space;</xsl:text>
+ <xsl:text>&#32;&#32;</xsl:text>
<!-- author's name -->
<xsl:apply-templates select="author" />
<!-- two newlines -->
- <xsl:text>&newl;&newl;</xsl:text>
+ <xsl:text>&#10;&#10;</xsl:text>
</xsl:otherwise>
</xsl:choose>
<!-- get paths string -->
@@ -187,7 +181,7 @@
<xsl:if test="$include-rev='yes'">
<xsl:text>[r</xsl:text>
<xsl:value-of select="@revision" />
- <xsl:text>]&space;</xsl:text>
+ <xsl:text>]&#32;</xsl:text>
</xsl:if>
</xsl:variable>
<!-- trim trailing newlines -->
@@ -195,7 +189,7 @@
<!-- add a line break before the log message -->
<xsl:choose>
<xsl:when test="$breakbeforemsg='yes'">
- <xsl:text>&newl;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
</xsl:when>
<xsl:when test="number($breakbeforemsg)&gt;0">
<xsl:call-template name="newlines">
@@ -208,14 +202,14 @@
</xsl:call-template>
</xsl:variable>
<!-- add newline here if separate-daylogs is in effect -->
- <xsl:if test="$groupbyday='yes' and $separate-daylogs='yes'"><xsl:text>&newl;</xsl:text></xsl:if>
+ <xsl:if test="$groupbyday='yes' and $separate-daylogs='yes'"><xsl:text>&#10;</xsl:text></xsl:if>
<!-- first line is indented (other indents are done in wrap template) -->
- <xsl:text>&tab;*&space;</xsl:text>
+ <xsl:text>&#9;*&#32;</xsl:text>
<!-- set up the text to wrap -->
<xsl:variable name="txt">
<xsl:value-of select="$rev" />
<xsl:if test="$paths!=''">
- <xsl:value-of select="concat($paths,':&space;')" />
+ <xsl:value-of select="concat($paths,':&#32;')" />
</xsl:if>
<xsl:value-of select="$msg" />
</xsl:variable>
@@ -232,7 +226,7 @@
<xsl:value-of select="substring($date,1,10)" />
<!-- output time part -->
<xsl:if test="$groupbyday!='yes'">
- <xsl:text>&space;</xsl:text>
+ <xsl:text>&#32;</xsl:text>
<xsl:value-of select="substring($date,12,5)" />
</xsl:if>
</xsl:template>
@@ -306,7 +300,7 @@
<xsl:sort select="normalize-space(.)" data-type="text" />
<!-- unless we are the first entry, add a comma -->
<xsl:if test="not(position()=1)">
- <xsl:text>,&space;</xsl:text>
+ <xsl:text>,&#32;</xsl:text>
</xsl:if>
<!-- print the path name -->
<xsl:call-template name="printpath">
@@ -324,7 +318,7 @@
<xsl:sort select="normalize-space(.)" data-type="text" />
<!-- unless we are the first entry, add a comma -->
<xsl:if test="not(position()=1)">
- <xsl:text>,&space;</xsl:text>
+ <xsl:text>,&#32;</xsl:text>
</xsl:if>
<!-- print the path name -->
<xsl:value-of select="normalize-space(.)" />
@@ -382,23 +376,23 @@
<xsl:param name="txt" />
<xsl:variable name="normtxt" select="normalize-space($txt)" />
<xsl:choose>
- <xsl:when test="contains($txt,'&newl;')">
+ <xsl:when test="contains($txt,'&#10;')">
<!-- text contains newlines, do the first line -->
<xsl:call-template name="wrap">
- <xsl:with-param name="txt" select="substring-before($txt,'&newl;')" />
+ <xsl:with-param name="txt" select="substring-before($txt,'&#10;')" />
</xsl:call-template>
<!-- print tab -->
- <xsl:text>&tab;&space;&space;</xsl:text>
+ <xsl:text>&#9;&#32;&#32;</xsl:text>
<!-- wrap the rest of the text -->
<xsl:call-template name="wrap">
- <xsl:with-param name="txt" select="substring-after($txt,'&newl;')" />
+ <xsl:with-param name="txt" select="substring-after($txt,'&#10;')" />
</xsl:call-template>
</xsl:when>
<xsl:when test="(string-length($normtxt) &lt; (($linelen)-9)) or not(contains($normtxt,' '))">
<!-- this is easy, nothing to do -->
<xsl:value-of select="$normtxt" />
<!-- add newline -->
- <xsl:text>&newl;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
</xsl:when>
<xsl:otherwise>
<!-- find the first line -->
@@ -420,7 +414,7 @@
<!-- print line -->
<xsl:value-of select="$line" />
<!-- print newline and tab -->
- <xsl:text>&newl;&tab;&space;&space;</xsl:text>
+ <xsl:text>&#10;&#9;&#32;&#32;</xsl:text>
<!-- wrap the rest of the text -->
<xsl:call-template name="wrap">
<xsl:with-param name="txt" select="normalize-space(substring($normtxt,string-length($line)+1))" />
@@ -449,26 +443,26 @@
<xsl:param name="txt" />
<xsl:choose>
<!-- find starting newlines -->
- <xsl:when test="substring($txt,1,1) = '&newl;'">
+ <xsl:when test="substring($txt,1,1) = '&#10;'">
<xsl:call-template name="trim-newln">
<xsl:with-param name="txt" select="substring($txt,2)" />
</xsl:call-template>
</xsl:when>
<!-- find trailing newlines -->
- <xsl:when test="substring($txt,string-length($txt),1) = '&newl;'">
+ <xsl:when test="substring($txt,string-length($txt),1) = '&#10;'">
<xsl:call-template name="trim-newln">
<xsl:with-param name="txt" select="substring($txt,1,string-length($txt)-1)" />
</xsl:call-template>
</xsl:when>
<!-- if the message has paragrapgs, find the first one -->
- <xsl:when test="$reparagraph='yes' and contains($txt,'&newl;&newl;')">
+ <xsl:when test="$reparagraph='yes' and contains($txt,'&#10;&#10;')">
<!-- remove newlines from first paragraph -->
- <xsl:value-of select="normalize-space(substring-before($txt,'&newl;&newl;'))" />
+ <xsl:value-of select="normalize-space(substring-before($txt,'&#10;&#10;'))" />
<!-- paragraph separator -->
- <xsl:text>&newl;&newl;</xsl:text>
+ <xsl:text>&#10;&#10;</xsl:text>
<!-- do the rest of the text -->
<xsl:call-template name="trim-newln">
- <xsl:with-param name="txt" select="substring-after($txt,'&newl;&newl;')" />
+ <xsl:with-param name="txt" select="substring-after($txt,'&#10;&#10;')" />
</xsl:call-template>
</xsl:when>
<!-- remove more single newlines -->
@@ -485,7 +479,7 @@
<!-- insert a number of newlines -->
<xsl:template name="newlines">
<xsl:param name="count" />
- <xsl:text>&newl;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
<xsl:if test="$count&gt;1">
<xsl:call-template name="newlines">
<xsl:with-param name="count" select="($count)-1" />
diff -up svn2cl-0.11/svn2html.xsl~ svn2cl-0.11/svn2html.xsl
--- svn2cl-0.11/svn2html.xsl~ 2008-12-21 17:41:20.000000000 +0200
+++ svn2cl-0.11/svn2html.xsl 2009-11-02 22:30:11.000000000 +0200
@@ -47,11 +47,6 @@
-->
-<!DOCTYPE xsl:stylesheet [
- <!ENTITY newl "&#38;#xA;">
- <!ENTITY space "&#32;">
-]>
-
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
@@ -134,7 +129,7 @@
<li class="changelog_entry">
<!-- date -->
<span class="changelog_date"><xsl:value-of select="$date" /></span>
- <xsl:text>&space;</xsl:text>
+ <xsl:text>&#32;</xsl:text>
<!-- author's name -->
<span class="changelog_author"><xsl:apply-templates select="author" /></span>
</li>
@@ -145,7 +140,7 @@
<li class="changelog_entry">
<!-- date -->
<span class="changelog_date"><xsl:apply-templates select="date" /></span>
- <xsl:text>&space;</xsl:text>
+ <xsl:text>&#32;</xsl:text>
<!-- author's name -->
<span class="changelog_author"><xsl:apply-templates select="author" /></span>
</li>
@@ -167,10 +162,10 @@
<span class="changelog_revision">
<a id="r{@revision}" href="{$revlink}">[r<xsl:value-of select="@revision" />]</a>
</span>
- <xsl:text>&space;</xsl:text>
+ <xsl:text>&#32;</xsl:text>
<!-- get paths string -->
<span class="changelog_files"><xsl:apply-templates select="paths" /></span>
- <xsl:text>&space;</xsl:text>
+ <xsl:text>&#32;</xsl:text>
<!-- get message text -->
<xsl:variable name="msg">
<xsl:call-template name="trim-newln">
@@ -189,14 +184,14 @@
<xsl:template name="newlinestobr">
<xsl:param name="txt" />
<xsl:choose>
- <xsl:when test="contains($txt,'&newl;')">
+ <xsl:when test="contains($txt,'&#10;')">
<!-- text contains newlines, do the first line -->
- <xsl:value-of select="substring-before($txt,'&newl;')" />
+ <xsl:value-of select="substring-before($txt,'&#10;')" />
<!-- print new line -->
<br />
<!-- wrap the rest of the text -->
<xsl:call-template name="newlinestobr">
- <xsl:with-param name="txt" select="substring-after($txt,'&newl;')" />
+ <xsl:with-param name="txt" select="substring-after($txt,'&#10;')" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>

View File

@ -3,10 +3,10 @@ The first half of this is certainly upstream-worthy, but the second half is pres
some Fedora-specific KDE packaging thing. It's not obvious how to get some Fedora-specific KDE packaging thing. It's not obvious how to get
kde4-config to report the directory which contains the .so files. kde4-config to report the directory which contains the .so files.
--- subversion-1.6.2/build/ac-macros/kwallet.m4.kwallet --- subversion-1.6.6/build/ac-macros/kwallet.m4.kwallet
+++ subversion-1.6.2/build/ac-macros/kwallet.m4 +++ subversion-1.6.6/build/ac-macros/kwallet.m4
@@ -45,14 +45,14 @@ AC_DEFUN(SVN_LIB_KWALLET, @@ -47,14 +47,14 @@ AC_DEFUN(SVN_LIB_KWALLET,
CPPFLAGS="$CPPFLAGS $d" fi
done done
qt_include_dirs="`$PKG_CONFIG --cflags-only-I QtCore QtDBus QtGui`" qt_include_dirs="`$PKG_CONFIG --cflags-only-I QtCore QtDBus QtGui`"
- kde_dir="`$kde4_config --prefix`" - kde_dir="`$kde4_config --prefix`"
@ -19,7 +19,7 @@ kde4-config to report the directory which contains the .so files.
LIBS="$LIBS $SVN_KWALLET_LIBS" LIBS="$LIBS $SVN_KWALLET_LIBS"
qt_lib_dirs="`$PKG_CONFIG --libs-only-L QtCore QtDBus QtGui`" qt_lib_dirs="`$PKG_CONFIG --libs-only-L QtCore QtDBus QtGui`"
- LDFLAGS="$old_LDFLAGS $qt_lib_dirs -L$kde_dir/lib`$kde4_config --libsuffix`" - LDFLAGS="$old_LDFLAGS $qt_lib_dirs -L$kde_dir/lib`$kde4_config --libsuffix`"
+ LDFLAGS="$old_LDFLAGS $qt_lib_dirs -L/usr/lib`$kde4_config --libsuffix`/kde4/devel" + LDFLAGS="$old_LDFLAGS $qt_lib_dirs -L$libdir/kde4/devel"
AC_LANG(C++) AC_LANG(C++)
AC_LINK_IFELSE([ AC_LINK_IFELSE([
#include <kwallet.h> #include <kwallet.h>

View File

@ -16,21 +16,23 @@
Summary: A Modern Concurrent Version Control System Summary: A Modern Concurrent Version Control System
Name: subversion Name: subversion
Version: 1.6.5 Version: 1.6.11
Release: 2%{?dist} Release: 1%{?dist}
License: ASL 1.1 License: ASL 1.1
Group: Development/Tools Group: Development/Tools
URL: http://subversion.tigris.org/ URL: http://subversion.apache.org/
Source0: http://subversion.tigris.org/downloads/subversion-%{version}.tar.bz2 Source0: http://subversion.tigris.org/downloads/subversion-%{version}.tar.bz2
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
Source5: psvn-init.el Source5: psvn-init.el
# http://bugs.debian.org/546990
Patch0: subversion-1.6.5-newlines.patch
Patch2: subversion-1.6.0-deplibs.patch Patch2: subversion-1.6.0-deplibs.patch
Patch3: subversion-1.6.1-rpath.patch Patch3: subversion-1.6.1-rpath.patch
Patch6: subversion-1.6.0-pie.patch Patch6: subversion-1.6.0-pie.patch
Patch7: subversion-1.1.3-java.patch Patch7: subversion-1.1.3-java.patch
Patch8: subversion-1.6.2-kwallet.patch Patch8: subversion-1.6.6-kwallet.patch
BuildRequires: autoconf, libtool, python, python-devel, texinfo, which BuildRequires: autoconf, libtool, python, python-devel, texinfo, which
BuildRequires: db4-devel >= 4.1.25, swig >= 1.3.24, gettext BuildRequires: db4-devel >= 4.1.25, swig >= 1.3.24, gettext
BuildRequires: apr-devel >= 1.3.0, apr-util-devel >= 1.3.0 BuildRequires: apr-devel >= 1.3.0, apr-util-devel >= 1.3.0
@ -144,6 +146,9 @@ constructs found in different places.
%prep %prep
%setup -q %setup -q
cd contrib/client-side/svn2cl
%patch0 -p1 -b .newlines
cd ../../..
%patch2 -p1 -b .deplibs %patch2 -p1 -b .deplibs
%patch3 -p1 -b .rpath %patch3 -p1 -b .rpath
#patch6 -p1 -b .pie #patch6 -p1 -b .pie
@ -158,13 +163,15 @@ sed -i -e 's|-fpie|-fPIE|g' Makefile.in
sed -i -e 's|^XSL="$dir/|XSL="%{_datadir}/svn2cl/|' \ sed -i -e 's|^XSL="$dir/|XSL="%{_datadir}/svn2cl/|' \
contrib/client-side/svn2cl/svn2cl.sh contrib/client-side/svn2cl/svn2cl.sh
# Sanity check svn2cl_version # Sanity check svn2cl_version
v=$(contrib/client-side/svn2cl/svn2cl.sh -V | head -n 1 | awk '{ print $2 }') v=$(contrib/client-side/svn2cl/svn2cl.sh -V | sed -n '1{s/.* //;p;}')
if [ "$v" != "%{svn2cl_version}" ]; then if [ "$v" != "%{svn2cl_version}" ]; then
echo -n "ERROR: svn2cl_version not up to date in specfile: " echo -n "ERROR: svn2cl_version not up to date in specfile: "
echo "'$v' <> '%{svn2cl_version}'" echo "'$v' <> '%{svn2cl_version}'"
exit 1 exit 1
fi fi
mv tools/client-side/bash_completion .
%build %build
# Regenerate the buildsystem, so that: # Regenerate the buildsystem, so that:
# 1) patches applied to configure.in take effect # 1) patches applied to configure.in take effect
@ -187,7 +194,8 @@ export CC=gcc CXX=g++ JAVA_HOME=%{jdk_path} CFLAGS="$RPM_OPT_FLAGS"
--disable-static --with-sasl=%{_prefix} \ --disable-static --with-sasl=%{_prefix} \
--disable-neon-version-check \ --disable-neon-version-check \
--with-gnome-keyring \ --with-gnome-keyring \
--with-kwallet --with-kwallet \
--with-berkeley-db || (cat config.log; exit 1)
make %{?_smp_mflags} all make %{?_smp_mflags} all
make swig-py swig-py-lib %{swigdirs} make swig-py swig-py-lib %{swigdirs}
make swig-pl swig-pl-lib swig-rb swig-rb-lib make swig-pl swig-pl-lib swig-rb swig-rb-lib
@ -254,10 +262,11 @@ install -m 644 $RPM_SOURCE_DIR/psvn-init.el \
# Rename authz_svn INSTALL doc for docdir # Rename authz_svn INSTALL doc for docdir
ln -f subversion/mod_authz_svn/INSTALL mod_authz_svn-INSTALL ln -f subversion/mod_authz_svn/INSTALL mod_authz_svn-INSTALL
# Trim exported dependencies to SVN and APR libraries only: # Trim exported dependencies to APR libraries only:
sed -i "/^dependency_libs/{ sed -i "/^dependency_libs/{
s, -l[^ ']*, ,g; s, -l[^ ']*, ,g;
s,%{_libdir}/lib[^sa][^vp][^nr].*.la, ,g; s, -L[^ ']*, ,g;
s,%{_libdir}/lib[^a][^p][^r][^ ']*.la, ,g;
}" $RPM_BUILD_ROOT%{_libdir}/*.la }" $RPM_BUILD_ROOT%{_libdir}/*.la
# Install svn2cl # Install svn2cl
@ -269,7 +278,7 @@ install -Dpm 644 svn2cl.1 $RPM_BUILD_ROOT%{_mandir}/man1/svn2cl.1
popd popd
# Install bash completion # Install bash completion
install -Dpm 644 tools/client-side/bash_completion \ install -Dpm 644 bash_completion \
$RPM_BUILD_ROOT%{_sysconfdir}/bash_completion.d/%{name} $RPM_BUILD_ROOT%{_sysconfdir}/bash_completion.d/%{name}
%find_lang %{name} %find_lang %{name}
@ -313,8 +322,10 @@ rm -rf ${RPM_BUILD_ROOT}
%doc contrib/client-side/svnmerge/*.{README,py} %doc contrib/client-side/svnmerge/*.{README,py}
%doc contrib/client-side/wcgrep %doc contrib/client-side/wcgrep
%{_bindir}/* %{_bindir}/*
%exclude %{_bindir}/svn2cl
%{_libdir}/libsvn_*.so.* %{_libdir}/libsvn_*.so.*
%{_mandir}/man*/* %{_mandir}/man*/*
%exclude %{_mandir}/man1/svn2cl.1*
%{python_sitearch}/svn %{python_sitearch}/svn
%{python_sitearch}/libsvn %{python_sitearch}/libsvn
%{_datadir}/emacs/site-lisp/*.el %{_datadir}/emacs/site-lisp/*.el
@ -380,6 +391,38 @@ rm -rf ${RPM_BUILD_ROOT}
%{_mandir}/man1/svn2cl.1* %{_mandir}/man1/svn2cl.1*
%changelog %changelog
* Sat Apr 17 2010 Joe Orton <jorton@redhat.com> - 1.6.11-1
- update to 1.6.11
* Sat Feb 13 2010 Joe Orton <jorton@redhat.com> - 1.6.9-2
- fix detection of libkdecore
* Mon Feb 8 2010 Joe Orton <jorton@redhat.com> - 1.6.9-1
- update to 1.6.9 (#561810)
- fix comments in subversion.conf (#551484)
- update to psvn.el r40299
* Mon Jan 25 2010 Ville Skyttä <ville.skytta@iki.fi> - 1.6.6-5
- Include svn2cl and its man page only in the -svn2cl subpackage (#558598).
- Do not include bash completion in docs, it's installed.
* Mon Dec 7 2009 Stepan Kasal <skasal@redhat.com> - 1.6.6-4
- rebuild against perl 5.10.1
* Thu Nov 26 2009 Joe Orton <jorton@redhat.com> - 1.6.6-3
- rebuild for new db4
- trim libsvn_* from dependency_libs in *.la
* Wed Nov 25 2009 Kevin Kofler <Kevin@tigcc.ticalc.org> 1.6.6-2
- rebuild for Qt 4.6.0 RC1 in F13 (was built against Beta 1 with unstable ABI)
* Sun Nov 8 2009 Joe Orton <jorton@redhat.com> - 1.6.6-1
- update to 1.6.6
* Mon Nov 2 2009 Ville Skyttä <ville.skytta@iki.fi> - 1.6.5-3
- Apply svn2cl upstream patch to fix newline issues with libxml2 2.7.4+,
see http://bugs.debian.org/546990 for details.
* Sat Sep 19 2009 Ville Skyttä <ville.skytta@iki.fi> - 1.6.5-2 * Sat Sep 19 2009 Ville Skyttä <ville.skytta@iki.fi> - 1.6.5-2
- Ship svn2cl and bash completion (#496456). - Ship svn2cl and bash completion (#496456).
- Add %%defattr to -gnome and -kde. - Add %%defattr to -gnome and -kde.

View File

@ -1 +1 @@
subversion-1.6.5.tar.bz2 subversion-1.6.6.tar.bz2