diff options
Diffstat (limited to 'lisp/version.el')
-rw-r--r-- | lisp/version.el | 73 |
1 files changed, 1 insertions, 72 deletions
diff --git a/lisp/version.el b/lisp/version.el index 75763b3f682..43778739ba6 100644 --- a/lisp/version.el +++ b/lisp/version.el @@ -93,41 +93,6 @@ or if we could not determine the revision.") (define-obsolete-variable-alias 'emacs-bzr-version 'emacs-repository-version "24.4") -(defun emacs-bzr-version-dirstate (dir) - "Try to return as a string the bzr revision ID of directory DIR. -This uses the dirstate file's parent revision entry. -Returns nil if unable to find this information." - (let ((file (expand-file-name ".bzr/checkout/dirstate" dir))) - (when (file-readable-p file) - (with-temp-buffer - (insert-file-contents file) - (and (looking-at "#bazaar dirstate flat format 3") - (forward-line 3) - (looking-at "[0-9]+\0\\([^\0\n]+\\)\0") - (match-string 1)))))) - -(defun emacs-bzr-version-bzr (dir) - "Ask bzr itself for the version information for directory DIR." - ;; Comments on `bzr version-info': - ;; i) Unknown files also cause clean != 1. - ;; ii) It can be slow, contacting the upstream repo to get the - ;; branch nick if one is not set locally, even with a custom - ;; template that is not asking for the nick (as used here). You'd - ;; think the latter part would be trivial to fix: - ;; https://bugs.launchpad.net/bzr/+bug/882541/comments/3 - ;; https://bugs.launchpad.net/bzr/+bug/629150 - ;; You can set the nick locally with `bzr nick ...', which speeds - ;; things up enormously. `bzr revno' does not have this issue, but - ;; has no way to print the revision_id AFAICS. - (message "Waiting for bzr...") - (with-temp-buffer - (if (zerop - (call-process "bzr" nil '(t nil) nil "version-info" - "--custom" - "--template={revno} {revision_id} (clean = {clean})" - dir)) - (buffer-string)))) - (define-obsolete-function-alias 'emacs-bzr-get-version 'emacs-repository-get-version "24.4") @@ -145,43 +110,7 @@ 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)) - (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)) + (cond ((file-directory-p (expand-file-name ".git" dir)) (message "Waiting for git...") (with-temp-buffer (let ((default-directory (file-name-as-directory dir))) |