1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-28 07:45:00 +00:00

* lisp/vc/vc-bzr.el (vc-bzr-after-dir-status): Handle bzr 2.3.0. (Bug#8170)

This commit is contained in:
Glenn Morris 2011-03-04 09:24:02 -08:00
parent 38c179c925
commit 85a55d3871
2 changed files with 38 additions and 32 deletions

View File

@ -1,3 +1,7 @@
2011-03-04 Glenn Morris <rgm@gnu.org>
* vc/vc-bzr.el (vc-bzr-after-dir-status): Handle bzr 2.3.0. (Bug#8170)
2011-03-04 Tom Tromey <tromey@redhat.com> 2011-03-04 Tom Tromey <tromey@redhat.com>
* progmodes/gud.el (gdb-script-mode): Derive from prog-mode. * progmodes/gud.el (gdb-script-mode): Derive from prog-mode.

View File

@ -879,38 +879,40 @@ stream. Standard error output is discarded."
(result nil)) (result nil))
(goto-char (point-min)) (goto-char (point-min))
(while (not (eobp)) (while (not (eobp))
(setq status-str ;; Bzr 2.3.0 added this if there are shelves. (Bug#8170)
(buffer-substring-no-properties (point) (+ (point) 3))) (unless (looking-at "[1-9]+ shel\\(f\\|ves\\) exists?\\.")
(setq translated (cdr (assoc status-str translation))) (setq status-str
(cond (buffer-substring-no-properties (point) (+ (point) 3)))
((eq translated 'conflict) (setq translated (cdr (assoc status-str translation)))
;; For conflicts the file appears twice in the listing: once (cond
;; with the M flag and once with the C flag, so take care ((eq translated 'conflict)
;; not to add it twice to `result'. Ugly. ;; For conflicts the file appears twice in the listing: once
(let* ((file ;; with the M flag and once with the C flag, so take care
(buffer-substring-no-properties ;; not to add it twice to `result'. Ugly.
;;For files with conflicts the format is: (let* ((file
;;C Text conflict in FILENAME (buffer-substring-no-properties
;; Bah. ;;For files with conflicts the format is:
(+ (point) 21) (line-end-position))) ;;C Text conflict in FILENAME
(entry (assoc file result))) ;; Bah.
(when entry (+ (point) 21) (line-end-position)))
(setf (nth 1 entry) 'conflict)))) (entry (assoc file result)))
((eq translated 'renamed) (when entry
(re-search-forward "R[ M] \\(.*\\) => \\(.*\\)$" (line-end-position) t) (setf (nth 1 entry) 'conflict))))
(let ((new-name (file-relative-name (match-string 2) relative-dir)) ((eq translated 'renamed)
(old-name (file-relative-name (match-string 1) relative-dir))) (re-search-forward "R[ M] \\(.*\\) => \\(.*\\)$" (line-end-position) t)
(push (list new-name 'edited (let ((new-name (file-relative-name (match-string 2) relative-dir))
(vc-bzr-create-extra-fileinfo old-name)) result))) (old-name (file-relative-name (match-string 1) relative-dir)))
;; do nothing for non existent files (push (list new-name 'edited
((eq translated 'not-found)) (vc-bzr-create-extra-fileinfo old-name)) result)))
(t ;; do nothing for non existent files
(push (list (file-relative-name ((eq translated 'not-found))
(buffer-substring-no-properties (t
(+ (point) 4) (push (list (file-relative-name
(line-end-position)) relative-dir) (buffer-substring-no-properties
translated) result))) (+ (point) 4)
(forward-line)) (line-end-position)) relative-dir)
translated) result))))
(forward-line))
(funcall update-function result))) (funcall update-function result)))
(defun vc-bzr-dir-status (dir update-function) (defun vc-bzr-dir-status (dir update-function)