branch: elpa/git-commit commit 703dfe58120cc5bdf1a1a454362b174a164d3613 Author: Jonas Bernoulli <jo...@bernoul.li> Commit: Jonas Bernoulli <jo...@bernoul.li>
Remove magit-libgit.el This is just a proof-of-concept. Until that changes its dead weight that should not be packaged. Removing it from version control is the only way to prevent it from getting packaged anyway. --- .github/workflows/test.yml | 2 -- default.mk | 14 -------- lisp/Makefile | 5 --- lisp/magit-base.el | 10 ++---- lisp/magit-core.el | 9 ------ lisp/magit-git.el | 35 -------------------- lisp/magit-libgit.el | 81 ---------------------------------------------- lisp/magit-mode.el | 9 +++--- 8 files changed, 7 insertions(+), 158 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6f3c7f135c..01d105e40f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,7 +1,5 @@ name: Test on: [push, pull_request] -env: - BUILD_MAGIT_LIBGIT: "false" jobs: test: name: Test diff --git a/default.mk b/default.mk index 6a50e28603..2c3cc37b78 100644 --- a/default.mk +++ b/default.mk @@ -40,8 +40,6 @@ GITSTATS_DIR ?= $(TOP)docs/stats GITSTATS_ARGS ?= -c style=https://magit.vc/assets/stats.css \ -c max_authors=180 -c graph_max_authors=7 -BUILD_MAGIT_LIBGIT ?= false - ## Files ############################################################# PKG = magit @@ -57,9 +55,6 @@ EPUBFILES = $(addsuffix .epub,$(filter-out git-commit,$(PACKAGES))) ELS = git-commit.el ELS += magit-section.el ELS += magit-base.el -ifeq "$(BUILD_MAGIT_LIBGIT)" "true" -ELS += magit-libgit.el -endif ELS += magit-git.el ELS += magit-mode.el ELS += magit-margin.el @@ -171,13 +166,6 @@ ifeq "$(DASH_DIR)" "" DASH_DIR = $(TOP)../dash endif -LIBGIT_DIR ?= $(shell \ - find -L $(ELPA_DIR) -maxdepth 1 -regex '.*/libgit-[.0-9]*' 2> /dev/null | \ - sort | tail -n 1) -ifeq "$(LIBGIT_DIR)" "" - LIBGIT_DIR = $(TOP)../libgit -endif - SEQ_DIR ?= $(shell \ find -L $(ELPA_DIR) -maxdepth 1 -regex '.*/seq-[.0-9]*' 2> /dev/null | \ sort | tail -n 1) @@ -218,7 +206,6 @@ LOAD_PATH = -L $(TOP)lisp ifdef CYGPATH LOAD_PATH += -L $(shell cygpath --mixed $(COMPAT_DIR)) LOAD_PATH += -L $(shell cygpath --mixed $(DASH_DIR)) - LOAD_PATH += -L $(shell cygpath --mixed $(LIBGIT_DIR)) LOAD_PATH += -L $(shell cygpath --mixed $(SEQ_DIR)) LOAD_PATH += -L $(shell cygpath --mixed $(TRANSIENT_DIR)) LOAD_PATH += -L $(shell cygpath --mixed $(WITH_EDITOR_DIR)) @@ -228,7 +215,6 @@ ifdef CYGPATH else LOAD_PATH += -L $(COMPAT_DIR) LOAD_PATH += -L $(DASH_DIR) - LOAD_PATH += -L $(LIBGIT_DIR) LOAD_PATH += -L $(SEQ_DIR) LOAD_PATH += -L $(TRANSIENT_DIR) LOAD_PATH += -L $(WITH_EDITOR_DIR) diff --git a/lisp/Makefile b/lisp/Makefile index 0f7f52df38..9a16e39a60 100644 --- a/lisp/Makefile +++ b/lisp/Makefile @@ -12,12 +12,7 @@ all: lisp git-commit.elc: magit-section.elc: magit-base.elc: magit-section.elc -ifeq "$(BUILD_MAGIT_LIBGIT)" "true" -magit-libgit.elc: -magit-git.elc: magit-base.elc magit-libgit.elc -else magit-git.elc: magit-base.elc -endif magit-mode.elc: magit-base.elc magit-git.elc magit-margin.elc: magit-base.elc magit-mode.elc magit-process.elc: magit-base.elc magit-git.elc magit-mode.elc diff --git a/lisp/magit-base.el b/lisp/magit-base.el index 7c71870340..c7bc75c025 100644 --- a/lisp/magit-base.el +++ b/lisp/magit-base.el @@ -861,16 +861,12 @@ See info node `(magit)Debugging Tools' for more information." (delete-dups (cl-mapcan (lambda (lib) - (let ((path (locate-library lib))) - (cond - (path - (list (file-name-directory path))) - ((not (equal lib "libgit")) - (error "Cannot find mandatory dependency %s" lib))))) + (if-let ((path (locate-library lib))) + (list (file-name-directory path)) + (error "Cannot find mandatory dependency %s" lib))) '(;; Like `LOAD_PATH' in `default.mk'. "compat" "dash" - "libgit" "transient" "with-editor" ;; Obviously `magit' itself is needed too. diff --git a/lisp/magit-core.el b/lisp/magit-core.el index ff15486681..57b08f48f6 100644 --- a/lisp/magit-core.el +++ b/lisp/magit-core.el @@ -37,15 +37,6 @@ (require 'magit-transient) (require 'magit-autorevert) -(when (and (not magit-inhibit-libgit) - (magit--libgit-available-p)) - (condition-case err - (require 'magit-libgit) - (error - (setq magit-inhibit-libgit 'error) - (message "Error while loading `magit-libgit': %S" err) - (message "That is not fatal. The `libegit2' module just won't be used.")))) - ;;; Options (defgroup magit nil diff --git a/lisp/magit-git.el b/lisp/magit-git.el index 16c8b2216d..d1785d7534 100644 --- a/lisp/magit-git.el +++ b/lisp/magit-git.el @@ -65,41 +65,6 @@ (cl-pushnew 'orig-rev eieio--known-slot-names) (cl-pushnew 'number eieio--known-slot-names)) -;;; Git implementations - -(defvar magit-inhibit-libgit t - "Whether to inhibit the use of libgit. -Use of libgit is inhibited by default because support for libgit -in magit is only a stub for now. There is no benefit in using -it.") - -(defvar magit--libgit-available-p 'unknown - "Whether libgit is available. -Use the function by the same name instead of this variable.") - -(defun magit--libgit-available-p () - (if (eq magit--libgit-available-p 'unknown) - (setq magit--libgit-available-p - (and module-file-suffix - (let ((libgit (locate-library "libgit"))) - (and libgit - (or (locate-library "libegit2") - (let ((load-path - (cons (expand-file-name - (convert-standard-filename "build") - (file-name-directory libgit)) - load-path))) - (locate-library "libegit2"))))))) - magit--libgit-available-p)) - -(defun magit-gitimpl () - "Return the Git implementation used in this repository." - (if (and (not magit-inhibit-libgit) - (not (file-remote-p default-directory)) - (magit--libgit-available-p)) - 'libgit - 'git)) - ;;; Options ;; For now this is shared between `magit-process' and `magit-git'. diff --git a/lisp/magit-libgit.el b/lisp/magit-libgit.el deleted file mode 100644 index 6db1094be9..0000000000 --- a/lisp/magit-libgit.el +++ /dev/null @@ -1,81 +0,0 @@ -;;; magit-libgit.el --- (POC) Teach Magit to use Libgit2 -*- lexical-binding:t -*- - -;; Copyright (C) 2008-2024 The Magit Project Contributors - -;; Author: Jonas Bernoulli <emacs.ma...@jonas.bernoulli.dev> -;; Maintainer: Jonas Bernoulli <emacs.ma...@jonas.bernoulli.dev> - -;; SPDX-License-Identifier: GPL-3.0-or-later - -;; Magit is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published -;; by the Free Software Foundation, either version 3 of the License, -;; or (at your option) any later version. -;; -;; Magit is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with Magit. If not, see <https://www.gnu.org/licenses/>. - -;; You should have received a copy of the AUTHORS.md file, which -;; lists all contributors. If not, see https://magit.vc/authors. - -;;; Commentary: - -;; This library is not used by default and it is highly experimental. -;; It only implements a single method. Do not use this. - -;; This library teaches Magit to use functions provided by the -;; `libegit2' module to perform certain tasks. That module used the -;; Libgit2 implementation of the Git core methods and is implemented -;; in the `libgit' package. - -;; The hope is that using a C module instead of calling out to `git' -;; all the time increases performance; especially on Windows where -;; starting a process is unreasonably slow. - -;;; Code: - -(require 'cl-lib) -(require 'compat) -(require 'dash) -(require 'eieio) -(require 'subr-x) - -(when (and (featurep 'seq) - (not (fboundp 'seq-keep))) - (unload-feature 'seq 'force)) -(require 'seq) - -(require 'magit-git) - -(require 'libgit) - -;;; Utilities - -(defun magit-libgit-repo (&optional directory) - "Return an object for the repository in DIRECTORY. -If optional DIRECTORY is nil, then use `default-directory'." - (and-let* ((default-directory - (let ((magit-inhibit-libgit t)) - (magit-gitdir directory)))) - (magit--with-refresh-cache - (cons default-directory 'magit-libgit-repo) - (libgit-repository-open default-directory)))) - -;;; Methods - -(cl-defmethod magit-bare-repo-p - (&context ((magit-gitimpl) (eql libgit)) &optional noerror) - (and (magit--assert-default-directory noerror) - (if-let ((repo (magit-libgit-repo))) - (libgit-repository-bare-p repo) - (unless noerror - (signal 'magit-outside-git-repo default-directory))))) - -;;; _ -(provide 'magit-libgit) -;;; magit-libgit.el ends here diff --git a/lisp/magit-mode.el b/lisp/magit-mode.el index 4c4465ed2d..2547505ea5 100644 --- a/lisp/magit-mode.el +++ b/lisp/magit-mode.el @@ -1412,9 +1412,9 @@ repositories." "Zap caches for the current repository. Remove the repository's entry from `magit-repository-local-cache', -remove the host's entry from `magit--host-git-version-cache', set -`magit-section-visibility-cache' to nil for all Magit buffers of -the repository and set `magit--libgit-available-p' to `unknown'. +remove the host's entry from `magit--host-git-version-cache', and +set `magit-section-visibility-cache' to nil for all Magit buffers +of the repository. With a prefix argument or if optional ALL is non-nil, discard the mentioned caches completely." @@ -1438,8 +1438,7 @@ mentioned caches completely." :key #'car :test #'equal))) (dolist (buffer (magit-mode-get-buffers)) (with-current-buffer buffer - (setq magit-section-visibility-cache nil))))) - (setq magit--libgit-available-p 'unknown)) + (setq magit-section-visibility-cache nil)))))) ;;; Utilities