From: Ulrich Mueller <ulm@gentoo.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 19049@debbugs.gnu.org
Subject: bug#19049: 25.0.50; emacs-repository-get-version doesn't work with git
Date: Fri, 14 Nov 2014 09:07:33 +0100 [thread overview]
Message-ID: <21605.47173.374392.454323@a1i15.kph.uni-mainz.de> (raw)
In-Reply-To: <83y4rei635.fsf@gnu.org>
>>>>> On Fri, 14 Nov 2014, Eli Zaretskii wrote:
>> Also, according to the message in commit 0abf413 (of 2014-01-11):
>> "The Bazaar case can be discarded after the repo transition."
>>
>> Should that be done now?
> No. The migration to git is just an experiment. We plan on going
> back to bzr in a month or so.
:-)
From 2936042bd87ef1a626578819a23c18b5e1e634b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ulrich=20M=C3=BCller?= <ulm@gentoo.org>
Date: Fri, 14 Nov 2014 09:05:02 +0100
Subject: [PATCH] Discard the Bazaar case in repository version detection
* version.el (emacs-bzr-version-dirstate, emacs-bzr-version-bzr):
Remove.
(emacs-repository-get-version): Discard the Bazaar case.
* vc/vc-bzr.el (vc-bzr-version-dirstate): Rename from
emacs-bzr-version-dirstate and move from version.el to here.
(vc-bzr-working-revision): Use it.
---
lisp/ChangeLog | 10 ++++++++
lisp/vc/vc-bzr.el | 17 +++++++++++--
lisp/version.el | 73 +------------------------------------------------------
3 files changed, 26 insertions(+), 74 deletions(-)
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index c3b879a..9044804 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,13 @@
+2014-11-14 Ulrich Müller <ulm@gentoo.org>
+
+ * version.el (emacs-bzr-version-dirstate, emacs-bzr-version-bzr):
+ Remove.
+ (emacs-repository-get-version): Discard the Bazaar case.
+
+ * vc/vc-bzr.el (vc-bzr-version-dirstate): Rename from
+ emacs-bzr-version-dirstate and move from version.el to here.
+ (vc-bzr-working-revision): Use it.
+
2014-11-14 Fabián Ezequiel Gallina <fgallina@gnu.org>
* progmodes/python.el (python-shell-virtualenv-root): Rename from
diff --git a/lisp/vc/vc-bzr.el b/lisp/vc/vc-bzr.el
index a093bcb..3a5de22 100644
--- a/lisp/vc/vc-bzr.el
+++ b/lisp/vc/vc-bzr.el
@@ -496,6 +496,19 @@ in the branch repository (or whose status not be determined)."
(defun vc-bzr-workfile-unchanged-p (file)
(eq 'unchanged (car (vc-bzr-status file))))
+(defun vc-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 vc-bzr-working-revision (file)
;; Together with the code in vc-state-heuristic, this makes it possible
;; to get the initial VC state of a Bzr file even if Bzr is not installed.
@@ -543,8 +556,8 @@ in the branch repository (or whose status not be determined)."
;; files exist.
(and (file-exists-p branch-format-file)
(file-exists-p lastrev-file)
- (equal (emacs-bzr-version-dirstate l-c-parent-dir)
- (emacs-bzr-version-dirstate rootdir))))))
+ (equal (vc-bzr-version-dirstate l-c-parent-dir)
+ (vc-bzr-version-dirstate rootdir))))))
t)))
(with-temp-buffer
(insert-file-contents branch-format-file)
diff --git a/lisp/version.el b/lisp/version.el
index 1ea38da..410e730 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)))
--
2.1.3
next prev parent reply other threads:[~2014-11-14 8:07 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-13 22:44 bug#19049: 25.0.50; emacs-repository-get-version doesn't work with git Ulrich Mueller
2014-11-14 4:01 ` Lars Magne Ingebrigtsen
2014-11-14 4:06 ` Lars Magne Ingebrigtsen
2014-11-14 7:19 ` Ulrich Mueller
2014-11-14 7:39 ` Eli Zaretskii
2014-11-14 8:07 ` Ulrich Mueller [this message]
2014-11-14 6:24 ` Eli Zaretskii
2014-11-14 14:12 ` Lars Magne Ingebrigtsen
2014-11-14 14:17 ` Dmitry Gutov
2014-11-14 14:22 ` Lars Magne Ingebrigtsen
2014-11-14 14:25 ` Lars Magne Ingebrigtsen
2014-11-14 14:37 ` Dmitry Gutov
2014-11-14 14:41 ` Lars Magne Ingebrigtsen
2014-11-14 14:52 ` Eli Zaretskii
2014-11-14 14:58 ` Dmitry Gutov
2014-11-14 15:06 ` Eli Zaretskii
2014-11-14 14:52 ` Eli Zaretskii
2014-11-14 14:50 ` Eli Zaretskii
2014-11-14 14:47 ` Eli Zaretskii
2014-11-14 14:59 ` Lars Magne Ingebrigtsen
2014-11-14 15:11 ` Eli Zaretskii
2014-11-14 15:16 ` Lars Magne Ingebrigtsen
2014-11-14 15:23 ` Eli Zaretskii
2014-11-14 15:26 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=21605.47173.374392.454323@a1i15.kph.uni-mainz.de \
--to=ulm@gentoo.org \
--cc=19049@debbugs.gnu.org \
--cc=eliz@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).