Function: vc-svn-merge-news
vc-svn-merge-news is a byte-compiled function defined in vc-svn.el.gz.
Signature
(vc-svn-merge-news FILE)
Documentation
Merge in any new changes made to FILE.
Source Code
;; Defined in /usr/src/emacs/lisp/vc/vc-svn.el.gz
0))) ; signal success
(defun vc-svn-merge-news (file)
"Merge in any new changes made to FILE."
(message "Merging changes into %s..." file)
;; (vc-file-setprop file 'vc-working-revision nil)
(vc-file-setprop file 'vc-checkout-time 0)
(vc-svn-command nil 0 file "update")
;; Analyze the merge result reported by SVN, and set
;; file properties accordingly.
(with-current-buffer (get-buffer "*vc*")
(goto-char (point-min))
;; get new working revision
(if (re-search-forward
"^\\(Updated to\\|At\\) revision \\([0-9]+\\)" nil t)
(vc-file-setprop file 'vc-working-revision (match-string 2))
(vc-file-setprop file 'vc-working-revision nil))
;; get file status
(goto-char (point-min))
(prog1
(if (looking-at "At revision")
0 ;; there were no news; indicate success
(if (re-search-forward
;; Newer SVN clients have 3 columns of chars (one for the
;; file's contents, then second for its properties, and the
;; third for lock-grabbing info), before the 2 spaces.
;; We also used to match the filename in column 0 without any
;; meta-info before it, but I believe this can never happen.
(concat "^\\(\\([ACGDU]\\)\\(.[B ]\\)? \\)"
(regexp-quote (file-relative-name file)))
nil t)
(cond
;; Merge successful, we are in sync with repository now
((string= (match-string 2) "U")
(vc-file-setprop file 'vc-state 'up-to-date)
(vc-file-setprop file 'vc-checkout-time
(file-attribute-modification-time
(file-attributes file)))
0);; indicate success to the caller
;; Merge successful, but our own changes are still in the file
((string= (match-string 2) "G")
(vc-file-setprop file 'vc-state 'edited)
0);; indicate success to the caller
;; Conflicts detected!
(t
(vc-file-setprop file 'vc-state 'edited)
1);; signal the error to the caller
)
(pop-to-buffer "*vc*")
(error "Couldn't analyze svn update result")))
(message "Merging changes into %s...done" file))))