[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/git-commit 61cd60151d 2/5: Revert "Memorize gitdir and top
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/git-commit 61cd60151d 2/5: Revert "Memorize gitdir and topdir for each Magit buffer" |
Date: |
Sun, 11 Jun 2023 12:59:45 -0400 (EDT) |
branch: elpa/git-commit
commit 61cd60151d6f8cde700c7e9412e50ff0592ae82d
Author: Jonas Bernoulli <jonas@bernoul.li>
Commit: Jonas Bernoulli <jonas@bernoul.li>
Revert "Memorize gitdir and topdir for each Magit buffer"
This reverts commit 623d335b4dddc64f205748862520ed41661a7a80.
Just because a command that uses these functions is invoked inside a
Git repository, that doesn't mean that it necessarily wants to act on
that repository. It might instead change the buffer first, or bind
`default-directory'.
---
lisp/magit-extras.el | 5 +++--
lisp/magit-git.el | 42 ++++++++++--------------------------------
lisp/magit-mode.el | 4 ----
3 files changed, 13 insertions(+), 38 deletions(-)
diff --git a/lisp/magit-extras.el b/lisp/magit-extras.el
index ab99506e61..2a61d33919 100644
--- a/lisp/magit-extras.el
+++ b/lisp/magit-extras.el
@@ -883,7 +883,7 @@ The buffer is displayed using `magit-display-buffer', which
see."
(switch-to-buffer-other-frame buffer))
(defun magit--read-repository-buffer (prompt)
- (if-let ((topdir (magit-toplevel)))
+ (if-let ((topdir (magit-rev-parse-safe "--show-toplevel")))
(read-buffer
prompt (magit-get-mode-buffer 'magit-status-mode) t
(pcase-lambda (`(,_ . ,buf))
@@ -896,7 +896,8 @@ The buffer is displayed using `magit-display-buffer', which
see."
(and buffer-file-name
(string-match-p git-commit-filename-regexp
buffer-file-name)))
- (equal magit-buffer-topdir topdir))))))
+ (equal (magit-rev-parse-safe "--show-toplevel")
+ topdir))))))
(user-error "Not inside a Git repository")))
;;; Miscellaneous
diff --git a/lisp/magit-git.el b/lisp/magit-git.el
index 322beb3baa..984a9a565e 100644
--- a/lisp/magit-git.el
+++ b/lisp/magit-git.el
@@ -41,8 +41,6 @@
(declare-function magit-get-mode-buffer "magit-mode"
(mode &optional value frame))
(declare-function magit-refresh "magit-mode" ())
-(defvar magit-buffer-gitdir)
-(defvar magit-buffer-topdir)
(defvar magit-buffer-diff-type)
(defvar magit-buffer-diff-args)
(defvar magit-buffer-file-name)
@@ -844,29 +842,19 @@ Also see `magit-git-config-p'."
(defun magit-gitdir (&optional directory)
"Return the absolute and resolved path of the .git directory.
-As a special-case, if the `GIT_DIR' environment variable is set,
-return its value. It is usually a bad idea to set this variable
-when using Magit.
-
-Otherwise if `magit-buffer-gitdir' is set, return that. The
-value of this buffer-local variable is set to the value returned
-by this function, when a Magit buffer is first created. So this
-effectively memorizes the value returned by this function.
-
+If the `GIT_DIR' environment variable is define then return that.
Otherwise return the .git directory for DIRECTORY, or if that is
nil, then for `default-directory' instead. If the directory is
not located inside a Git repository, then return nil."
- (or (getenv "GIT_DIR")
- magit-buffer-gitdir
- (let ((default-directory (or directory default-directory)))
- (magit--with-refresh-cache (list default-directory 'magit-gitdir)
- (magit--with-safe-default-directory nil
- (and-let* ((dir (magit-rev-parse-safe "--git-dir"))
- (dir (file-name-as-directory
- (magit-expand-git-file-name dir))))
- (if (file-remote-p dir)
- dir
- (concat (file-remote-p default-directory) dir))))))))
+ (let ((default-directory (or directory default-directory)))
+ (magit--with-refresh-cache (list default-directory 'magit-gitdir)
+ (magit--with-safe-default-directory nil
+ (and-let*
+ ((dir (magit-rev-parse-safe "--git-dir"))
+ (dir (file-name-as-directory (magit-expand-git-file-name dir))))
+ (if (file-remote-p dir)
+ dir
+ (concat (file-remote-p default-directory) dir)))))))
(defvar magit--separated-gitdirs nil)
@@ -895,10 +883,6 @@ tree. As a special case, from within a bare repository
return
the control directory instead. When called outside a repository
then return nil.
-When `magit-buffer-toplevel' is non-nil, then return its value,
-unless DIRECTORY is non-nil, or `default-directory' was let-bound
-to another directory, while another buffer was current.
-
When optional DIRECTORY is non-nil then return the toplevel for
that directory instead of the one for `default-directory'.
@@ -910,12 +894,6 @@ the gitdir or from the toplevel of a gitdir, which itself
is not
located within the working tree, then it is not possible to avoid
returning the truename."
(or
- (and magit-buffer-topdir
- (not directory)
- (equal (expand-file-name default-directory)
- (expand-file-name
- (buffer-local-value 'default-directory (current-buffer))))
- magit-buffer-topdir)
(magit--with-refresh-cache
(cons (or directory default-directory) 'magit-toplevel)
(magit--with-safe-default-directory directory
diff --git a/lisp/magit-mode.el b/lisp/magit-mode.el
index 7c7b21a9ad..c5d63ba34c 100644
--- a/lisp/magit-mode.el
+++ b/lisp/magit-mode.el
@@ -530,8 +530,6 @@ Magit is documented in info node `(magit)'."
;;; Local Variables
-(defvar-local magit-buffer-gitdir nil)
-(defvar-local magit-buffer-topdir nil)
(defvar-local magit-buffer-arguments nil)
(defvar-local magit-buffer-diff-type nil)
(defvar-local magit-buffer-diff-args nil)
@@ -600,8 +598,6 @@ The buffer's major-mode should derive from
`magit-section-mode'."
(setq magit-previous-section section)
(funcall mode)
(magit-xref-setup #'magit-setup-buffer-internal bindings)
- (setq magit-buffer-gitdir (magit-gitdir))
- (setq magit-buffer-topdir (magit-toplevel))
(pcase-dolist (`(,var ,val) bindings)
(set (make-local-variable var) val))
(when created
- [nongnu] elpa/git-commit updated (508041d084 -> 9007bcfdb5), ELPA Syncer, 2023/06/11
- [nongnu] elpa/git-commit 0286d4937b 1/5: Revert "Ignore magit-buffer-topdir when preparing another buffer", ELPA Syncer, 2023/06/11
- [nongnu] elpa/git-commit 61cd60151d 2/5: Revert "Memorize gitdir and topdir for each Magit buffer",
ELPA Syncer <=
- [nongnu] elpa/git-commit 2aa907e4d3 4/5: magit-do-async-shell-command: Use magit-read-file, ELPA Syncer, 2023/06/11
- [nongnu] elpa/git-commit 9007bcfdb5 5/5: magit-read-file{, s}: Don't limit to current directory, ELPA Syncer, 2023/06/11
- [nongnu] elpa/git-commit 5407ac4733 3/5: magit-read-file: Cosmetics, ELPA Syncer, 2023/06/11