Mercurial > emacs
changeset 93368:411d7b7dfe32
(vc-bzr-state-heuristic): Fix last change for when there are conflicts.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Sat, 29 Mar 2008 01:09:45 +0000 |
parents | 07bc5cae1251 |
children | ed10c3092847 |
files | lisp/ChangeLog lisp/vc-bzr.el |
diffstat | 2 files changed, 25 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sat Mar 29 00:43:56 2008 +0000 +++ b/lisp/ChangeLog Sat Mar 29 01:09:45 2008 +0000 @@ -1,3 +1,8 @@ +2008-03-29 Stefan Monnier <monnier@iro.umontreal.ca> + + * vc-bzr.el (vc-bzr-state-heuristic): Fix last change for when there + are conflicts. + 2008-03-29 Dan Nicolaescu <dann@ics.uci.edu> * vc.el (vc-update): Check if the buffer is unsaved only if it
--- a/lisp/vc-bzr.el Sat Mar 29 00:43:56 2008 +0000 +++ b/lisp/vc-bzr.el Sat Mar 29 01:09:45 2008 +0000 @@ -167,28 +167,30 @@ "\0" (regexp-quote (file-name-nondirectory relfile)) "\0" - "[^\0]*\0" ;id? - "\\([^\0]*\\)\0" ;"a/f/d", a=removed? - "\\([^\0]*\\)\0" ;sha1? - "\\([^\0]*\\)\0" ;size? - "[^\0]*\0" ;"y/n", executable? - "[^\0]*\0" ;? - "\\([^\0]*\\)\0" ;"a/f/d" a=added? - "[^\0]*\0" ;sha1 again? - "[^\0]*\0" ;size again? - "[^\0]*\0" ;"y/n", executable again? - "[^\0]*\0$") ;last revid? + "[^\0]*\0" ;id? + "\\([^\0]*\\)\0" ;"a/f/d", a=removed? + "[^\0]*\0" ;sha1 (empty if conflicted)? + "\\([^\0]*\\)\0" ;size? + "[^\0]*\0" ;"y/n", executable? + "[^\0]*\0" ;? + "\\([^\0]*\\)\0" ;"a/f/d" a=added? + "\\([^\0]*\\)\0" ;sha1 again? + "[^\0]*\0" ;size again? + "[^\0]*\0" ;"y/n", executable again? + "[^\0]*\0" ;last revid? + ;; There are more fields when merges are pending. + ) nil t) - ;; FIXME: figure out which of the first or the second - ;; "size" and "sha1" we should use. They seem to always - ;; be equal, but there's probably a good reason why - ;; there are 2 entries. + ;; Apparently the second sha1 is the one we want: when + ;; there's a conflict, the first sha1 is absent (and the + ;; first size seems to correspond to the file with + ;; conflict markers). (cond - ((eq (char-after (match-beginning 4)) ?a) 'removed) + ((eq (char-after (match-beginning 1)) ?a) 'removed) ((eq (char-after (match-beginning 3)) ?a) 'added) - ((and (eq (string-to-number (match-string 3)) + ((and (eq (string-to-number (match-string 2)) (nth 7 (file-attributes file))) - (equal (match-string 2) + (equal (match-string 4) (vc-bzr-sha1 file))) 'up-to-date) (t 'edited))