emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/vc-svn.el,v


From: Glenn Morris
Subject: [Emacs-diffs] Changes to emacs/lisp/vc-svn.el,v
Date: Sat, 04 Oct 2008 20:23:55 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Glenn Morris <gm>       08/10/04 20:23:55

Index: vc-svn.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/vc-svn.el,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -b -r1.97 -r1.98
--- vc-svn.el   4 Oct 2008 01:22:29 -0000       1.97
+++ vc-svn.el   4 Oct 2008 20:23:54 -0000       1.98
@@ -1,6 +1,7 @@
 ;;; vc-svn.el --- non-resident support for Subversion version-control
 
-;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, 
Inc.
+;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
+;;   Free Software Foundation, Inc.
 
 ;; Author:      FSF (see vc.el for full credits)
 ;; Maintainer:  Stefan Monnier <address@hidden>
@@ -146,7 +147,9 @@
   "SVN-specific state heuristic."
   (vc-svn-state file 'local))
 
-(defun vc-svn-after-dir-status (callback)
+;; FIXME it would be better not to have the "remote" argument,
+;; but to distinguish the two output formats based on content.
+(defun vc-svn-after-dir-status (callback &optional remote)
   (let ((state-map '((?A . added)
                      (?C . conflict)
                      (?D . removed)
@@ -156,11 +159,18 @@
                      (?? . unregistered)
                      ;; This is what vc-svn-parse-status does.
                      (?~ . edited)))
+       (re (if remote "^\\(.\\)..... \\([ *]\\) +[-0-9]+ +\\(.*\\)$"
+             ;; Subexp 2 is a dummy in this case, so the numbers match.
+             "^\\(.\\)....\\(.\\) \\(.*\\)$"))
        result)
     (goto-char (point-min))
-    (while (re-search-forward "^\\(.\\)..... \\(.*\\)$" nil t)
+    (while (re-search-forward re nil t)
       (let ((state (cdr (assq (aref (match-string 1) 0) state-map)))
-           (filename (match-string 2)))
+           (filename (match-string 3)))
+       (and remote (string-equal (match-string 2) "*")
+            ;; FIXME are there other possible combinations?
+            (cond ((eq state 'edited) (setq state 'needs-merge))
+                  ((not state) (setq state 'needs-update))))
        (when state
          (setq result (cons (list filename state) result)))))
     (funcall callback result)))
@@ -169,9 +179,12 @@
   "Run 'svn status' for DIR and update BUFFER via CALLBACK.
 CALLBACK is called as (CALLBACK RESULT BUFFER), where
 RESULT is a list of conses (FILE . STATE) for directory DIR."
-  (vc-svn-command (current-buffer) 'async nil "status")
+  ;; FIXME should this rather be all the files in dir?
+  (let ((remote (not (vc-stay-local-p dir))))
+    (vc-svn-command (current-buffer) 'async nil "status"
+                   (if remote "-u"))
   (vc-exec-after
-   `(vc-svn-after-dir-status (quote ,callback))))
+     `(vc-svn-after-dir-status (quote ,callback) ,remote))))
 
 (defun vc-svn-dir-status-files (dir files default-state callback)
   (apply 'vc-svn-command (current-buffer) 'async nil "status" files)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]