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:
parent
6cb4da45dc
commit
2a5bce4f0c
3 changed files with 52 additions and 48 deletions
3
etc/NEWS
3
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:
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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))
|
||||
|
|
Loading…
Add table
Reference in a new issue