aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2016-06-01 10:28:43 -0700
committerPaul Eggert2016-06-01 11:03:37 -0700
commita76420cce2d1c2e1d5de0cdf50443006064c58af (patch)
tree822eca9887e70ed8fce2e1bb2bcb32d5a7a16797
parent5668058053d100f5c1053ab504ec01aa0017806b (diff)
downloademacs-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.el25
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