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.
This commit is contained in:
Glenn Morris 2014-01-22 09:26:14 -08:00
parent 6cb4da45dc
commit 2a5bce4f0c
3 changed files with 52 additions and 48 deletions

View file

@ -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:

View file

@ -1,3 +1,10 @@
2014-01-22 Glenn Morris <rgm@gnu.org>
* 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 <rudalics@gmx.at>
Fixes in window size functions around Bug#16430 and Bug#16470.

View file

@ -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))