@kyanny's blog

My life. Opinions are my own.

新しめの psvn.el は機能が増えている

psvn.el のバージョンというかリビジョンというか、そんなものあまり意識したことなかったけど、システムにインストールされてる奴ではなくて個別にダウンロードする必要があったので探してみたら、 1.4.6 (最新安定版) と 1.5.0-rc5 とで、同梱されてる psvn.el に結構差があった。

Apache Subversion Source Code が、 1.4.6 リリース判に含まれるほう。
Apache Subversion Source Code が、 1.5.0-rc5 に入っているほう。 trunk との差分はわかりません。

P K i で svn propset svn:keywords Id On 相当のことができるショートカットが追加されていたり (TODO になってたやつ)、結構ちゃんと進歩しているっぽい。あと FAQ に、ユーザー名はどうやって入れるの? svn-process バッファに切り替えて RET 押せ、とか、困っていたことも解決したりして、調べた甲斐がありました。

ちなみに rc5 のほうのレポジトリだと同じ階層に dsvn.el も入ってました。

--- psvn.el.svn	2008-05-19 15:57:41.000000000 +0900
+++ psvn.el	2008-04-04 06:07:01.000000000 +0900
@@ -1,8 +1,8 @@
 ;;; psvn.el --- Subversion interface for emacs
-;; Copyright (C) 2002-2006 by Stefan Reichoer
+;; Copyright (C) 2002-2008 by Stefan Reichoer
 
-;; Author: Stefan Reichoer, <stefan@xsteve.at>
-;; $Id$
+;; Author: Stefan Reichoer <stefan@xsteve.at>
+;; $Id: psvn.el 30224 2008-04-03 17:43:15Z xsteve $
 
 ;; 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
@@ -22,7 +22,10 @@
 ;;; Commentary
 
 ;; psvn.el is tested with GNU Emacs 21.3 on windows, debian linux,
-;; freebsd5, red hat el3 with svn 1.2.3
+;; freebsd5, red hat el4, ubuntu edgy with svn 1.4.0
+
+;; psvn.el needs at least svn 1.1.0
+;; if you upgrade to a higher version, you need to do a fresh checkout
 
 ;; psvn.el is an interface for the revision control tool subversion
 ;; (see http://subversion.tigris.org)
@@ -30,7 +33,7 @@
 ;; At the moment the following commands are implemented:
 ;;
 ;; M-x svn-status: run 'svn -status -v'
-;; M-x svn-examine (like psvn.el cvs-examine) is alias for svn-status
+;; M-x svn-examine (like pcl-cvs cvs-examine) is alias for svn-status
 ;;
 ;; and show the result in the svn-status-buffer-name buffer (normally: *svn-status*).
 ;; If svn-status-verbose is set to nil, only "svn status" without "-v"
@@ -51,8 +54,11 @@
 ;; A     - svn-status-add-file-recursively  run 'svn add'
 ;; +     - svn-status-make-directory        run 'svn mkdir'
 ;; R     - svn-status-mv                    run 'svn mv'
+;; C     - svn-status-cp                    run 'svn cp'
 ;; D     - svn-status-rm                    run 'svn rm'
 ;; M-c   - svn-status-cleanup               run 'svn cleanup'
+;; k     - svn-status-lock                  run 'svn lock'
+;; K     - svn-status-unlock                run 'svn unlock'
 ;; b     - svn-status-blame                 run 'svn blame'
 ;; X e   - svn-status-export                run 'svn export'
 ;; RET   - svn-status-find-file-or-examine-directory
@@ -61,13 +67,14 @@
 ;; E     - svn-status-ediff-with-revision
 ;; X X   - svn-status-resolve-conflicts
 ;; s     - svn-status-show-process-buffer
+;; h     - svn-status-pop-to-partner-buffer
 ;; e     - svn-status-toggle-edit-cmd-flag
 ;; ?     - svn-status-toggle-hide-unknown
 ;; _     - svn-status-toggle-hide-unmodified
 ;; m     - svn-status-set-user-mark
 ;; u     - svn-status-unset-user-mark
 ;; $     - svn-status-toggle-elide
-;; w     - svn-status-copy-filename-as-kill
+;; w     - svn-status-copy-current-line-info
 ;; DEL   - svn-status-unset-user-mark-backwards
 ;; * !   - svn-status-unset-all-usermarks
 ;; * ?   - svn-status-mark-unknown
@@ -75,9 +82,12 @@
 ;; * M   - svn-status-mark-modified
 ;; * D   - svn-status-mark-deleted
 ;; * *   - svn-status-mark-changed
+;; * .   - svn-status-mark-by-file-ext
+;; * %   - svn-status-mark-filename-regexp
 ;; .     - svn-status-goto-root-or-return
 ;; f     - svn-status-find-file
 ;; o     - svn-status-find-file-other-window
+;; C-o   - svn-status-find-file-other-window-noselect
 ;; v     - svn-status-view-file-other-window
 ;; I     - svn-status-parse-info
 ;; V     - svn-status-svnversion
@@ -89,9 +99,13 @@
 ;; P I   - svn-status-property-ignore-file-extension
 ;; P C-i - svn-status-property-edit-svn-ignore
 ;; P k   - svn-status-property-set-keyword-list
+;; P K i - svn-status-property-set-keyword-id
+;; P K d - svn-status-property-set-keyword-date
 ;; P y   - svn-status-property-set-eol-style
 ;; P x   - svn-status-property-set-executable
-;; h     - svn-status-use-history
+;; P m   - svn-status-property-set-mime-type
+;; H     - svn-status-use-history
+;; x     - svn-status-update-buffer
 ;; q     - svn-status-bury-buffer
 
 ;; C-x C-j - svn-status-dired-jump
@@ -117,7 +131,7 @@
 ;; The latest version of psvn.el can be found at:
 ;;   http://www.xsteve.at/prg/emacs/psvn.el
 ;; 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/emacs emacs-svn
 
 ;; TODO:
 ;; * shortcut for svn propset svn:keywords "Date" psvn.el
@@ -126,7 +140,6 @@
 ;; * when editing the command line - offer help from the svn client
 ;; * finish svn-status-property-set
 ;; * Add repository browser
-;; * Improve support for svn blame
 ;; * Get rid of all byte-compiler warnings
 ;; * SVK working copy support
 ;; * multiple independent buffers in svn-status-mode
@@ -136,36 +149,71 @@
 ;; * add                       implemented
 ;; * blame                     implemented
 ;; * cat                       implemented
-;; * checkout (co)
+;; * checkout (co)             implemented
 ;; * cleanup                   implemented
 ;; * commit (ci)               implemented
-;; * copy (cp)
+;; * copy (cp)                 implemented
 ;; * delete (del, remove, rm)  implemented
 ;; * diff (di)                 implemented
 ;; * export                    implemented
 ;; * help (?, h)
-;; * import
+;; * import                    used         (in svn-admin-create-trunk-directory)
 ;; * info                      implemented
-;; * list (ls)
+;; * list (ls)                 implemented
+;; * lock                      implemented
 ;; * log                       implemented
 ;; * merge
 ;; * mkdir                     implemented
 ;; * move (mv, rename, ren)    implemented
 ;; * propdel (pdel)            implemented
 ;; * propedit (pedit, pe)      not needed
-;; * propget (pget, pg)        used
+;; * propget (pget, pg)        used         (in svn-status-property-edit)
 ;; * proplist (plist, pl)      implemented
-;; * propset (pset, ps)        used
+;; * propset (pset, ps)        used         (in svn-prop-edit-do-it)
 ;; * resolved                  implemented
 ;; * revert                    implemented
 ;; * status (stat, st)         implemented
 ;; * switch (sw)
+;; * unlock                    implemented
 ;; * update (up)               implemented
 
 ;; For the not yet implemented commands you should use the command line
 ;; svn client. If there are user requests for any missing commands I will
 ;; probably implement them.
 
+;; There is also limited support for the web-based software project management and bug/issue tracking system trac
+;; Trac ticket links can be enabled in the *svn-log* buffers when using the following:
+;; (setq svn-log-link-handlers '(trac-ticket-short))
+
+;; ---------------------------
+;; Frequently asked questions:
+;; ---------------------------
+
+;; Q1: I need support for user names with blanks/spaces
+;; A1: Add the user names to svn-user-names-including-blanks and set the
+;;     svn-pre-parse-status-hook.
+;;     The problem is, that the user names and the file names from the svn status
+;;     output can both contain blanks. Blanks in file names are supported.
+;;     the svn-user-names-including-blanks list is used to replace the spaces
+;;     in the user names with - to overcome this problem
+
+;; Q2: My svn-update command it taking a really long time. How can I
+;;     see what's going on?
+;; A2: In the *svn-status* buffer press "s".
+
+;; Q3: How do I enter a username and password?
+;; A3: In the *svn-status* buffer press "s", switch to the
+;;     *svn-process* buffer and press enter. You will be prompted for
+;;     username and password.
+
+;; Q4: What does "?", "M", and "C" in the first column of the
+;;     *svn-status* buffer mean?
+;; A4: "?" means the file(s) is not under Subversion control
+;;     "M" means you have a locally modified file
+;;     "C" means there is a conflict
+;;     "@$&#!" means someone is saying nasty things to you
+
+
 ;; Comments / suggestions and bug reports are welcome!
 
 ;; Development notes
@@ -189,20 +237,29 @@
 
 (require 'easymenu)