Mercurial > emacs
annotate lisp/vc-svn.el @ 98182:19ec1646fe6c
The Rmail/mbox merge has been abandoned in favor of a restart using
the current rmail.el file. A comprehensive list of changes will be
supplied when pmail.el is morphed back into rmail.el
The current status is that pmail.el supports basic Rmail navigation
(no summary support) and shows the current message in a special
buffer using buffer-swap-text. No decoding is done yet. That is the
next step.
author | Paul Reilly <pmr@pajato.com> |
---|---|
date | Mon, 15 Sep 2008 20:56:53 +0000 |
parents | 4a399b9bc4b9 |
children | e8a025cdac4a |
rev | line source |
---|---|
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1 ;;; vc-svn.el --- non-resident support for Subversion version-control |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
2 |
79721 | 3 ;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
4 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
5 ;; Author: FSF (see vc.el for full credits) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
6 ;; Maintainer: Stefan Monnier <monnier@gnu.org> |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
7 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
8 ;; This file is part of GNU Emacs. |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
9 |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94563
diff
changeset
|
10 ;; GNU Emacs is free software: you can redistribute it and/or modify |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
11 ;; it under the terms of the GNU General Public License as published by |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94563
diff
changeset
|
12 ;; the Free Software Foundation, either version 3 of the License, or |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94563
diff
changeset
|
13 ;; (at your option) any later version. |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
14 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
15 ;; GNU Emacs is distributed in the hope that it will be useful, |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
18 ;; GNU General Public License for more details. |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
19 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
20 ;; You should have received a copy of the GNU General Public License |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94563
diff
changeset
|
21 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
22 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
23 ;;; Commentary: |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
24 |
85122
c2cc930bdd9e
This is the actual fix....
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85114
diff
changeset
|
25 ;; Sync'd with Subversion's vc-svn.el as of revision 5801. but this version |
c2cc930bdd9e
This is the actual fix....
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85114
diff
changeset
|
26 ;; has been extensively modified since to handle filesets. |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
27 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
28 ;;; Code: |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
29 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
30 (eval-when-compile |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
31 (require 'vc)) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
32 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
33 ;;; |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
34 ;;; Customization options |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
35 ;;; |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
36 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
37 (defcustom vc-svn-global-switches nil |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
38 "*Global switches to pass to any SVN command." |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
39 :type '(choice (const :tag "None" nil) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
40 (string :tag "Argument String") |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
41 (repeat :tag "Argument List" |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
42 :value ("") |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
43 string)) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59446
diff
changeset
|
44 :version "22.1" |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
45 :group 'vc) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
46 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
47 (defcustom vc-svn-register-switches nil |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
48 "*Extra switches for registering a file into SVN. |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
49 A string or list of strings passed to the checkin program by |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
50 \\[vc-register]." |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
51 :type '(choice (const :tag "None" nil) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
52 (string :tag "Argument String") |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
53 (repeat :tag "Argument List" |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
54 :value ("") |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
55 string)) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59446
diff
changeset
|
56 :version "22.1" |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
57 :group 'vc) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
58 |
52033
9b5f3940a1ef
(vc-svn-diff-switches): Don't default to vc-diff-switches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51732
diff
changeset
|
59 (defcustom vc-svn-diff-switches |
9b5f3940a1ef
(vc-svn-diff-switches): Don't default to vc-diff-switches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51732
diff
changeset
|
60 t ;`svn' doesn't support common args like -c or -b. |
9b5f3940a1ef
(vc-svn-diff-switches): Don't default to vc-diff-switches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51732
diff
changeset
|
61 "String or list of strings specifying extra switches for svn diff under VC. |
9b5f3940a1ef
(vc-svn-diff-switches): Don't default to vc-diff-switches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51732
diff
changeset
|
62 If nil, use the value of `vc-diff-switches'. |
9b5f3940a1ef
(vc-svn-diff-switches): Don't default to vc-diff-switches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51732
diff
changeset
|
63 If you want to force an empty list of arguments, use t." |
9b5f3940a1ef
(vc-svn-diff-switches): Don't default to vc-diff-switches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51732
diff
changeset
|
64 :type '(choice (const :tag "Unspecified" nil) |
9b5f3940a1ef
(vc-svn-diff-switches): Don't default to vc-diff-switches.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51732
diff
changeset
|
65 (const :tag "None" t) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
66 (string :tag "Argument String") |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
67 (repeat :tag "Argument List" |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
68 :value ("") |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
69 string)) |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59446
diff
changeset
|
70 :version "22.1" |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
71 :group 'vc) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
72 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
73 (defcustom vc-svn-header (or (cdr (assoc 'SVN vc-header-alist)) '("\$Id\$")) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
74 "*Header keywords to be inserted by `vc-insert-headers'." |
59996
aac0a33f5772
Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents:
59446
diff
changeset
|
75 :version "22.1" |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
76 :type '(repeat string) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
77 :group 'vc) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
78 |
76025
a4103f62dec5
Remove the code inherited from CVSREAD and `cvs edit'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75719
diff
changeset
|
79 ;; We want to autoload it for use by the autoloaded version of |
a4103f62dec5
Remove the code inherited from CVSREAD and `cvs edit'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75719
diff
changeset
|
80 ;; vc-svn-registered, but we want the value to be compiled at startup, not |
a4103f62dec5
Remove the code inherited from CVSREAD and `cvs edit'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75719
diff
changeset
|
81 ;; at dump time. |
a4103f62dec5
Remove the code inherited from CVSREAD and `cvs edit'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75719
diff
changeset
|
82 ;; ;;;###autoload |
a4103f62dec5
Remove the code inherited from CVSREAD and `cvs edit'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75719
diff
changeset
|
83 (defconst vc-svn-admin-directory |
a4103f62dec5
Remove the code inherited from CVSREAD and `cvs edit'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75719
diff
changeset
|
84 (cond ((and (memq system-type '(cygwin windows-nt ms-dos)) |
73848
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
85 (getenv "SVN_ASP_DOT_NET_HACK")) |
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
86 "_svn") |
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
87 (t ".svn")) |
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
88 "The name of the \".svn\" subdirectory or its equivalent.") |
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
89 |
81968
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
90 ;;; Properties of the backend |
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
91 |
94563
a0bb8ca25a33
Clean up vc*-revision-granularity and vc*-checkout-model.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
94521
diff
changeset
|
92 (defun vc-svn-revision-granularity () 'repository) |
a0bb8ca25a33
Clean up vc*-revision-granularity and vc*-checkout-model.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
94521
diff
changeset
|
93 (defun vc-svn-checkout-model (files) 'implicit) |
a0bb8ca25a33
Clean up vc*-revision-granularity and vc*-checkout-model.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
94521
diff
changeset
|
94 |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
95 ;;; |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
96 ;;; State-querying functions |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
97 ;;; |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
98 |
73848
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
99 ;;; vc-svn-admin-directory is generally not defined when the |
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
100 ;;; autoloaded function is called. |
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
101 |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
102 ;;;###autoload (defun vc-svn-registered (f) |
73848
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
103 ;;;###autoload (let ((admin-dir (cond ((and (eq system-type 'windows-nt) |
76025
a4103f62dec5
Remove the code inherited from CVSREAD and `cvs edit'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75719
diff
changeset
|
104 ;;;###autoload (getenv "SVN_ASP_DOT_NET_HACK")) |
a4103f62dec5
Remove the code inherited from CVSREAD and `cvs edit'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75719
diff
changeset
|
105 ;;;###autoload "_svn") |
a4103f62dec5
Remove the code inherited from CVSREAD and `cvs edit'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75719
diff
changeset
|
106 ;;;###autoload (t ".svn")))) |
73848
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
107 ;;;###autoload (when (file-readable-p (expand-file-name |
76025
a4103f62dec5
Remove the code inherited from CVSREAD and `cvs edit'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75719
diff
changeset
|
108 ;;;###autoload (concat admin-dir "/entries") |
a4103f62dec5
Remove the code inherited from CVSREAD and `cvs edit'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75719
diff
changeset
|
109 ;;;###autoload (file-name-directory f))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
110 ;;;###autoload (load "vc-svn") |
73848
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
111 ;;;###autoload (vc-svn-registered f)))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
112 |
50999
c09edac18f97
(completion-ignored-extensions): Add .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50927
diff
changeset
|
113 ;;;###autoload |
c09edac18f97
(completion-ignored-extensions): Add .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50927
diff
changeset
|
114 (add-to-list 'completion-ignored-extensions ".svn/") |
c09edac18f97
(completion-ignored-extensions): Add .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50927
diff
changeset
|
115 |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
116 (defun vc-svn-registered (file) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
117 "Check if FILE is SVN registered." |
73848
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
118 (when (file-readable-p (expand-file-name (concat vc-svn-admin-directory |
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
119 "/entries") |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
120 (file-name-directory file))) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
121 (with-temp-buffer |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
122 (cd (file-name-directory file)) |
68651
3bd95f4f2941
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
67553
diff
changeset
|
123 (let ((status |
67553
10707dfc70f3
(vc-svn-registered): Use it to avoid popping up a spurious
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67547
diff
changeset
|
124 (condition-case nil |
10707dfc70f3
(vc-svn-registered): Use it to avoid popping up a spurious
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67547
diff
changeset
|
125 ;; Ignore all errors. |
10707dfc70f3
(vc-svn-registered): Use it to avoid popping up a spurious
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67547
diff
changeset
|
126 (vc-svn-command t t file "status" "-v") |
10707dfc70f3
(vc-svn-registered): Use it to avoid popping up a spurious
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67547
diff
changeset
|
127 ;; Some problem happened. E.g. We can't find an `svn' |
10707dfc70f3
(vc-svn-registered): Use it to avoid popping up a spurious
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67547
diff
changeset
|
128 ;; executable. We used to only catch `file-error' but when |
10707dfc70f3
(vc-svn-registered): Use it to avoid popping up a spurious
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67547
diff
changeset
|
129 ;; the process is run on a remote host via Tramp, the error |
10707dfc70f3
(vc-svn-registered): Use it to avoid popping up a spurious
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67547
diff
changeset
|
130 ;; is only reported via the exit status which is turned into |
10707dfc70f3
(vc-svn-registered): Use it to avoid popping up a spurious
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67547
diff
changeset
|
131 ;; an `error' by vc-do-command. |
10707dfc70f3
(vc-svn-registered): Use it to avoid popping up a spurious
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67547
diff
changeset
|
132 (error nil)))) |
10707dfc70f3
(vc-svn-registered): Use it to avoid popping up a spurious
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67547
diff
changeset
|
133 (when (eq 0 status) |
87864
54863df609a3
(vc-svn-registered): Make it work for non-existent
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87853
diff
changeset
|
134 (let ((parsed (vc-svn-parse-status file))) |
54863df609a3
(vc-svn-registered): Make it work for non-existent
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87853
diff
changeset
|
135 (and parsed (not (memq parsed '(ignored unregistered)))))))))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
136 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
137 (defun vc-svn-state (file &optional localp) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
138 "SVN-specific version of `vc-state'." |
50927
6f478e2878c7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50922
diff
changeset
|
139 (setq localp (or localp (vc-stay-local-p file))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
140 (with-temp-buffer |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
141 (cd (file-name-directory file)) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
142 (vc-svn-command t 0 file "status" (if localp "-v" "-u")) |
73444
ee7eeb5732b2
(vc-svn-parse-status): Remove unused arg `localp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
68740
diff
changeset
|
143 (vc-svn-parse-status file))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
144 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
145 (defun vc-svn-state-heuristic (file) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
146 "SVN-specific state heuristic." |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
147 (vc-svn-state file 'local)) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
148 |
94003
2ecb2ea8d5b5
Change `dir-status' to not take (and pass) status-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93956
diff
changeset
|
149 (defun vc-svn-after-dir-status (callback) |
87853
cec6a1fe32a4
* vc-svn.el (vc-svn-after-dir-status): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87845
diff
changeset
|
150 (let ((state-map '((?A . added) |
94006
a4655455212b
(vc-svn-after-dir-status): Complete last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94003
diff
changeset
|
151 (?C . conflict) |
a4655455212b
(vc-svn-after-dir-status): Complete last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94003
diff
changeset
|
152 (?D . removed) |
a4655455212b
(vc-svn-after-dir-status): Complete last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94003
diff
changeset
|
153 (?I . ignored) |
a4655455212b
(vc-svn-after-dir-status): Complete last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94003
diff
changeset
|
154 (?M . edited) |
a4655455212b
(vc-svn-after-dir-status): Complete last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94003
diff
changeset
|
155 (?R . removed) |
a4655455212b
(vc-svn-after-dir-status): Complete last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94003
diff
changeset
|
156 (?? . unregistered) |
a4655455212b
(vc-svn-after-dir-status): Complete last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94003
diff
changeset
|
157 ;; This is what vc-svn-parse-status does. |
a4655455212b
(vc-svn-after-dir-status): Complete last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94003
diff
changeset
|
158 (?~ . edited))) |
87853
cec6a1fe32a4
* vc-svn.el (vc-svn-after-dir-status): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87845
diff
changeset
|
159 result) |
cec6a1fe32a4
* vc-svn.el (vc-svn-after-dir-status): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87845
diff
changeset
|
160 (goto-char (point-min)) |
cec6a1fe32a4
* vc-svn.el (vc-svn-after-dir-status): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87845
diff
changeset
|
161 (while (re-search-forward "^\\(.\\)..... \\(.*\\)$" nil t) |
cec6a1fe32a4
* vc-svn.el (vc-svn-after-dir-status): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87845
diff
changeset
|
162 (let ((state (cdr (assq (aref (match-string 1) 0) state-map))) |
cec6a1fe32a4
* vc-svn.el (vc-svn-after-dir-status): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87845
diff
changeset
|
163 (filename (match-string 2))) |
cec6a1fe32a4
* vc-svn.el (vc-svn-after-dir-status): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87845
diff
changeset
|
164 (when state |
93461
3afeea9a48a3
* vc.el (vc-status-add-entry): Assume ENTRY is a list not a cons.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93382
diff
changeset
|
165 (setq result (cons (list filename state) result))))) |
94006
a4655455212b
(vc-svn-after-dir-status): Complete last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94003
diff
changeset
|
166 (funcall callback result))) |
87853
cec6a1fe32a4
* vc-svn.el (vc-svn-after-dir-status): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87845
diff
changeset
|
167 |
94003
2ecb2ea8d5b5
Change `dir-status' to not take (and pass) status-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93956
diff
changeset
|
168 (defun vc-svn-dir-status (dir callback) |
87853
cec6a1fe32a4
* vc-svn.el (vc-svn-after-dir-status): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87845
diff
changeset
|
169 "Run 'svn status' for DIR and update BUFFER via CALLBACK. |
cec6a1fe32a4
* vc-svn.el (vc-svn-after-dir-status): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87845
diff
changeset
|
170 CALLBACK is called as (CALLBACK RESULT BUFFER), where |
cec6a1fe32a4
* vc-svn.el (vc-svn-after-dir-status): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87845
diff
changeset
|
171 RESULT is a list of conses (FILE . STATE) for directory DIR." |
93382
8e46096e0cb3
* vc.el (vc-status-menu-map, vc-status-mode-map): Bind vc-revert.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93124
diff
changeset
|
172 (vc-svn-command (current-buffer) 'async nil "status") |
8e46096e0cb3
* vc.el (vc-status-menu-map, vc-status-mode-map): Bind vc-revert.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93124
diff
changeset
|
173 (vc-exec-after |
94003
2ecb2ea8d5b5
Change `dir-status' to not take (and pass) status-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
93956
diff
changeset
|
174 `(vc-svn-after-dir-status (quote ,callback)))) |
87845
800f4ac6c848
* vc-svn.el (vc-svn-dir-status): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87785
diff
changeset
|
175 |
95048
883c17cb4544
Add extra-headers method for SVN.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
95020
diff
changeset
|
176 (defun vc-svn-status-extra-headers (dir) |
883c17cb4544
Add extra-headers method for SVN.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
95020
diff
changeset
|
177 "Generate extra status headers for a Subversion working copy." |
883c17cb4544
Add extra-headers method for SVN.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
95020
diff
changeset
|
178 (vc-svn-command "*vc*" 0 nil "info") |
883c17cb4544
Add extra-headers method for SVN.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
95020
diff
changeset
|
179 (let ((repo |
96003
243cf028ce86
(log-view-per-file-logs): Pacify byte compiler.
Juanma Barranquero <lekktu@gmail.com>
parents:
95966
diff
changeset
|
180 (save-excursion |
95048
883c17cb4544
Add extra-headers method for SVN.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
95020
diff
changeset
|
181 (and (progn |
883c17cb4544
Add extra-headers method for SVN.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
95020
diff
changeset
|
182 (set-buffer "*vc*") |
883c17cb4544
Add extra-headers method for SVN.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
95020
diff
changeset
|
183 (goto-char (point-min)) |
883c17cb4544
Add extra-headers method for SVN.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
95020
diff
changeset
|
184 (re-search-forward "Repository Root: *\\(.*\\)" nil t)) |
883c17cb4544
Add extra-headers method for SVN.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
95020
diff
changeset
|
185 (match-string 1))))) |
883c17cb4544
Add extra-headers method for SVN.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
95020
diff
changeset
|
186 (concat |
883c17cb4544
Add extra-headers method for SVN.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
95020
diff
changeset
|
187 (cond (repo |
883c17cb4544
Add extra-headers method for SVN.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
95020
diff
changeset
|
188 (concat |
883c17cb4544
Add extra-headers method for SVN.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
95020
diff
changeset
|
189 (propertize "Repository : " 'face 'font-lock-type-face) |
883c17cb4544
Add extra-headers method for SVN.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
95020
diff
changeset
|
190 (propertize repo 'face 'font-lock-variable-name-face))) |
883c17cb4544
Add extra-headers method for SVN.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
95020
diff
changeset
|
191 (t ""))))) |
883c17cb4544
Add extra-headers method for SVN.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
95020
diff
changeset
|
192 |
85139
8ba0e30716a5
Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85122
diff
changeset
|
193 (defun vc-svn-working-revision (file) |
8ba0e30716a5
Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85122
diff
changeset
|
194 "SVN-specific version of `vc-working-revision'." |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
195 ;; There is no need to consult RCS headers under SVN, because we |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
196 ;; get the workfile version for free when we recognize that a file |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
197 ;; is registered in SVN. |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
198 (vc-svn-registered file) |
85139
8ba0e30716a5
Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85122
diff
changeset
|
199 (vc-file-getprop file 'vc-working-revision)) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
200 |
51732
f43bd5204ab4
(vc-svn-use-edit): Make it into a const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50999
diff
changeset
|
201 ;; vc-svn-mode-line-string doesn't exist because the default implementation |
f43bd5204ab4
(vc-svn-use-edit): Make it into a const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50999
diff
changeset
|
202 ;; works just fine. |
f43bd5204ab4
(vc-svn-use-edit): Make it into a const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50999
diff
changeset
|
203 |
85141
b16f7408cd3f
Carry through today's big terminology change to a few places where I
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85139
diff
changeset
|
204 (defun vc-svn-previous-revision (file rev) |
68653
61cc95860e05
(vc-svn-previous-version, vc-svn-next-version): New funcs.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
68651
diff
changeset
|
205 (let ((newrev (1- (string-to-number rev)))) |
61cc95860e05
(vc-svn-previous-version, vc-svn-next-version): New funcs.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
68651
diff
changeset
|
206 (when (< 0 newrev) |
61cc95860e05
(vc-svn-previous-version, vc-svn-next-version): New funcs.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
68651
diff
changeset
|
207 (number-to-string newrev)))) |
61cc95860e05
(vc-svn-previous-version, vc-svn-next-version): New funcs.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
68651
diff
changeset
|
208 |
85141
b16f7408cd3f
Carry through today's big terminology change to a few places where I
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85139
diff
changeset
|
209 (defun vc-svn-next-revision (file rev) |
68653
61cc95860e05
(vc-svn-previous-version, vc-svn-next-version): New funcs.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
68651
diff
changeset
|
210 (let ((newrev (1+ (string-to-number rev)))) |
85141
b16f7408cd3f
Carry through today's big terminology change to a few places where I
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85139
diff
changeset
|
211 ;; The "working revision" is an uneasy conceptual fit under Subversion; |
68653
61cc95860e05
(vc-svn-previous-version, vc-svn-next-version): New funcs.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
68651
diff
changeset
|
212 ;; we use it as the upper bound until a better idea comes along. If the |
61cc95860e05
(vc-svn-previous-version, vc-svn-next-version): New funcs.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
68651
diff
changeset
|
213 ;; workfile version W coincides with the tree's latest revision R, then |
61cc95860e05
(vc-svn-previous-version, vc-svn-next-version): New funcs.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
68651
diff
changeset
|
214 ;; this check prevents a "no such revision: R+1" error. Otherwise, it |
61cc95860e05
(vc-svn-previous-version, vc-svn-next-version): New funcs.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
68651
diff
changeset
|
215 ;; inhibits showing of W+1 through R, which could be considered anywhere |
61cc95860e05
(vc-svn-previous-version, vc-svn-next-version): New funcs.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
68651
diff
changeset
|
216 ;; from gracious to impolite. |
85139
8ba0e30716a5
Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85122
diff
changeset
|
217 (unless (< (string-to-number (vc-file-getprop file 'vc-working-revision)) |
68653
61cc95860e05
(vc-svn-previous-version, vc-svn-next-version): New funcs.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
68651
diff
changeset
|
218 newrev) |
61cc95860e05
(vc-svn-previous-version, vc-svn-next-version): New funcs.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
68651
diff
changeset
|
219 (number-to-string newrev)))) |
61cc95860e05
(vc-svn-previous-version, vc-svn-next-version): New funcs.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
68651
diff
changeset
|
220 |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
221 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
222 ;;; |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
223 ;;; State-changing functions |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
224 ;;; |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
225 |
81968
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
226 (defun vc-svn-create-repo () |
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
227 "Create a new SVN repository." |
94847
5e64dca662f0
Remove assumption about what nil means as a first arument to vc-do-command.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
94806
diff
changeset
|
228 (vc-do-command "*vc*" 0 "svnadmin" '("create" "SVN")) |
5e64dca662f0
Remove assumption about what nil means as a first arument to vc-do-command.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
94806
diff
changeset
|
229 (vc-do-command "*vc*" 0 "svn" '(".") |
81968
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
230 "checkout" (concat "file://" default-directory "SVN"))) |
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
231 |
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
232 (defun vc-svn-register (files &optional rev comment) |
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
233 "Register FILES into the SVN version-control system. |
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
234 The COMMENT argument is ignored This does an add but not a commit. |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
235 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
236 `vc-register-switches' and `vc-svn-register-switches' are passed to |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
237 the SVN command (in that order)." |
81968
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
238 (apply 'vc-svn-command nil 0 files "add" (vc-switches 'SVN 'register))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
239 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
240 (defun vc-svn-responsible-p (file) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
241 "Return non-nil if SVN thinks it is responsible for FILE." |
73848
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
242 (file-directory-p (expand-file-name vc-svn-admin-directory |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
243 (if (file-directory-p file) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
244 file |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
245 (file-name-directory file))))) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
246 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
247 (defalias 'vc-svn-could-register 'vc-svn-responsible-p |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
248 "Return non-nil if FILE could be registered in SVN. |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
249 This is only possible if SVN is responsible for FILE's directory.") |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
250 |
81968
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
251 (defun vc-svn-checkin (files rev comment) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
252 "SVN-specific version of `vc-backend-checkin'." |
91989
582312e95923
(vc-svn-program): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
91979
diff
changeset
|
253 (if rev (error "Committing to a specific revision is unsupported in SVN")) |
55900
d8a2b8a11274
2004-06-03 Karl Fogel <kfogel@red-bean.com>
Karl Fogel <kfogel@red-bean.com>
parents:
55004
diff
changeset
|
254 (let ((status (apply |
81968
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
255 'vc-svn-command nil 1 files "ci" |
55900
d8a2b8a11274
2004-06-03 Karl Fogel <kfogel@red-bean.com>
Karl Fogel <kfogel@red-bean.com>
parents:
55004
diff
changeset
|
256 (nconc (list "-m" comment) (vc-switches 'SVN 'checkin))))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
257 (set-buffer "*vc*") |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
258 (goto-char (point-min)) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
259 (unless (equal status 0) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
260 ;; Check checkin problem. |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
261 (cond |
50900
d853a98e1678
(vc-svn-dired-state-info): Use `added' for added files and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50823
diff
changeset
|
262 ((search-forward "Transaction is out of date" nil t) |
81968
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
263 (mapc (lambda (file) (vc-file-setprop file 'vc-state 'needs-merge)) |
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
264 files) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
265 (error (substitute-command-keys |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
266 (concat "Up-to-date check failed: " |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
267 "type \\[vc-next-action] to merge in changes")))) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
268 (t |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
269 (pop-to-buffer (current-buffer)) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
270 (goto-char (point-min)) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
271 (shrink-window-if-larger-than-buffer) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
272 (error "Check-in failed")))) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
273 ;; Update file properties |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
274 ;; (vc-file-setprop |
85139
8ba0e30716a5
Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85122
diff
changeset
|
275 ;; file 'vc-working-revision |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
276 ;; (vc-parse-buffer "^\\(new\\|initial\\) revision: \\([0-9.]+\\)" 2)) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
277 )) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
278 |
85139
8ba0e30716a5
Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85122
diff
changeset
|
279 (defun vc-svn-find-revision (file rev buffer) |
81968
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
280 "SVN-specific retrieval of a specified version into a buffer." |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
281 (apply 'vc-svn-command |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
282 buffer 0 file |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
283 "cat" |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
284 (and rev (not (string= rev "")) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
285 (concat "-r" rev)) |
50900
d853a98e1678
(vc-svn-dired-state-info): Use `added' for added files and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50823
diff
changeset
|
286 (vc-switches 'SVN 'checkout))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
287 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
288 (defun vc-svn-checkout (file &optional editable rev) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
289 (message "Checking out %s..." file) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
290 (with-current-buffer (or (get-file-buffer file) (current-buffer)) |
94805
89d37b54b964
* vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94729
diff
changeset
|
291 (vc-svn-update file editable rev (vc-switches 'SVN 'checkout))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
292 (vc-mode-line file) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
293 (message "Checking out %s...done" file)) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
294 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
295 (defun vc-svn-update (file editable rev switches) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
296 (if (and (file-exists-p file) (not rev)) |
76025
a4103f62dec5
Remove the code inherited from CVSREAD and `cvs edit'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75719
diff
changeset
|
297 ;; If no revision was specified, there's nothing to do. |
a4103f62dec5
Remove the code inherited from CVSREAD and `cvs edit'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75719
diff
changeset
|
298 nil |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
299 ;; Check out a particular version (or recreate the file). |
85139
8ba0e30716a5
Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85122
diff
changeset
|
300 (vc-file-setprop file 'vc-working-revision nil) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
301 (apply 'vc-svn-command nil 0 file |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
302 "update" |
51732
f43bd5204ab4
(vc-svn-use-edit): Make it into a const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50999
diff
changeset
|
303 (cond |
f43bd5204ab4
(vc-svn-use-edit): Make it into a const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50999
diff
changeset
|
304 ((null rev) "-rBASE") |
f43bd5204ab4
(vc-svn-use-edit): Make it into a const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50999
diff
changeset
|
305 ((or (eq rev t) (equal rev "")) nil) |
f43bd5204ab4
(vc-svn-use-edit): Make it into a const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50999
diff
changeset
|
306 (t (concat "-r" rev))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
307 switches))) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
308 |
50999
c09edac18f97
(completion-ignored-extensions): Add .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50927
diff
changeset
|
309 (defun vc-svn-delete-file (file) |
c09edac18f97
(completion-ignored-extensions): Add .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50927
diff
changeset
|
310 (vc-svn-command nil 0 file "remove")) |
c09edac18f97
(completion-ignored-extensions): Add .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50927
diff
changeset
|
311 |
50922
bdc62a6694f7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50900
diff
changeset
|
312 (defun vc-svn-rename-file (old new) |
bdc62a6694f7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50900
diff
changeset
|
313 (vc-svn-command nil 0 new "move" (file-relative-name old))) |
bdc62a6694f7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50900
diff
changeset
|
314 |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
315 (defun vc-svn-revert (file &optional contents-done) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
316 "Revert FILE to the version it was based on." |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
317 (unless contents-done |
76025
a4103f62dec5
Remove the code inherited from CVSREAD and `cvs edit'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75719
diff
changeset
|
318 (vc-svn-command nil 0 file "revert"))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
319 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
320 (defun vc-svn-merge (file first-version &optional second-version) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
321 "Merge changes into current working copy of FILE. |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
322 The changes are between FIRST-VERSION and SECOND-VERSION." |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
323 (vc-svn-command nil 0 file |
50822
0be6233722ec
(vc-svn-merge): First attempt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50821
diff
changeset
|
324 "merge" |
50823
83c8010f1eb2
(vc-svn-merge): Forgot quotes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50822
diff
changeset
|
325 "-r" (if second-version |
50822
0be6233722ec
(vc-svn-merge): First attempt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50821
diff
changeset
|
326 (concat first-version ":" second-version) |
0be6233722ec
(vc-svn-merge): First attempt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50821
diff
changeset
|
327 first-version)) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
328 (vc-file-setprop file 'vc-state 'edited) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
329 (with-current-buffer (get-buffer "*vc*") |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
330 (goto-char (point-min)) |
50822
0be6233722ec
(vc-svn-merge): First attempt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50821
diff
changeset
|
331 (if (looking-at "C ") |
0be6233722ec
(vc-svn-merge): First attempt.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50821
diff
changeset
|
332 1 ; signal conflict |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
333 0))) ; signal success |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
334 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
335 (defun vc-svn-merge-news (file) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
336 "Merge in any new changes made to FILE." |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
337 (message "Merging changes into %s..." file) |
85139
8ba0e30716a5
Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85122
diff
changeset
|
338 ;; (vc-file-setprop file 'vc-working-revision nil) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
339 (vc-file-setprop file 'vc-checkout-time 0) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
340 (vc-svn-command nil 0 file "update") |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
341 ;; Analyze the merge result reported by SVN, and set |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
342 ;; file properties accordingly. |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
343 (with-current-buffer (get-buffer "*vc*") |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
344 (goto-char (point-min)) |
85141
b16f7408cd3f
Carry through today's big terminology change to a few places where I
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85139
diff
changeset
|
345 ;; get new working revision |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
346 (if (re-search-forward |
50821
33e415a24bb5
(vc-svn-merge-news): Adjust for subversion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50820
diff
changeset
|
347 "^\\(Updated to\\|At\\) revision \\([0-9]+\\)" nil t) |
85139
8ba0e30716a5
Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85122
diff
changeset
|
348 (vc-file-setprop file 'vc-working-revision (match-string 2)) |
8ba0e30716a5
Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85122
diff
changeset
|
349 (vc-file-setprop file 'vc-working-revision nil)) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
350 ;; get file status |
50821
33e415a24bb5
(vc-svn-merge-news): Adjust for subversion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50820
diff
changeset
|
351 (goto-char (point-min)) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
352 (prog1 |
50821
33e415a24bb5
(vc-svn-merge-news): Adjust for subversion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50820
diff
changeset
|
353 (if (looking-at "At revision") |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
354 0 ;; there were no news; indicate success |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
355 (if (re-search-forward |
75719
a8fd93a515a2
(vc-svn-merge-news): Understand the new format with two
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75233
diff
changeset
|
356 ;; Newer SVN clients have 3 columns of chars (one for the |
a8fd93a515a2
(vc-svn-merge-news): Understand the new format with two
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75233
diff
changeset
|
357 ;; file's contents, then second for its properties, and the |
a8fd93a515a2
(vc-svn-merge-news): Understand the new format with two
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75233
diff
changeset
|
358 ;; third for lock-grabbing info), before the 2 spaces. |
a8fd93a515a2
(vc-svn-merge-news): Understand the new format with two
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75233
diff
changeset
|
359 ;; We also used to match the filename in column 0 without any |
a8fd93a515a2
(vc-svn-merge-news): Understand the new format with two
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75233
diff
changeset
|
360 ;; meta-info before it, but I believe this can never happen. |
a8fd93a515a2
(vc-svn-merge-news): Understand the new format with two
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75233
diff
changeset
|
361 (concat "^\\(\\([ACGDU]\\)\\(.[B ]\\)? \\)" |
50821
33e415a24bb5
(vc-svn-merge-news): Adjust for subversion.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50820
diff
changeset
|
362 (regexp-quote (file-name-nondirectory file))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
363 nil t) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
364 (cond |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
365 ;; Merge successful, we are in sync with repository now |
75719
a8fd93a515a2
(vc-svn-merge-news): Understand the new format with two
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75233
diff
changeset
|
366 ((string= (match-string 2) "U") |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
367 (vc-file-setprop file 'vc-state 'up-to-date) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
368 (vc-file-setprop file 'vc-checkout-time |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
369 (nth 5 (file-attributes file))) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
370 0);; indicate success to the caller |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
371 ;; Merge successful, but our own changes are still in the file |
75719
a8fd93a515a2
(vc-svn-merge-news): Understand the new format with two
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
75233
diff
changeset
|
372 ((string= (match-string 2) "G") |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
373 (vc-file-setprop file 'vc-state 'edited) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
374 0);; indicate success to the caller |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
375 ;; Conflicts detected! |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
376 (t |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
377 (vc-file-setprop file 'vc-state 'edited) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
378 1);; signal the error to the caller |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
379 ) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
380 (pop-to-buffer "*vc*") |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
381 (error "Couldn't analyze svn update result"))) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
382 (message "Merging changes into %s...done" file)))) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
383 |
87518
78fc69cc7bef
* vc-svn.el (vc-svn-modify-change comment): New function.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87514
diff
changeset
|
384 (defun vc-svn-modify-change-comment (files rev comment) |
78fc69cc7bef
* vc-svn.el (vc-svn-modify-change comment): New function.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87514
diff
changeset
|
385 "Modify the change comments for a specified REV. |
78fc69cc7bef
* vc-svn.el (vc-svn-modify-change comment): New function.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87514
diff
changeset
|
386 You must have ssh access to the repository host, and the directory Emacs |
93886
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
387 uses locally for temp files must also be writeable by you on that host. |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
388 This is only supported if the repository access method is either file:// |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
389 or svn+ssh://." |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
390 (let (tempfile host remotefile directory fileurl-p) |
87518
78fc69cc7bef
* vc-svn.el (vc-svn-modify-change comment): New function.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87514
diff
changeset
|
391 (with-temp-buffer |
93886
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
392 (vc-do-command (current-buffer) 0 "svn" nil "info") |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
393 (goto-char (point-min)) |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
394 (unless (re-search-forward "Repository Root: \\(file://\\(/.*\\)\\)\\|\\(svn\\+ssh://\\([^/]+\\)\\(/.*\\)\\)" nil t) |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
395 (error "Repository information is unavailable")) |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
396 (if (match-string 1) |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
397 (progn |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
398 (setq fileurl-p t) |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
399 (setq directory (match-string 2))) |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
400 (setq host (match-string 4)) |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
401 (setq directory (match-string 5)) |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
402 (setq remotefile (concat host ":" tempfile)))) |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
403 (with-temp-file (setq tempfile (make-temp-file user-mail-address)) |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
404 (insert comment)) |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
405 (if fileurl-p |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
406 ;; Repository Root is a local file. |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
407 (progn |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
408 (unless (vc-do-command |
94847
5e64dca662f0
Remove assumption about what nil means as a first arument to vc-do-command.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
94806
diff
changeset
|
409 "*vc*" 0 "svnadmin" nil |
96003
243cf028ce86
(log-view-per-file-logs): Pacify byte compiler.
Juanma Barranquero <lekktu@gmail.com>
parents:
95966
diff
changeset
|
410 "setlog" "--bypass-hooks" directory |
93886
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
411 "-r" rev (format "%s" tempfile)) |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
412 (error "Log edit failed")) |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
413 (delete-file tempfile)) |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
414 |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
415 ;; Remote repository, using svn+ssh. |
94847
5e64dca662f0
Remove assumption about what nil means as a first arument to vc-do-command.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
94806
diff
changeset
|
416 (unless (vc-do-command "*vc*" 0 "scp" nil "-q" tempfile remotefile) |
93886
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
417 (error "Copy of comment to %s failed" remotefile)) |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
418 (unless (vc-do-command |
94847
5e64dca662f0
Remove assumption about what nil means as a first arument to vc-do-command.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
94806
diff
changeset
|
419 "*vc*" 0 "ssh" nil "-q" host |
93886
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
420 (format "svnadmin setlog --bypass-hooks %s -r %s %s; rm %s" |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
421 directory rev tempfile tempfile)) |
ed131d081eab
(vc-svn-modify-change-comment): Add support for the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93461
diff
changeset
|
422 (error "Log edit failed"))))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
423 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
424 ;;; |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
425 ;;; History functions |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
426 ;;; |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
427 |
96003
243cf028ce86
(log-view-per-file-logs): Pacify byte compiler.
Juanma Barranquero <lekktu@gmail.com>
parents:
95966
diff
changeset
|
428 (defvar log-view-per-file-logs) |
243cf028ce86
(log-view-per-file-logs): Pacify byte compiler.
Juanma Barranquero <lekktu@gmail.com>
parents:
95966
diff
changeset
|
429 |
95966
054335cbee3d
* log-view.el (log-view-diff-changeset): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
95048
diff
changeset
|
430 (define-derived-mode vc-svn-log-view-mode log-view-mode "SVN-Log-View" |
054335cbee3d
* log-view.el (log-view-diff-changeset): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
95048
diff
changeset
|
431 (require 'add-log) |
054335cbee3d
* log-view.el (log-view-diff-changeset): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
95048
diff
changeset
|
432 (set (make-local-variable 'log-view-per-file-logs) nil)) |
054335cbee3d
* log-view.el (log-view-diff-changeset): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
95048
diff
changeset
|
433 |
81968
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
434 (defun vc-svn-print-log (files &optional buffer) |
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
435 "Get change log(s) associated with FILES." |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
436 (save-current-buffer |
55004
ae9b6f1e3bdf
(vc-svn-print-log, vc-svn-diff): Add optional BUFFER arg.
Juanma Barranquero <lekktu@gmail.com>
parents:
52401
diff
changeset
|
437 (vc-setup-buffer buffer) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
438 (let ((inhibit-read-only t)) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
439 (goto-char (point-min)) |
87426
47c02bd68801
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87424
diff
changeset
|
440 (if files |
47c02bd68801
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87424
diff
changeset
|
441 (dolist (file files) |
47c02bd68801
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87424
diff
changeset
|
442 (insert "Working file: " file "\n") |
47c02bd68801
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87424
diff
changeset
|
443 (vc-svn-command |
47c02bd68801
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87424
diff
changeset
|
444 buffer |
47c02bd68801
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87424
diff
changeset
|
445 'async |
47c02bd68801
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87424
diff
changeset
|
446 ;; (if (and (= (length files) 1) (vc-stay-local-p file)) 'async 0) |
47c02bd68801
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87424
diff
changeset
|
447 (list file) |
47c02bd68801
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87424
diff
changeset
|
448 "log" |
47c02bd68801
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87424
diff
changeset
|
449 ;; By default Subversion only shows the log up to the |
47c02bd68801
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87424
diff
changeset
|
450 ;; working revision, whereas we also want the log of the |
47c02bd68801
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87424
diff
changeset
|
451 ;; subsequent commits. At least that's what the |
47c02bd68801
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87424
diff
changeset
|
452 ;; vc-cvs.el code does. |
47c02bd68801
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87424
diff
changeset
|
453 "-rHEAD:0")) |
47c02bd68801
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87424
diff
changeset
|
454 ;; Dump log for the entire directory. |
47c02bd68801
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87424
diff
changeset
|
455 (vc-svn-command buffer 0 nil "log" "-rHEAD:0"))))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
456 |
81968
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
457 (defun vc-svn-diff (files &optional oldvers newvers buffer) |
85141
b16f7408cd3f
Carry through today's big terminology change to a few places where I
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85139
diff
changeset
|
458 "Get a difference report using SVN between two revisions of fileset FILES." |
82909
01df6fb7c1e7
(vc-svn-diff): If the repository version of all the files is the same
Glenn Morris <rgm@gnu.org>
parents:
82140
diff
changeset
|
459 (and oldvers |
01df6fb7c1e7
(vc-svn-diff): If the repository version of all the files is the same
Glenn Morris <rgm@gnu.org>
parents:
82140
diff
changeset
|
460 (catch 'no |
01df6fb7c1e7
(vc-svn-diff): If the repository version of all the files is the same
Glenn Morris <rgm@gnu.org>
parents:
82140
diff
changeset
|
461 (dolist (f files) |
85139
8ba0e30716a5
Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85122
diff
changeset
|
462 (or (equal oldvers (vc-working-revision f)) |
82909
01df6fb7c1e7
(vc-svn-diff): If the repository version of all the files is the same
Glenn Morris <rgm@gnu.org>
parents:
82140
diff
changeset
|
463 (throw 'no nil))) |
01df6fb7c1e7
(vc-svn-diff): If the repository version of all the files is the same
Glenn Morris <rgm@gnu.org>
parents:
82140
diff
changeset
|
464 t) |
01df6fb7c1e7
(vc-svn-diff): If the repository version of all the files is the same
Glenn Morris <rgm@gnu.org>
parents:
82140
diff
changeset
|
465 ;; Use nil rather than the current revision because svn handles |
01df6fb7c1e7
(vc-svn-diff): If the repository version of all the files is the same
Glenn Morris <rgm@gnu.org>
parents:
82140
diff
changeset
|
466 ;; it better (i.e. locally). Note that if _any_ of the files |
01df6fb7c1e7
(vc-svn-diff): If the repository version of all the files is the same
Glenn Morris <rgm@gnu.org>
parents:
82140
diff
changeset
|
467 ;; has a different revision, we fetch the lot, which is |
01df6fb7c1e7
(vc-svn-diff): If the repository version of all the files is the same
Glenn Morris <rgm@gnu.org>
parents:
82140
diff
changeset
|
468 ;; obviously sub-optimal. |
01df6fb7c1e7
(vc-svn-diff): If the repository version of all the files is the same
Glenn Morris <rgm@gnu.org>
parents:
82140
diff
changeset
|
469 (setq oldvers nil)) |
81968
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
470 (let* ((switches |
56777
332e641fe2b1
(vc-svn-diff): Treat options from vc-svn-diff-switches and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55900
diff
changeset
|
471 (if vc-svn-diff-switches |
332e641fe2b1
(vc-svn-diff): Treat options from vc-svn-diff-switches and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55900
diff
changeset
|
472 (vc-switches 'SVN 'diff) |
332e641fe2b1
(vc-svn-diff): Treat options from vc-svn-diff-switches and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55900
diff
changeset
|
473 (list "-x" (mapconcat 'identity (vc-switches nil 'diff) " ")))) |
59446
1ba18e657796
(vc-svn-diff): Don't diff asynchronously if vc-disable-async-diff is
André Spiegel <spiegel@gnu.org>
parents:
59317
diff
changeset
|
474 (async (and (not vc-disable-async-diff) |
81968
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
475 (vc-stay-local-p files) |
86002
613df1ba1584
* vc.el (vc-diff-internal): Make the *vc-diff* buffer read only.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85462
diff
changeset
|
476 (or oldvers newvers)))) ; Svn diffs those locally. |
55004
ae9b6f1e3bdf
(vc-svn-print-log, vc-svn-diff): Add optional BUFFER arg.
Juanma Barranquero <lekktu@gmail.com>
parents:
52401
diff
changeset
|
477 (apply 'vc-svn-command buffer |
50922
bdc62a6694f7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50900
diff
changeset
|
478 (if async 'async 0) |
81968
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
479 files "diff" |
50922
bdc62a6694f7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50900
diff
changeset
|
480 (append |
56777
332e641fe2b1
(vc-svn-diff): Treat options from vc-svn-diff-switches and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55900
diff
changeset
|
481 switches |
50922
bdc62a6694f7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50900
diff
changeset
|
482 (when oldvers |
bdc62a6694f7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50900
diff
changeset
|
483 (list "-r" (if newvers (concat oldvers ":" newvers) |
bdc62a6694f7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50900
diff
changeset
|
484 oldvers))))) |
50900
d853a98e1678
(vc-svn-dired-state-info): Use `added' for added files and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50823
diff
changeset
|
485 (if async 1 ; async diff => pessimistic assumption |
d853a98e1678
(vc-svn-dired-state-info): Use `added' for added files and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50823
diff
changeset
|
486 ;; For some reason `svn diff' does not return a useful |
d853a98e1678
(vc-svn-dired-state-info): Use `added' for added files and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50823
diff
changeset
|
487 ;; status w.r.t whether the diff was empty or not. |
81968
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
488 (buffer-size (get-buffer buffer))))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
489 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
490 ;;; |
95020
4da572dc4992
Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
94847
diff
changeset
|
491 ;;; Tag system |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
492 ;;; |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
493 |
95020
4da572dc4992
Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
94847
diff
changeset
|
494 (defun vc-svn-create-tag (dir name branchp) |
85141
b16f7408cd3f
Carry through today's big terminology change to a few places where I
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85139
diff
changeset
|
495 "Assign to DIR's current revision a given NAME. |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
496 If BRANCHP is non-nil, the name is created as a branch (and the current |
51732
f43bd5204ab4
(vc-svn-use-edit): Make it into a const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50999
diff
changeset
|
497 workspace is immediately moved to that new branch). |
f43bd5204ab4
(vc-svn-use-edit): Make it into a const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50999
diff
changeset
|
498 NAME is assumed to be a URL." |
f43bd5204ab4
(vc-svn-use-edit): Make it into a const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50999
diff
changeset
|
499 (vc-svn-command nil 0 dir "copy" name) |
95020
4da572dc4992
Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
94847
diff
changeset
|
500 (when branchp (vc-svn-retrieve-tag dir name nil))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
501 |
95020
4da572dc4992
Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
94847
diff
changeset
|
502 (defun vc-svn-retrieve-tag (dir name update) |
4da572dc4992
Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
94847
diff
changeset
|
503 "Retrieve a tag at and below DIR. |
4da572dc4992
Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
94847
diff
changeset
|
504 NAME is the name of the tag; if it is empty, do a `svn update'. |
51732
f43bd5204ab4
(vc-svn-use-edit): Make it into a const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50999
diff
changeset
|
505 If UPDATE is non-nil, then update (resynch) any affected buffers. |
f43bd5204ab4
(vc-svn-use-edit): Make it into a const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50999
diff
changeset
|
506 NAME is assumed to be a URL." |
f43bd5204ab4
(vc-svn-use-edit): Make it into a const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50999
diff
changeset
|
507 (vc-svn-command nil 0 dir "switch" name) |
f43bd5204ab4
(vc-svn-use-edit): Make it into a const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50999
diff
changeset
|
508 ;; FIXME: parse the output and obey `update'. |
f43bd5204ab4
(vc-svn-use-edit): Make it into a const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50999
diff
changeset
|
509 ) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
510 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
511 ;;; |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
512 ;;; Miscellaneous |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
513 ;;; |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
514 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
515 ;; Subversion makes backups for us, so don't bother. |
50927
6f478e2878c7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50922
diff
changeset
|
516 ;; (defalias 'vc-svn-make-version-backups-p 'vc-stay-local-p |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
517 ;; "Return non-nil if version backups should be made for FILE.") |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
518 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
519 (defun vc-svn-check-headers () |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
520 "Check if the current file has any headers in it." |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
521 (save-excursion |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
522 (goto-char (point-min)) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
523 (re-search-forward "\\$[A-Za-z\300-\326\330-\366\370-\377]+\ |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
524 \\(: [\t -#%-\176\240-\377]*\\)?\\$" nil t))) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
525 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
526 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
527 ;;; |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
528 ;;; Internal functions |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
529 ;;; |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
530 |
81306
114ec88248f4
(vc-svn-program): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76025
diff
changeset
|
531 (defcustom vc-svn-program "svn" |
91989
582312e95923
(vc-svn-program): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
91979
diff
changeset
|
532 "Name of the SVN executable." |
81306
114ec88248f4
(vc-svn-program): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76025
diff
changeset
|
533 :type 'string |
114ec88248f4
(vc-svn-program): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76025
diff
changeset
|
534 :group 'vc) |
114ec88248f4
(vc-svn-program): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
76025
diff
changeset
|
535 |
81968
1b5dfd1b9ca0
Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
81617
diff
changeset
|
536 (defun vc-svn-command (buffer okstatus file-or-list &rest flags) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
537 "A wrapper around `vc-do-command' for use in vc-svn.el. |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
538 The difference to vc-do-command is that this function always invokes `svn', |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
539 and that it passes `vc-svn-global-switches' to it before FLAGS." |
94847
5e64dca662f0
Remove assumption about what nil means as a first arument to vc-do-command.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
94806
diff
changeset
|
540 (apply 'vc-do-command (or buffer "*vc*") okstatus vc-svn-program file-or-list |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
541 (if (stringp vc-svn-global-switches) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
542 (cons vc-svn-global-switches flags) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
543 (append vc-svn-global-switches |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
544 flags)))) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
545 |
50927
6f478e2878c7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50922
diff
changeset
|
546 (defun vc-svn-repository-hostname (dirname) |
6f478e2878c7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50922
diff
changeset
|
547 (with-temp-buffer |
6f478e2878c7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50922
diff
changeset
|
548 (let ((coding-system-for-read |
6f478e2878c7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50922
diff
changeset
|
549 (or file-name-coding-system |
6f478e2878c7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50922
diff
changeset
|
550 default-file-name-coding-system))) |
73848
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
551 (vc-insert-file (expand-file-name (concat vc-svn-admin-directory |
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
552 "/entries") |
299d3322c8be
Fix typo in previous commit.
Chong Yidong <cyd@stupidchicken.com>
parents:
73847
diff
changeset
|
553 dirname))) |
50927
6f478e2878c7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50922
diff
changeset
|
554 (goto-char (point-min)) |
6f478e2878c7
(vc-svn-rename-file): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50922
diff
changeset
|
555 (when (re-search-forward |
75233
e52e99fc4ca5
(vc-svn-parse-status): Trust the filename argument more
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73848
diff
changeset
|
556 ;; Old `svn' used name="svn:this_dir", newer use just name="". |
58929
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
557 (concat "name=\"\\(?:svn:this_dir\\)?\"[\n\t ]*" |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
558 "\\(?:[-a-z]+=\"[^\"]*\"[\n\t ]*\\)*?" |
81617
0a2fb180b0a5
(vc-svn-repository-hostname): Adjust to non-XML format of newer .svn/entries.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
81306
diff
changeset
|
559 "url=\"\\(?1:[^\"]+\\)\"" |
0a2fb180b0a5
(vc-svn-repository-hostname): Adjust to non-XML format of newer .svn/entries.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
81306
diff
changeset
|
560 ;; Yet newer ones don't use XML any more. |
0a2fb180b0a5
(vc-svn-repository-hostname): Adjust to non-XML format of newer .svn/entries.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
81306
diff
changeset
|
561 "\\|^\ndir\n[0-9]+\n\\(?1:.*\\)") nil t) |
58929
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
562 ;; This is not a hostname but a URL. This may actually be considered |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
563 ;; as a feature since it allows vc-svn-stay-local to specify different |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
564 ;; behavior for different modules on the same server. |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
565 (match-string 1)))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
566 |
78914
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
567 (defun vc-svn-resolve-when-done () |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
568 "Call \"svn resolved\" if the conflict markers have been removed." |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
569 (save-excursion |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
570 (goto-char (point-min)) |
79848
316ed7573095
* vc-arch.el (vc-arch-delete-rej-if-obsolete): Remove the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
79721
diff
changeset
|
571 (unless (re-search-forward "^<<<<<<< " nil t) |
316ed7573095
* vc-arch.el (vc-arch-delete-rej-if-obsolete): Remove the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
79721
diff
changeset
|
572 (vc-svn-command nil 0 buffer-file-name "resolved") |
316ed7573095
* vc-arch.el (vc-arch-delete-rej-if-obsolete): Remove the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
79721
diff
changeset
|
573 ;; Remove the hook so that it is not called multiple times. |
316ed7573095
* vc-arch.el (vc-arch-delete-rej-if-obsolete): Remove the
Dan Nicolaescu <dann@ics.uci.edu>
parents:
79721
diff
changeset
|
574 (remove-hook 'after-save-hook 'vc-svn-resolve-when-done t)))) |
78914
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
575 |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
576 ;; Inspired by vc-arch-find-file-hook. |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
577 (defun vc-svn-find-file-hook () |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
578 (when (eq ?C (vc-file-getprop buffer-file-name 'vc-svn-status)) |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
579 ;; If the file is marked as "conflicted", then we should try and call |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
580 ;; "svn resolved" when applicable. |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
581 (if (save-excursion |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
582 (goto-char (point-min)) |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
583 (re-search-forward "^<<<<<<< " nil t)) |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
584 ;; There are conflict markers. |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
585 (progn |
87785
8f1628da223f
* smerge-mode.el (smerge-start-session): Rename from smerge-auto.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
87743
diff
changeset
|
586 (smerge-start-session) |
78914
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
587 (add-hook 'after-save-hook 'vc-svn-resolve-when-done nil t)) |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
588 ;; There are no conflict markers. This is problematic: maybe it means |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
589 ;; the conflict has been resolved and we should immediately call "svn |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
590 ;; resolved", or it means that the file's type does not allow Svn to |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
591 ;; use conflict markers in which case we don't really know what to do. |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
592 ;; So let's just punt for now. |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
593 nil) |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
594 (message "There are unresolved conflicts in this file"))) |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
595 |
73444
ee7eeb5732b2
(vc-svn-parse-status): Remove unused arg `localp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
68740
diff
changeset
|
596 (defun vc-svn-parse-status (&optional filename) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
597 "Parse output of \"svn status\" command in the current buffer. |
73444
ee7eeb5732b2
(vc-svn-parse-status): Remove unused arg `localp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
68740
diff
changeset
|
598 Set file properties accordingly. Unless FILENAME is non-nil, parse only |
ee7eeb5732b2
(vc-svn-parse-status): Remove unused arg `localp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
68740
diff
changeset
|
599 information about FILENAME and return its status." |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
600 (let (file status) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
601 (goto-char (point-min)) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
602 (while (re-search-forward |
87477
b5060e79eb98
* vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87450
diff
changeset
|
603 ;; Ignore the files with status X. |
97336
701c14eb5b26
(vc-svn-parse-status): Use when instead of if.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
96257
diff
changeset
|
604 "^\\(?:\\?\\|[ ACDGIMR!~][ MC][ L][ +][ S]..\\([ *]\\) +\\([-0-9]+\\) +\\([0-9?]+\\) +\\([^ ]+\\)\\) +" nil t) |
75233
e52e99fc4ca5
(vc-svn-parse-status): Trust the filename argument more
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73848
diff
changeset
|
605 ;; If the username contains spaces, the output format is ambiguous, |
e52e99fc4ca5
(vc-svn-parse-status): Trust the filename argument more
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73848
diff
changeset
|
606 ;; so don't trust the output's filename unless we have to. |
e52e99fc4ca5
(vc-svn-parse-status): Trust the filename argument more
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73848
diff
changeset
|
607 (setq file (or filename |
e52e99fc4ca5
(vc-svn-parse-status): Trust the filename argument more
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73848
diff
changeset
|
608 (expand-file-name |
e52e99fc4ca5
(vc-svn-parse-status): Trust the filename argument more
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
73848
diff
changeset
|
609 (buffer-substring (point) (line-end-position))))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
610 (setq status (char-after (line-beginning-position))) |
87477
b5060e79eb98
* vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87450
diff
changeset
|
611 (if (eq status ??) |
87514
5c7eec3035ec
Remove some debugging code.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87513
diff
changeset
|
612 (vc-file-setprop file 'vc-state 'unregistered) |
50900
d853a98e1678
(vc-svn-dired-state-info): Use `added' for added files and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50823
diff
changeset
|
613 ;; Use the last-modified revision, so that searching in vc-print-log |
d853a98e1678
(vc-svn-dired-state-info): Use `added' for added files and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50823
diff
changeset
|
614 ;; output works. |
87514
5c7eec3035ec
Remove some debugging code.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87513
diff
changeset
|
615 (vc-file-setprop file 'vc-working-revision (match-string 3)) |
78914
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
616 ;; Remember Svn's own status. |
9eca5b992f1f
(vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
78236
diff
changeset
|
617 (vc-file-setprop file 'vc-svn-status status) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
618 (vc-file-setprop |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
619 file 'vc-state |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
620 (cond |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
621 ((eq status ?\ ) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
622 (if (eq (char-after (match-beginning 1)) ?*) |
94521
2a61c5f918a5
Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
94519
diff
changeset
|
623 'needs-update |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
624 (vc-file-setprop file 'vc-checkout-time |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
625 (nth 5 (file-attributes file))) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
626 'up-to-date)) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
627 ((eq status ?A) |
50900
d853a98e1678
(vc-svn-dired-state-info): Use `added' for added files and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50823
diff
changeset
|
628 ;; If the file was actually copied, (match-string 2) is "-". |
87514
5c7eec3035ec
Remove some debugging code.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87513
diff
changeset
|
629 (vc-file-setprop file 'vc-working-revision "0") |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
630 (vc-file-setprop file 'vc-checkout-time 0) |
87477
b5060e79eb98
* vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87450
diff
changeset
|
631 'added) |
93956
bfc762f0b49c
* vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93886
diff
changeset
|
632 ((eq status ?C) |
bfc762f0b49c
* vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93886
diff
changeset
|
633 (vc-file-setprop file 'vc-state 'conflict)) |
bfc762f0b49c
* vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
93886
diff
changeset
|
634 ((eq status '?M) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
635 (if (eq (char-after (match-beginning 1)) ?*) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
636 'needs-merge |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
637 'edited)) |
87450
71fc7b1db920
* vc-hooks.el (vc-state): Document new 'ignored and 'unregistered
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87449
diff
changeset
|
638 ((eq status ?I) |
87514
5c7eec3035ec
Remove some debugging code.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87513
diff
changeset
|
639 (vc-file-setprop file 'vc-state 'ignored)) |
87477
b5060e79eb98
* vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87450
diff
changeset
|
640 ((eq status ?R) |
87514
5c7eec3035ec
Remove some debugging code.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
87513
diff
changeset
|
641 (vc-file-setprop file 'vc-state 'removed)) |
73444
ee7eeb5732b2
(vc-svn-parse-status): Remove unused arg `localp'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
68740
diff
changeset
|
642 (t 'edited))))) |
97336
701c14eb5b26
(vc-svn-parse-status): Use when instead of if.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
96257
diff
changeset
|
643 (when filename (vc-file-getprop filename 'vc-state)))) |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
644 |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
645 (defun vc-svn-valid-symbolic-tag-name-p (tag) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
646 "Return non-nil if TAG is a valid symbolic tag name." |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
647 ;; According to the SVN manual, a valid symbolic tag must start with |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
648 ;; an uppercase or lowercase letter and can contain uppercase and |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
649 ;; lowercase letters, digits, `-', and `_'. |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
650 (and (string-match "^[a-zA-Z]" tag) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
651 (not (string-match "[^a-z0-9A-Z-_]" tag)))) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
652 |
85141
b16f7408cd3f
Carry through today's big terminology change to a few places where I
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85139
diff
changeset
|
653 (defun vc-svn-valid-revision-number-p (tag) |
b16f7408cd3f
Carry through today's big terminology change to a few places where I
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
85139
diff
changeset
|
654 "Return non-nil if TAG is a valid revision number." |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
655 (and (string-match "^[0-9]" tag) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
656 (not (string-match "[^0-9]" tag)))) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
657 |
58929
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
658 ;; Support for `svn annotate' |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
659 |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
660 (defun vc-svn-annotate-command (file buf &optional rev) |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
661 (vc-svn-command buf 0 file "annotate" (if rev (concat "-r" rev)))) |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
662 |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
663 (defun vc-svn-annotate-time-of-rev (rev) |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
664 ;; Arbitrarily assume 10 commmits per day. |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
665 (/ (string-to-number rev) 10.0)) |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
666 |
96252
8c22ce277d5d
(vc-annotate-parent-rev): Pacify byte compiler.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
96003
diff
changeset
|
667 (defvar vc-annotate-parent-rev) |
8c22ce277d5d
(vc-annotate-parent-rev): Pacify byte compiler.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
96003
diff
changeset
|
668 |
58929
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
669 (defun vc-svn-annotate-current-time () |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
670 (vc-svn-annotate-time-of-rev vc-annotate-parent-rev)) |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
671 |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
672 (defconst vc-svn-annotate-re "[ \t]*\\([0-9]+\\)[ \t]+[^\t ]+ ") |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
673 |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
674 (defun vc-svn-annotate-time () |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
675 (when (looking-at vc-svn-annotate-re) |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
676 (goto-char (match-end 0)) |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
677 (vc-svn-annotate-time-of-rev (match-string 1)))) |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
678 |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
679 (defun vc-svn-annotate-extract-revision-at-line () |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
680 (save-excursion |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
681 (beginning-of-line) |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
682 (if (looking-at vc-svn-annotate-re) (match-string 1)))) |
43248e1430b6
(vc-svn-repository-hostname): Adjust to new format.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56777
diff
changeset
|
683 |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
684 (provide 'vc-svn) |
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
685 |
56777
332e641fe2b1
(vc-svn-diff): Treat options from vc-svn-diff-switches and
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55900
diff
changeset
|
686 ;; arch-tag: 02f10c68-2b4d-453a-90fc-1eee6cfb268d |
50818
d3acfb11487e
First cut at vc-svn.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
687 ;;; vc-svn.el ends here |