emacs-elpa-diffs
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]