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


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/lisp/vc-svn.el
Date: Fri, 04 Jul 2003 18:21:46 -0400

Index: emacs/lisp/vc-svn.el
diff -c emacs/lisp/vc-svn.el:1.9 emacs/lisp/vc-svn.el:1.10
*** emacs/lisp/vc-svn.el:1.9    Wed May 14 15:38:39 2003
--- emacs/lisp/vc-svn.el        Fri Jul  4 18:21:45 2003
***************
*** 81,93 ****
    :type '(repeat string)
    :group 'vc)
  
! (defcustom vc-svn-use-edit nil
    "*Non-nil means to use `svn edit' to \"check out\" a file.
  This is only meaningful if you don't use the implicit checkout model
  \(i.e. if you have $SVNREAD set)."
!   :type 'boolean
!   :version "21.4"
!   :group 'vc)
  
  ;;;
  ;;; State-querying functions
--- 81,95 ----
    :type '(repeat string)
    :group 'vc)
  
! (defconst vc-svn-use-edit nil
!   ;; Subversion does not provide this feature (yet).
    "*Non-nil means to use `svn edit' to \"check out\" a file.
  This is only meaningful if you don't use the implicit checkout model
  \(i.e. if you have $SVNREAD set)."
!   ;; :type 'boolean
!   ;; :version "21.4"
!   ;; :group 'vc
!   )
  
  ;;;
  ;;; State-querying functions
***************
*** 151,156 ****
--- 153,161 ----
    ;; It looks like Subversion has no equivalent of CVSREAD.
    'implicit)
  
+ ;; vc-svn-mode-line-string doesn't exist because the default implementation
+ ;; works just fine.
+ 
  (defun vc-svn-dired-state-info (file)
    "SVN-specific version of `vc-dired-state-info'."
    (let ((svn-state (vc-state file)))
***************
*** 171,181 ****
  
  `vc-register-switches' and `vc-svn-register-switches' are passed to
  the SVN command (in that order)."
!   (apply 'vc-svn-command nil 0 file
!        "add"
!        ;; (and comment (string-match "[^\t\n ]" comment)
!        ;;     (concat "-m" comment))
!        (vc-switches 'SVN 'register)))
  
  (defun vc-svn-responsible-p (file)
    "Return non-nil if SVN thinks it is responsible for FILE."
--- 176,182 ----
  
  `vc-register-switches' and `vc-svn-register-switches' are passed to
  the SVN command (in that order)."
!   (apply 'vc-svn-command nil 0 file "add" (vc-switches 'SVN 'register)))
  
  (defun vc-svn-responsible-p (file)
    "Return non-nil if SVN thinks it is responsible for FILE."
***************
*** 240,252 ****
      ;; Check out a particular version (or recreate the file).
      (vc-file-setprop file 'vc-workfile-version nil)
      (apply 'vc-svn-command nil 0 file
-          "-w"
           "update"
           ;; default for verbose checkout: clear the sticky tag so
           ;; that the actual update will get the head of the trunk
!          (if (or (not rev) (string= rev ""))
!              "-A"
!            (concat "-r" rev))
           switches)))
  
  (defun vc-svn-delete-file (file)
--- 241,253 ----
      ;; Check out a particular version (or recreate the file).
      (vc-file-setprop file 'vc-workfile-version nil)
      (apply 'vc-svn-command nil 0 file
           "update"
           ;; default for verbose checkout: clear the sticky tag so
           ;; that the actual update will get the head of the trunk
!          (cond
!           ((null rev) "-rBASE")
!           ((or (eq rev t) (equal rev "")) nil)
!           (t (concat "-r" rev)))
           switches)))
  
  (defun vc-svn-delete-file (file)
***************
*** 376,404 ****
  
  (defun vc-svn-diff-tree (dir &optional rev1 rev2)
    "Diff all files at and below DIR."
!   (with-current-buffer "*vc-diff*"
!     (setq default-directory dir)
!     (if (vc-stay-local-p dir)
!         ;; local diff: do it filewise, and only for files that are modified
!         (vc-file-tree-walk
!          dir
!          (lambda (f)
!            (vc-exec-after
!             `(let ((coding-system-for-read (vc-coding-system-for-diff ',f)))
!                ;; possible optimization: fetch the state of all files
!                ;; in the tree via vc-svn-dir-state-heuristic
!                (unless (vc-up-to-date-p ',f)
!                  (message "Looking at %s" ',f)
!                  (vc-diff-internal ',f ',rev1 ',rev2))))))
!       ;; svn diff: use a single call for the entire tree
!       (let ((coding-system-for-read (or coding-system-for-read 'undecided))
!           (switches (vc-switches 'SVN 'diff)))
!         (apply 'vc-svn-command "*vc-diff*" 1 nil "diff"
!              (append
!               (when rev1
!                 (list "-r" (if rev2 (concat rev1 ":" rev2) rev1)))
!               (when switches
!                 (list "-x" (mapconcat 'identity switches " ")))))))))
  
  ;;;
  ;;; Snapshot system
--- 377,383 ----
  
  (defun vc-svn-diff-tree (dir &optional rev1 rev2)
    "Diff all files at and below DIR."
!   (vc-svn-diff (file-name-as-directory dir) rev1 rev2))
  
  ;;;
  ;;; Snapshot system
***************
*** 407,452 ****
  (defun vc-svn-create-snapshot (dir name branchp)
    "Assign to DIR's current version a given NAME.
  If BRANCHP is non-nil, the name is created as a branch (and the current
! workspace is immediately moved to that new branch)."
!   (vc-svn-command nil 0 dir "tag" "-c" (if branchp "-b") name)
!   (when branchp (vc-svn-command nil 0 dir "update" "-r" name)))
  
  (defun vc-svn-retrieve-snapshot (dir name update)
    "Retrieve a snapshot at and below DIR.
  NAME is the name of the snapshot; if it is empty, do a `svn update'.
! If UPDATE is non-nil, then update (resynch) any affected buffers."
!   (with-current-buffer (get-buffer-create "*vc*")
!     (let ((default-directory dir)
!         (sticky-tag))
!       (erase-buffer)
!       (if (or (not name) (string= name ""))
!         (vc-svn-command t 0 nil "update")
!       (vc-svn-command t 0 nil "update" "-r" name)
!       (setq sticky-tag name))
!       (when update
!       (goto-char (point-min))
!       (while (not (eobp))
!         (if (looking-at "\\([CMUP]\\) \\(.*\\)")
!             (let* ((file (expand-file-name (match-string 2) dir))
!                    (state (match-string 1))
!                    (buffer (find-buffer-visiting file)))
!               (when buffer
!                 (cond
!                  ((or (string= state "U")
!                       (string= state "P"))
!                   (vc-file-setprop file 'vc-state 'up-to-date)
!                   (vc-file-setprop file 'vc-workfile-version nil)
!                   (vc-file-setprop file 'vc-checkout-time
!                                    (nth 5 (file-attributes file))))
!                  ((or (string= state "M")
!                       (string= state "C"))
!                   (vc-file-setprop file 'vc-state 'edited)
!                   (vc-file-setprop file 'vc-workfile-version nil)
!                   (vc-file-setprop file 'vc-checkout-time 0)))
!                 (vc-file-setprop file 'vc-svn-sticky-tag sticky-tag)
!                 (vc-resynch-buffer file t t))))
!         (forward-line 1))))))
! 
  
  ;;;
  ;;; Miscellaneous
--- 386,404 ----
  (defun vc-svn-create-snapshot (dir name branchp)
    "Assign to DIR's current version a given NAME.
  If BRANCHP is non-nil, the name is created as a branch (and the current
! workspace is immediately moved to that new branch).
! NAME is assumed to be a URL."
!   (vc-svn-command nil 0 dir "copy" name)
!   (when branchp (vc-svn-retrieve-snapshot dir name nil)))
  
  (defun vc-svn-retrieve-snapshot (dir name update)
    "Retrieve a snapshot at and below DIR.
  NAME is the name of the snapshot; if it is empty, do a `svn update'.
! If UPDATE is non-nil, then update (resynch) any affected buffers.
! NAME is assumed to be a URL."
!   (vc-svn-command nil 0 dir "switch" name)
!   ;; FIXME: parse the output and obey `update'.
!   )
  
  ;;;
  ;;; Miscellaneous




reply via email to

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