emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/emacs-24 r107823: emacs-bzr-get-version twe


From: Glenn Morris
Subject: [Emacs-diffs] /srv/bzr/emacs/emacs-24 r107823: emacs-bzr-get-version tweak
Date: Fri, 02 Nov 2012 02:32:01 -0000
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 107823
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Mon 2012-04-09 19:03:33 -0400
message:
  emacs-bzr-get-version tweak
  
  * lisp/version.el (emacs-bzr-get-version):
  Handle lightweight checkouts of local branches.
modified:
  lisp/ChangeLog
  lisp/version.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2012-04-09 18:12:40 +0000
+++ b/lisp/ChangeLog    2012-04-09 23:03:33 +0000
@@ -1,7 +1,11 @@
+2012-04-09  Glenn Morris  <address@hidden>
+
+       * version.el (emacs-bzr-get-version):
+       Handle lightweight checkouts of local branches.
+
 2012-04-09  Andreas Schwab  <address@hidden>
 
-       * international/characters.el: Recover lost case pairs.
-       (Bug#11209)
+       * international/characters.el: Recover lost case pairs.  (Bug#11209)
 
 2012-04-09  Chong Yidong  <address@hidden>
 

=== modified file 'lisp/version.el'
--- a/lisp/version.el   2012-04-07 19:51:51 +0000
+++ b/lisp/version.el   2012-04-09 23:03:33 +0000
@@ -85,19 +85,35 @@
 This is nil if Emacs was not built from a bzr checkout, or if we could
 not determine the revision.")
 
-(defun emacs-bzr-get-version () "\
+(defun emacs-bzr-get-version (&optional dir) "\
 Try to return as a string the bzr revision number of the Emacs sources.
 Returns nil if the sources do not seem to be under bzr, or if we could
 not determine the revision.  Note that this reports on the current state
-of the sources, which may not correspond to the running Emacs."
-  (let ((file (expand-file-name ".bzr/branch/last-revision" source-directory)))
-    (if (file-readable-p file)
-        (with-temp-buffer
-          (insert-file-contents file)
-          (goto-char (point-max))
-          (if (looking-back "\n")
-              (delete-char -1))
-          (buffer-string)))))
+of the sources, which may not correspond to the running Emacs.
+
+Optional argument DIR is a directory to use instead of `source-directory'."
+  (or dir (setq dir source-directory))
+  (when (file-directory-p (setq dir (expand-file-name ".bzr/branch" dir)))
+    (let (file loc)
+      (cond ((file-readable-p
+              (setq file (expand-file-name "last-revision" dir)))
+             (with-temp-buffer
+               (insert-file-contents file)
+               (goto-char (point-max))
+               (if (looking-back "\n")
+                   (delete-char -1))
+               (buffer-string)))
+            ;; OK, no last-revision.  Is it a lightweight checkout?
+            ((file-readable-p
+              (setq file (expand-file-name "location" dir)))
+             ;; If the parent branch is local, try looking there for the revid.
+             (if (setq loc (with-temp-buffer
+                             (insert-file-contents file)
+                             (if (looking-at "file://\\(.*\\)")
+                                 (match-string 1))))
+                 (emacs-bzr-get-version loc)))
+            ;; Could fall back to eg `bzr testament' at this point.
+            ))))
 
 ;; We put version info into the executable in the form that `ident' uses.
 (or (eq system-type 'windows-nt)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]