all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: emacs-devel@gnu.org
Subject: Re: Is this a bug in vc-svn?
Date: Fri, 20 Oct 2006 03:55:37 -0400	[thread overview]
Message-ID: <jwv1wp3s9pa.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <m2r6x9tyu7.fsf@sl392.st-edmunds.cam.ac.uk> (Leo's message of "Sun\, 15 Oct 2006 15\:53\:20 +0100")

>>> I just moved to use svn yesterday. I have files version controlled in
>>> RCS and SVN.  When I open them, initially they will be using RCS as the
>>> backend. I then change the backend to SVN.  However the version number
>>> shown in the mode line is still in RCS.  Is this a bug?
>> 
>> Sounds like it.  Please provide a precise recipe.
>> 
>> 
>> Stefan

> In shell:
>       1. `cd /tmp'
>       2. `mkdir wrk; cd wrk'
>       3. `mkdir RCS; touch test;ci test; co -l test'
>       4. `svnadmin create /tmp/repos'
>       5. `svn co file:///tmp/repos .'
>       6. `svn add test'
> In Emacs ("emacs -Q"):
>       7. C-x C-f /tmp/wrk/test RET ;; Modeline shows: RCS-1.1
>       8. C-u C-x v b svn RET       ;; Modeline shows: RCS-1.1 but
>          SVN-0 is expected.
>       9. Add some changes to test and press `C-x v v'. After checkin
>          modeline displays: SVN-1

The patch below should fix it.


        Stefan


Index: lisp/vc-svn.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/vc-svn.el,v
retrieving revision 1.27
diff -u -r1.27 vc-svn.el
--- lisp/vc-svn.el	9 Feb 2006 03:47:00 -0000	1.27
+++ lisp/vc-svn.el	20 Oct 2006 07:51:17 -0000
@@ -125,8 +125,7 @@
                ;; an `error' by vc-do-command.
                (error nil))))
         (when (eq 0 status)
-          (vc-svn-parse-status t)
-          (eq 'SVN (vc-file-getprop file 'vc-backend)))))))
+          (vc-svn-parse-status file))))))
 
 (defun vc-svn-state (file &optional localp)
   "SVN-specific version of `vc-state'."
@@ -134,8 +133,7 @@
   (with-temp-buffer
     (cd (file-name-directory file))
     (vc-svn-command t 0 file "status" (if localp "-v" "-u"))
-    (vc-svn-parse-status localp)
-    (vc-file-getprop file 'vc-state)))
+    (vc-svn-parse-status file)))
 
 (defun vc-svn-state-heuristic (file)
   "SVN-specific state heuristic."
@@ -149,7 +147,7 @@
     ;; enough.  Otherwise it might fail with remote repositories.
     (with-temp-buffer
       (vc-svn-command t 0 nil "status" (if localp "-v" "-u"))
-      (vc-svn-parse-status localp))))
+      (vc-svn-parse-status))))
 
 (defun vc-svn-workfile-version (file)
   "SVN-specific version of `vc-workfile-version'."
@@ -488,10 +486,10 @@
       ;; behavior for different modules on the same server.
       (match-string 1))))
 
-(defun vc-svn-parse-status (localp)
+(defun vc-svn-parse-status (&optional filename)
   "Parse output of \"svn status\" command in the current buffer.
-Set file properties accordingly.  Unless FULL is t, parse only
-essential information."
+Set file properties accordingly.  Unless FILENAME is non-nil, parse only
+information about FILENAME and return its status."
   (let (file status)
     (goto-char (point-min))
     (while (re-search-forward
@@ -500,7 +498,9 @@
 		  (buffer-substring (point) (line-end-position))))
       (setq status (char-after (line-beginning-position)))
       (unless (eq status ??)
-	(vc-file-setprop file 'vc-backend 'SVN)
+	;; `vc-BACKEND-registered' must not set vc-backend,
+	;; which is instead set in vc-registered.
+	(unless filename (vc-file-setprop file 'vc-backend 'SVN))
 	;; Use the last-modified revision, so that searching in vc-print-log
 	;; output works.
 	(vc-file-setprop file 'vc-workfile-version (match-string 3))
@@ -522,7 +522,8 @@
 	   (if (eq (char-after (match-beginning 1)) ?*)
 	       'needs-merge
 	     'edited))
-	  (t 'edited)))))))
+	  (t 'edited)))))
+    (if filename (vc-file-getprop filename 'vc-state))))
 
 (defun vc-svn-dir-state-heuristic (dir)
   "Find the SVN state of all files in DIR, using only local information."

  parent reply	other threads:[~2006-10-20  7:55 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-14 21:43 Is this a bug in vc-svn? Leo
2006-10-15 10:12 ` Richard Stallman
2006-10-15 14:23   ` Leo
2006-10-15 13:55 ` Stefan Monnier
2006-10-15 14:53   ` Leo
2006-10-18 12:55     ` Leo
2006-10-18 15:13       ` Stefan Monnier
2006-10-20  7:55     ` Stefan Monnier [this message]
2006-10-20 18:35       ` Leo
2006-10-20 19:32       ` Leo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=jwv1wp3s9pa.fsf-monnier+emacs@gnu.org \
    --to=monnier@iro.umontreal.ca \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.