Improve vc-bzr-working-revision for lightweight checkouts

* 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.
This commit is contained in:
Glenn Morris 2012-09-14 21:11:52 -04:00
parent fea895b1d2
commit 823751606a
2 changed files with 15 additions and 4 deletions

View 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

View 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 ()