From: Stefan Monnier Date: Mon, 13 Dec 2004 06:30:40 +0000 (+0000) Subject: (vc-svn-repository-hostname): Adjust to new format. X-Git-Tag: ttn-vms-21-2-B4~3296 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=17a5a3014db451821e4bfaeb84980de7ac650be1;p=emacs.git (vc-svn-repository-hostname): Adjust to new format. Reported by Ville Skytt�scop@xemacs.org>. (vc-svn-annotate-current-time, vc-svn-annotate-time-of-rev) (vc-svn-annotate-time, vc-svn-annotate-extract-revision-at-line) (vc-svn-annotate-command, vc-svn-annotate-re): Support for svn annotate. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 866339b7ca5..b5cc31b9363 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2004-12-13 Stefan Monnier + + * vc-svn.el (vc-svn-repository-hostname): Adjust to new format. + Reported by Ville Skytt,Ad(B . + (vc-svn-annotate-current-time, vc-svn-annotate-time-of-rev) + (vc-svn-annotate-time, vc-svn-annotate-extract-revision-at-line) + (vc-svn-annotate-command, vc-svn-annotate-re): Support for svn annotate. + 2004-12-12 Juri Linkov * files.el (find-file-other-window, find-file-other-frame): diff --git a/lisp/vc-svn.el b/lisp/vc-svn.el index fafb5eff7cd..cbb951d60b7 100644 --- a/lisp/vc-svn.el +++ b/lisp/vc-svn.el @@ -447,10 +447,14 @@ and that it passes `vc-svn-global-switches' to it before FLAGS." (vc-insert-file (expand-file-name ".svn/entries" dirname))) (goto-char (point-min)) (when (re-search-forward - (concat "name=\"svn:this_dir\"[\n\t ]*" - "\\([-a-z]+=\"[^\"]*\"[\n\t ]*\\)*?" + ;; Old `svn' used name="svn:dir", newer use just name="". + (concat "name=\"\\(?:svn:this_dir\\)?\"[\n\t ]*" + "\\(?:[-a-z]+=\"[^\"]*\"[\n\t ]*\\)*?" "url=\"\\([^\"]+\\)\"") nil t) - (match-string 2)))) + ;; This is not a hostname but a URL. This may actually be considered + ;; as a feature since it allows vc-svn-stay-local to specify different + ;; behavior for different modules on the same server. + (match-string 1)))) (defun vc-svn-parse-status (localp) "Parse output of \"svn status\" command in the current buffer. @@ -505,6 +509,30 @@ essential information." (and (string-match "^[0-9]" tag) (not (string-match "[^0-9]" tag)))) +;; Support for `svn annotate' + +(defun vc-svn-annotate-command (file buf &optional rev) + (vc-svn-command buf 0 file "annotate" (if rev (concat "-r" rev)))) + +(defun vc-svn-annotate-time-of-rev (rev) + ;; Arbitrarily assume 10 commmits per day. + (/ (string-to-number rev) 10.0)) + +(defun vc-svn-annotate-current-time () + (vc-svn-annotate-time-of-rev vc-annotate-parent-rev)) + +(defconst vc-svn-annotate-re "[ \t]*\\([0-9]+\\)[ \t]+[^\t ]+ ") + +(defun vc-svn-annotate-time () + (when (looking-at vc-svn-annotate-re) + (goto-char (match-end 0)) + (vc-svn-annotate-time-of-rev (match-string 1)))) + +(defun vc-svn-annotate-extract-revision-at-line () + (save-excursion + (beginning-of-line) + (if (looking-at vc-svn-annotate-re) (match-string 1)))) + (provide 'vc-svn) ;; arch-tag: 02f10c68-2b4d-453a-90fc-1eee6cfb268d