]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve vc-bzr-working-revision for lightweight checkouts
authorGlenn Morris <rgm@gnu.org>
Sat, 15 Sep 2012 01:11:52 +0000 (21:11 -0400)
committerGlenn Morris <rgm@gnu.org>
Sat, 15 Sep 2012 01:11:52 +0000 (21:11 -0400)
* lisp/vc/vc-bzr.el (vc-bzr-working-revision): For lightweight local
checkouts, check the parent dirstate matches the branch.
Add "--tree" to "bzr revno" arguments.  Don't try to shorten the
empty string.

lisp/ChangeLog
lisp/vc/vc-bzr.el

index 34c6d98148158aef9eb58663c63c1aff75164f0d..c9aa7e99356f7c030bcf00e20c78475523aefefb 100644 (file)
@@ -1,5 +1,10 @@
 2012-09-15  Glenn Morris  <rgm@gnu.org>
 
+       * vc/vc-bzr.el (vc-bzr-working-revision): For lightweight local
+       checkouts, check the parent dirstate matches the branch.
+       Add "--tree" to "bzr revno" arguments.  Don't try to shorten the
+       empty string.
+
        * version.el (emacs-bzr-version): Doc fix.
        (emacs-bzr-version-dirstate): New function.
        (emacs-bzr-get-version): For lightweight checkouts, if the parent
index c0dafda57b61273942894b8a9e949b36f69b38e9..1eb33776f6a1917a722e83fa3964cd5f6b88f41d 100644 (file)
@@ -534,7 +534,9 @@ in the branch repository (or whose status not be determined)."
                         ;; FIXME: maybe it's overkill to check if both these
                         ;; files exist.
                         (and (file-exists-p branch-format-file)
-                             (file-exists-p lastrev-file)))))
+                             (file-exists-p lastrev-file)
+                             (equal (emacs-bzr-version-dirstate l-c-parent-dir)
+                                    (emacs-bzr-version-dirstate rootdir))))))
                 t)))
         (with-temp-buffer
           (insert-file-contents branch-format-file)
@@ -553,13 +555,17 @@ in the branch repository (or whose status not be determined)."
             (insert-file-contents lastrev-file)
             (when (re-search-forward "[0-9]+" nil t)
              (buffer-substring (match-beginning 0) (match-end 0))))))
-      ;; fallback to calling "bzr revno"
+      ;; Fallback to calling "bzr revno --tree".
+      ;; The "--tree" matters for lightweight checkouts not on the same
+      ;; revision as the parent.
       (let* ((result (vc-bzr-command-discarding-stderr
-                      vc-bzr-program "revno" (file-relative-name file)))
+                      vc-bzr-program "revno" "--tree"
+                      (file-relative-name file)))
              (exitcode (car result))
              (output (cdr result)))
         (cond
-         ((eq exitcode 0) (substring output 0 -1))
+         ((and (eq exitcode 0) (not (zerop (length output))))
+          (substring output 0 -1))
          (t nil))))))
 
 (defun vc-bzr-create-repo ()