From: Glenn Morris Date: Wed, 22 Jan 2014 17:26:14 +0000 (-0800) Subject: Fixes for emacs-repository-get-version X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~297 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=2a5bce4f0c0bdb7e07385d1d6e03232224b1e466;p=emacs.git Fixes for emacs-repository-get-version * lisp/version.el (emacs-repository-get-version): Check either .bzr or .git, but not both. Make the git case actually use the DIR argument, and return nil rather than the empty string. * etc/NEWS: Don't mention that emacs-repository-version works for git, because it only returns nil (since it uses %N and there seem to be no notes in the git version of the Emacs repo.) No idea why this change is in trunk during a feature freeze anyway. --- diff --git a/etc/NEWS b/etc/NEWS index f656fb96431..2e49a8fb498 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -236,8 +236,7 @@ simply disabling Transient Mark mode does the same thing. and this variable has been marked obsolete. --- -** `emacs-bzr-version' has been renamed to `emacs-repository-version', -and works for git too. +** `emacs-bzr-version' has been renamed to `emacs-repository-version'. ** New user options: diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d0b8d646323..1d957de8ba8 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2014-01-22 Glenn Morris + + * version.el (emacs-repository-get-version): + Check either .bzr or .git, but not both. + Make the git case actually use the DIR argument, and return nil + rather than the empty string. + 2014-01-22 Martin Rudalics Fixes in window size functions around Bug#16430 and Bug#16470. diff --git a/lisp/version.el b/lisp/version.el index b2557142a78..d1d6c4c216b 100644 --- a/lisp/version.el +++ b/lisp/version.el @@ -145,52 +145,50 @@ maybe ask the VCS itself, if the sources appear to be under version control. If `force', always ask. the VCS. Otherwise only ask the VCS if we cannot find any information ourselves." (or dir (setq dir source-directory)) - (or - ;; Bazaar case -- to be removed after transition - (when (file-directory-p (expand-file-name ".bzr/branch" dir)) - (if (eq external 'force) - (emacs-bzr-version-bzr dir) - (let (file loc rev) - (cond ((file-readable-p - (setq file (expand-file-name ".bzr/branch/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 ".bzr/branch/location" dir))) - (setq rev (emacs-bzr-version-dirstate dir)) - ;; If the parent branch is local, try looking there for the rev. - ;; Note: there is no guarantee that the parent branch's rev - ;; corresponds to this branch. This branch could have - ;; been made with a specific -r revno argument, or the - ;; parent could have been updated since this branch was created. - ;; To try and detect this, we check the dirstate revids - ;; to see if they match. - (if (and (setq loc (with-temp-buffer - (insert-file-contents file) - (if (looking-at "file://\\(.*\\)") - (match-string 1)))) - (equal rev (emacs-bzr-version-dirstate loc))) - (emacs-bzr-get-version loc) - ;; If parent does not match, the best we can do without - ;; calling external commands is to use the dirstate rev. - rev)) - (external - (emacs-bzr-version-bzr dir)))))) - ;; Git case - (when (file-directory-p (expand-file-name ".git" dir)) - (message "Waiting for git...") - (with-temp-buffer - (if (zerop - (call-process "git" nil '(t nil) nil "log" - "-1" - "--pretty=format:%N")) - (replace-regexp-in-string "\n" "" (buffer-string))))) - )) + (cond ((file-directory-p (expand-file-name ".bzr/branch" dir)) + (if (eq external 'force) + (emacs-bzr-version-bzr dir) + (let (file loc rev) + (cond ((file-readable-p + (setq file (expand-file-name + ".bzr/branch/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 ".bzr/branch/location" dir))) + (setq rev (emacs-bzr-version-dirstate dir)) + ;; If parent branch is local, try looking there for the rev. + ;; Note: there is no guarantee that the parent branch's rev + ;; corresponds to this branch. This branch could have + ;; been made with a specific -r revno argument, or the + ;; parent could have been updated since this branch was + ;; created. + ;; To try and detect this, we check the dirstate revids + ;; to see if they match. + (if (and (setq loc (with-temp-buffer + (insert-file-contents file) + (if (looking-at "file://\\(.*\\)") + (match-string 1)))) + (equal rev (emacs-bzr-version-dirstate loc))) + (emacs-repository-get-version loc) + ;; If parent does not match, the best we can do without + ;; calling external commands is to use the dirstate rev. + rev)) + (external + (emacs-bzr-version-bzr dir)))))) + ((file-directory-p (expand-file-name ".git" dir)) + (message "Waiting for git...") + (with-temp-buffer + (let ((default-directory (file-name-as-directory dir))) + (and (zerop (call-process "git" nil '(t nil) nil "log" + "-1" "--pretty=format:%N")) + (not (zerop (buffer-size))) + (replace-regexp-in-string "\n" "" (buffer-string)))))))) ;; 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))