From a1ed8b05eedc1bded036d1c35a867fbdc7a1eba2 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 7 Apr 2012 12:51:51 -0700 Subject: [PATCH] Add emacs-bzr-version * lisp/version.el (emacs-bzr-get-version): New function. * lisp/loadup.el (emacs-bzr-version): Set it. * lisp/mail/emacsbug.el (report-emacs-bug): Include bzr version. * etc/NEWS: Mention this, though it is not really relevant to releases. Insert template for 24.2 release. Fixes: debbugs:8054 --- etc/NEWS | 28 +++++++++++++++++++++++++++- lisp/ChangeLog | 6 ++++++ lisp/loadup.el | 2 ++ lisp/mail/emacsbug.el | 2 ++ lisp/version.el | 20 ++++++++++++++++++++ 5 files changed, 57 insertions(+), 1 deletion(-) diff --git a/etc/NEWS b/etc/NEWS index f97003d8fd0..ae6ba8d36b7 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2010-2012 Free Software Foundation, Inc. +Copyright (C) 2010-2012 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to bug-gnu-emacs@gnu.org. @@ -14,6 +14,32 @@ and NEWS.1-17 for changes in older Emacs versions. You can narrow news to a specific version by calling `view-emacs-news' with a prefix argument or by typing C-u C-h C-n. +Temporary note: ++++ indicates that the appropriate manual has already been updated. +--- means no change in the manuals is called for. +When you add a new item, please add it without either +++ or --- +so we will look at it and add it to the manual. + + +* Installation Changes in Emacs 24.2 + +* Startup Changes in Emacs 24.2 + +* Changes in Emacs 24.2 + +** If your Emacs was built from a bzr checkout, the new variable +`emacs-bzr-version' contains information about which bzr revision was used. + + +* Editing Changes in Emacs 24.2 + +* Changes in Specialized Modes and Packages in Emacs 24.2 + +* New Modes and Packages in Emacs 24.2 + +* Incompatible Lisp Changes in Emacs 24.2 + +* Lisp changes in Emacs 24.2 * Changes in Emacs 24.2 on non-free operating systems diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 027b6631639..179b7ff3a31 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2012-04-07 Glenn Morris + + * version.el (emacs-bzr-get-version): New function. + * loadup.el (emacs-bzr-version): Set it. (Bug#8054) + * mail/emacsbug.el (report-emacs-bug): Include bzr version. + 2012-04-07 Eli Zaretskii * international/uni-bidi.el: diff --git a/lisp/loadup.el b/lisp/loadup.el index b7af41d6246..16cd0171e61 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el @@ -259,6 +259,8 @@ (versions (mapcar (function (lambda (name) (string-to-number (substring name (length base))))) files))) + (setq emacs-bzr-version (condition-case nil (emacs-bzr-get-version) + (error nil))) ;; `emacs-version' is a constant, so we shouldn't change it with `setq'. (defconst emacs-version (format "%s.%d" diff --git a/lisp/mail/emacsbug.el b/lisp/mail/emacsbug.el index 1a02ae7c519..33b73335a7d 100644 --- a/lisp/mail/emacsbug.el +++ b/lisp/mail/emacsbug.el @@ -239,6 +239,8 @@ usually do not have translators for other languages.\n\n"))) (add-text-properties (1+ user-point) (point) prompt-properties) (insert "\n\nIn " (emacs-version) "\n") + (if (stringp emacs-bzr-version) + (insert "Bzr revision: " emacs-bzr-version "\n")) (if (fboundp 'x-server-vendor) (condition-case nil ;; This is used not only for X11 but also W32 and others. diff --git a/lisp/version.el b/lisp/version.el index bd30f0f81b8..a4bc4fd54a6 100644 --- a/lisp/version.el +++ b/lisp/version.el @@ -79,6 +79,26 @@ to the system configuration; look at `system-configuration' instead." ;; We hope that this alias is easier for people to find. (defalias 'version 'emacs-version) +;; Set during dumping, this is a defvar so that it can be setq'd. +(defvar emacs-bzr-version nil "\ +String giving the bzr revision number from which this Emacs was built. +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 () "\ +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))))) + ;; We put version info into the executable in the form that `ident' uses. (or (eq system-type 'windows-nt) (purecopy (concat "\n$Id: " (subst-char-in-string ?\n ?\s (emacs-version)) -- 2.39.2