diff options
| author | Paul Eggert | 2016-06-01 10:28:43 -0700 |
|---|---|---|
| committer | Paul Eggert | 2016-06-01 11:03:37 -0700 |
| commit | a76420cce2d1c2e1d5de0cdf50443006064c58af (patch) | |
| tree | 822eca9887e70ed8fce2e1bb2bcb32d5a7a16797 | |
| parent | 5668058053d100f5c1053ab504ec01aa0017806b (diff) | |
| download | emacs-a76420cce2d1c2e1d5de0cdf50443006064c58af.tar.gz emacs-a76420cce2d1c2e1d5de0cdf50443006064c58af.zip | |
Fix emacs-repository-get-version with packed .git
* lisp/version.el (emacs-repository-get-version):
Parse .git/packed-refs if it exists.
Problem reported by Martin Rudalics in:
http://lists.gnu.org/archive/html/emacs-devel/2016-05/msg00554.html
| -rw-r--r-- | lisp/version.el | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/lisp/version.el b/lisp/version.el index dc228870d1e..2f71aeb228f 100644 --- a/lisp/version.el +++ b/lisp/version.el | |||
| @@ -163,14 +163,23 @@ the VCS if we cannot find any information ourselves." | |||
| 163 | (or (if in-linked-worktree | 163 | (or (if in-linked-worktree |
| 164 | (emacs-repository--version-git-1 | 164 | (emacs-repository--version-git-1 |
| 165 | (expand-file-name "HEAD" sub-dir) base-dir) | 165 | (expand-file-name "HEAD" sub-dir) base-dir) |
| 166 | (let ((files '("HEAD" "refs/heads/master")) | 166 | (or |
| 167 | file rev) | 167 | (let ((packed-refs (expand-file-name "packed-refs" base-dir))) |
| 168 | (while (and (not rev) | 168 | (if (file-readable-p packed-refs) |
| 169 | (setq file (car files))) | 169 | (with-temp-buffer |
| 170 | (setq file (expand-file-name file base-dir) | 170 | (insert-file-contents packed-refs) |
| 171 | files (cdr files) | 171 | (when (re-search-forward |
| 172 | rev (emacs-repository--version-git-1 file base-dir))) | 172 | "^\\([0-9a-fA-F]\\{40\\}\\) refs/heads/master$" |
| 173 | rev)) | 173 | nil t) |
| 174 | (match-string 1))))) | ||
| 175 | (let ((files '("HEAD" "refs/heads/master")) | ||
| 176 | file rev) | ||
| 177 | (while (and (not rev) | ||
| 178 | (setq file (car files))) | ||
| 179 | (setq file (expand-file-name file base-dir) | ||
| 180 | files (cdr files) | ||
| 181 | rev (emacs-repository--version-git-1 file base-dir))) | ||
| 182 | rev))) | ||
| 174 | ;; AFAICS this doesn't work during dumping (bug#20799). | 183 | ;; AFAICS this doesn't work during dumping (bug#20799). |
| 175 | (emacs-repository-version-git dir)))))) | 184 | (emacs-repository-version-git dir)))))) |
| 176 | 185 | ||