]> git.eshelyaron.com Git - emacs.git/commitdiff
Make the function emacs-repository-get-version polyvalent.
authorEric S. Raymond <esr@thyrsus.com>
Sat, 11 Jan 2014 23:59:49 +0000 (18:59 -0500)
committerEric S. Raymond <esr@thyrsus.com>
Sat, 11 Jan 2014 23:59:49 +0000 (18:59 -0500)
* version.el (emacs-repository-get-version): Enhance so the
function works correctly in either a Bazaar or Git repo. The
Bazaar case can be discarded  after the repo transition.

lisp/ChangeLog
lisp/version.el

index 5647c86053e8ee147b17b7c7d38b827c20b5b20d..60aff3c7be097ab3aab6543591ff154dae9fa6bb 100644 (file)
@@ -1,5 +1,9 @@
 2014-01-11  Eric S. Raymond  <esr@thyrsus.com>
 
+       * version.el (emacs-repository-get-version): Enhancee so the
+       function works correctly in either a Bazaar or Git repo. The
+       Bazaar case can be discarded  after the repo transition.
+
        * play/meese.el: It's 2014 and Ed Meese is justly forgotten. Goes
        with removal of the joke manpages from /etc.
 
index 71e56858afa3cc4e7a487498ed953fbadd12683a..b2557142a78cfba5b4cfb7f94f3d3d21f87e68f1 100644 (file)
@@ -145,40 +145,52 @@ 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))
-  (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)))))))
+  (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)))))
+   ))
 
 ;; 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))