]> code.delx.au - gnu-emacs/blobdiff - lisp/version.el
Make tramp-ssh-controlmaster-options a defcustom. Do not merge with master.
[gnu-emacs] / lisp / version.el
index d28a300458518f8ac47fc8ab5e9b0427526c09e1..1837cbf0a85c3cbcdf1d0edfa89fcadb5fe21ee3 100644 (file)
@@ -1,9 +1,9 @@
-;;; version.el --- record version number of Emacs -*- no-byte-compile: t -*-
+;;; version.el --- record version number of Emacs
 
-;; Copyright (C) 1985, 1992, 1994-1995, 1999-2011
-;;   Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1992, 1994-1995, 1999-2015 Free Software
+;; Foundation, Inc.
 
-;; Maintainer: FSF
+;; Maintainer: emacs-devel@gnu.org
 ;; Keywords: internal
 ;; Package: emacs
 
 
 ;;; Commentary:
 
-;; This file is loaded uncompiled when dumping Emacs.
-;; Doc-strings should adhere to the conventions of make-docfile.
-
 ;;; Code:
 
-(defconst emacs-major-version (progn (string-match "^[0-9]+" emacs-version) (string-to-number (match-string 0 emacs-version))) "\
-Major version number of this version of Emacs.
+(defconst emacs-major-version
+  (progn (string-match "^[0-9]+" emacs-version)
+         (string-to-number (match-string 0 emacs-version)))
+  "Major version number of this version of Emacs.
 This variable first existed in version 19.23.")
 
-(defconst emacs-minor-version (progn (string-match "^[0-9]+\\.\\([0-9]+\\)" emacs-version) (string-to-number (match-string 1 emacs-version))) "\
-Minor version number of this version of Emacs.
+(defconst emacs-minor-version
+  (progn (string-match "^[0-9]+\\.\\([0-9]+\\)" emacs-version)
+         (string-to-number (match-string 1 emacs-version)))
+  "Minor version number of this version of Emacs.
 This variable first existed in version 19.23.")
 
-(defconst emacs-build-time (current-time) "\
-Time at which Emacs was dumped out.")
+(defconst emacs-build-time (current-time)
+  "Time at which Emacs was dumped out.")
+
+(defconst emacs-build-system (system-name)
+  "Name of the system on which Emacs was built.")
 
-(defconst emacs-build-system (system-name))
+(defvar motif-version-string)
+(defvar gtk-version-string)
+(defvar ns-version-string)
 
-(defun emacs-version (&optional here) "\
-Return string describing the version of Emacs that is running.
+(defun emacs-version (&optional here)
+  "Return string describing the version of Emacs that is running.
 If optional argument HERE is non-nil, insert string at point.
 Don't use this function in programs to choose actions according
 to the system configuration; look at `system-configuration' instead."
@@ -78,13 +84,44 @@ to the system configuration; look at `system-configuration' instead."
 ;; We hope that this alias is easier for people to find.
 (defalias 'version 'emacs-version)
 
-;; 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))
-                     " $\n")))
+;; Set during dumping, this is a defvar so that it can be setq'd.
+(defvar emacs-repository-version nil
+  "String giving the repository revision from which this Emacs was built.
+Value is nil if Emacs was not built from a repository checkout,
+or if we could not determine the revision.")
+
+(define-obsolete-variable-alias 'emacs-bzr-version
+                                'emacs-repository-version "24.4")
+
+(define-obsolete-function-alias 'emacs-bzr-get-version
+                                'emacs-repository-get-version "24.4")
+
+(defun emacs-repository-get-version (&optional dir external)
+  "Try to return as a string the repository revision of the Emacs sources.
+The format of the returned string is dependent on the VCS in use.
+Value is nil if the sources do not seem to be under version
+control, 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.
+
+Optional argument DIR is a directory to use instead of
+`source-directory'.  Optional argument EXTERNAL is ignored and is
+retained for compatibility."
+  (or dir (setq dir source-directory))
+  (cond ((file-directory-p (expand-file-name ".git" dir))
+        (message "Waiting for git...")
+        (with-temp-buffer
+          (let ((default-directory (file-name-as-directory dir)))
+            (and (eq 0
+                     (condition-case nil
+                         (call-process "git" nil '(t nil) nil "rev-parse"
+                                       "HEAD")
+                       (error nil)))
+                 (not (zerop (buffer-size)))
+                 (replace-regexp-in-string "\n" "" (buffer-string))))))))
 
-;;Local variables:
-;;version-control: never
-;;End:
+;; We put version info into the executable in the form that `ident' uses.
+(purecopy (concat "\n$Id: " (subst-char-in-string ?\n ?\s (emacs-version))
+                 " $\n"))
 
 ;;; version.el ends here