# HG changeset patch # User Stefan Monnier # Date 1206752985 0 # Node ID 411d7b7dfe3219dd9ac605e7626b63cbdf867d51 # Parent 07bc5cae12516e02e5c79dfe6d09253b848414e4 (vc-bzr-state-heuristic): Fix last change for when there are conflicts. diff -r 07bc5cae1251 -r 411d7b7dfe32 lisp/ChangeLog --- 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 + + * vc-bzr.el (vc-bzr-state-heuristic): Fix last change for when there + are conflicts. + 2008-03-29 Dan Nicolaescu * vc.el (vc-update): Check if the buffer is unsaved only if it diff -r 07bc5cae1251 -r 411d7b7dfe32 lisp/vc-bzr.el --- 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))