diff mbox series

[bug#55517] Acknowledgement ([PATCH]: gnu: emacs-magit: Drop the libgit backend.)

Message ID 86sfp6je99.fsf@163.com
State Accepted
Headers show
Series [bug#55517] Acknowledgement ([PATCH]: gnu: emacs-magit: Drop the libgit backend.) | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Zhu Zihao May 19, 2022, 5:13 a.m. UTC
Fix the typo in commit message

Comments

Liliana Marie Prikler May 19, 2022, 6:01 a.m. UTC | #1
For easier reading I suggest doing

Am Donnerstag, dem 19.05.2022 um 13:13 +0800 schrieb Zhu Zihao:
> * gnu/packages/emacs-xyz.scm (emacs-magit)[arguments]: Use G-
> expressions.
this in an extra commit and
> <emacs>: Remove this argument.
> <exclude>: Exclude the magit-libgit.el and magit-libgit-pkg.el.
> <phases>: In phase 'patch-exec-paths', use search-input-file for perl
> executable.
> [inputs]: Remove emacs-libgit.
this either before or after it.  Also don't forget the "#:" in the
arguments.

Cheers
Maxim Cournoyer May 21, 2022, 2:13 a.m. UTC | #2
Hi Zhu,

Zhu Zihao <all_but_last@163.com> writes:

> Fix the typo in commit message
>
>>From 8a2de5764a67bea1cbf789c8d6ce0ab0878ec40b Mon Sep 17 00:00:00 2001
> From: Zhu Zihao <all_but_last@163.com>
> Date: Thu, 19 May 2022 13:01:46 +0800
> Subject: [PATCH] gnu: emacs-magit: Drop the libgit backend.
>
> Drop the libgit backend for following reasons:
>
> 1. The libgit backend of Magitis very incomplete. There's almost no benefits,
> but extra maintenance efforts.

Could you elaborate about "almost no benefits"?  Even if it's a small
benefit, if it makes it faster, I'd still keep it since Magit is at
times excruciatingly slow.

> 2. The libgit backend of Magit can be considered as an extra package. And it's
> still in Proof-Of-Concept status so its quaility doesn't satisfy the
> requirement of Guix package.

There's not really any "quality requirements" for Guix package; we
package stable releases when they're available; the rest is up to us
Guix users.

Do you happen to have a link to some exchange where Magit authors would
recommend against using the libgit library at this point in time to
speed up Magit?  Otherwise, I'm not convinced.

Thanks,

Maxim
Zhu Zihao May 21, 2022, 3:45 a.m. UTC | #3
Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

> Hi Zhu,
>
> Zhu Zihao <all_but_last@163.com> writes:
>
>> Fix the typo in commit message
>>
>>>From 8a2de5764a67bea1cbf789c8d6ce0ab0878ec40b Mon Sep 17 00:00:00 2001
>> From: Zhu Zihao <all_but_last@163.com>
>> Date: Thu, 19 May 2022 13:01:46 +0800
>> Subject: [PATCH] gnu: emacs-magit: Drop the libgit backend.
>>
>> Drop the libgit backend for following reasons:
>>
>> 1. The libgit backend of Magitis very incomplete. There's almost no benefits,
>> but extra maintenance efforts.
>
> Could you elaborate about "almost no benefits"?  Even if it's a small
> benefit, if it makes it faster, I'd still keep it since Magit is at
> times excruciatingly slow.

It's slow? AFAIK magit user always complain that magit on Windows system
is slow. The process creation on *nix is much cheaper than Windows, so
Magit is not slow on *nix.

I've elaborated the reason in
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=55427.

The libgit backend of Magit is almost nothing, only one function is
implemented. `magit-bare-repo-p` will be used in magit-toplevel which is
called frequently in the magit source code. But this function is cached.

You can still say it's faster, but it's fair to say the libgit backend
doesn't worth the maintenance effort due to the inactive status of
upstream.

>> 2. The libgit backend of Magit can be considered as an extra package. And it's
>> still in Proof-Of-Concept status so its quaility doesn't satisfy the
>> requirement of Guix package.
>
> There's not really any "quality requirements" for Guix package; we
> package stable releases when they're available; the rest is up to us
> Guix users.

If you really wants to keep the libgit backend. I'd suggest to make it a
dedicated package. If emacs-libgit is broken (again), magit is still usable. 

> Do you happen to have a link to some exchange where Magit authors would
> recommend against using the libgit library at this point in time to
> speed up Magit?  Otherwise, I'm not convinced.

No, I've said above. The libgit backend is very very very imcomplete.

>
> Thanks,
>
> Maxim
Maxim Cournoyer May 22, 2022, 12:46 a.m. UTC | #4
Hello,

Zhu Zihao <all_but_last@163.com> writes:

> Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:
>
>> Hi Zhu,
>>
>> Zhu Zihao <all_but_last@163.com> writes:
>>
>>> Fix the typo in commit message
>>>
>>>>From 8a2de5764a67bea1cbf789c8d6ce0ab0878ec40b Mon Sep 17 00:00:00 2001
>>> From: Zhu Zihao <all_but_last@163.com>
>>> Date: Thu, 19 May 2022 13:01:46 +0800
>>> Subject: [PATCH] gnu: emacs-magit: Drop the libgit backend.
>>>
>>> Drop the libgit backend for following reasons:
>>>
>>> 1. The libgit backend of Magitis very incomplete. There's almost no benefits,
>>> but extra maintenance efforts.
>>
>> Could you elaborate about "almost no benefits"?  Even if it's a small
>> benefit, if it makes it faster, I'd still keep it since Magit is at
>> times excruciatingly slow.
>
> It's slow? AFAIK magit user always complain that magit on Windows system
> is slow. The process creation on *nix is much cheaper than Windows, so
> Magit is not slow on *nix.

I've never used it on Windows, but yes, when working with hundred of
commits it's quite slow; just refreshing the status buffer takes ages.

> I've elaborated the reason in
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=55427.
>
> The libgit backend of Magit is almost nothing, only one function is
> implemented. `magit-bare-repo-p` will be used in magit-toplevel which is
> called frequently in the magit source code. But this function is cached.

Thanks for that; I've looked at magit-libgit.el and it indeed doesn't
appear to provide much of anything yet.  I guess we could drop the
dependency for now and revisit it in the future if/when development
picks up again on the magit/libgit integration.

Thanks,

Maxim
diff mbox series

Patch

From 8a2de5764a67bea1cbf789c8d6ce0ab0878ec40b Mon Sep 17 00:00:00 2001
From: Zhu Zihao <all_but_last@163.com>
Date: Thu, 19 May 2022 13:01:46 +0800
Subject: [PATCH] gnu: emacs-magit: Drop the libgit backend.

Drop the libgit backend for following reasons:

1. The libgit backend of Magitis very incomplete. There's almost no benefits,
but extra maintenance efforts.

2. The libgit backend of Magit can be considered as an extra package. And it's
still in Proof-Of-Concept status so its quaility doesn't satisfy the
requirement of Guix package.

* gnu/packages/emacs-xyz.scm (emacs-magit)[arguments]: Use G-expressions.
<emacs>: Remove this argument.
<exclude>: Exclude the magit-libgit.el and magit-libgit-pkg.el.
<phases>: In phase 'patch-exec-paths', use search-input-file for perl
executable.

[inputs]: Remove emacs-libgit.
---
 gnu/packages/emacs-xyz.scm | 95 ++++++++++++++++++++------------------
 1 file changed, 49 insertions(+), 46 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index eed2f4b71c..d3ca00475e 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -869,57 +869,60 @@  (define-public emacs-magit
         (base32 "0cxyvp2aav27znc7mf6c83q5pddpdniaqkrxn1r8dbgr540qmnpn"))))
     (build-system emacs-build-system)
     (arguments
-     `(#:emacs ,emacs-no-x             ;module support is required
-       #:tests? #t
-       #:test-command '("make" "test")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'build-info-manual
-           (lambda _
-             (invoke "make" "info")
-             ;; Copy info files to the lisp directory, which acts as
-             ;; the root of the project for the emacs-build-system.
-             (for-each (lambda (f)
-                         (install-file f "lisp"))
-                       (find-files "Documentation" "\\.info$"))
-             (chdir "lisp")))
-         (add-after 'build-info-manual 'set-magit-version
-           (lambda _
-             (make-file-writable "magit.el")
-             (emacs-substitute-variables "magit.el"
-               ("magit-version" ,version))))
-         (add-after 'set-magit-version 'patch-exec-paths
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((perl (assoc-ref inputs "perl")))
-               (make-file-writable "magit-sequence.el")
-               (emacs-substitute-variables "magit-sequence.el"
-                 ("magit-perl-executable" (string-append perl "/bin/perl"))))))
-         (add-before 'check 'configure-git
-           (lambda _
-             ;; Otherwise some tests fail with error "unable to auto-detect
-             ;; email address".
-             (setenv "HOME" (getcwd))
-             (invoke "git" "config" "--global" "user.name" "toto")
-             (invoke "git" "config" "--global" "user.email"
-                     "toto@toto.com")))
-         (add-after 'configure-git 'disable-tramp-test
-           (lambda _
-             ;; There is an issue causing TRAMP to fail in the build
-             ;; environment.  Setting the tramp-remote-shell parameter of
-             ;; the sudo-method to the file name of the shell didn't help.
-             (chdir "..")
-             (substitute* "t/magit-tests.el"
-               (("^\\(ert-deftest magit-toplevel:tramp.*" all)
-                (string-append all "  (skip-unless nil)")))))
-         (add-before 'install 'enter-lisp-directory
-           (lambda _
-             (chdir "lisp"))))))
+     (list
+      #:tests? #t
+      #:test-command #~(list "make" "test")
+      #:exclude #~(cons* "magit-libgit.el"
+                         "magit-libgit-pkg.el"
+                         %default-exclude)
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'build-info-manual
+            (lambda _
+              (invoke "make" "info")
+              ;; Copy info files to the lisp directory, which acts as
+              ;; the root of the project for the emacs-build-system.
+              (for-each (lambda (f)
+                          (install-file f "lisp"))
+                        (find-files "Documentation" "\\.info$"))
+              (chdir "lisp")))
+          (add-after 'build-info-manual 'set-magit-version
+            (lambda _
+              (make-file-writable "magit.el")
+              (emacs-substitute-variables "magit.el"
+                ("magit-version" #$version))))
+          (add-after 'set-magit-version 'patch-exec-paths
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((perl (search-input-file inputs "/bin/perl")))
+                (make-file-writable "magit-sequence.el")
+                (emacs-substitute-variables "magit-sequence.el"
+                  ("magit-perl-executable" perl)))))
+          (add-before 'check 'configure-git
+            (lambda _
+              ;; Otherwise some tests fail with error "unable to auto-detect
+              ;; email address".
+              (setenv "HOME" (getcwd))
+              (invoke "git" "config" "--global" "user.name" "toto")
+              (invoke "git" "config" "--global" "user.email"
+                      "toto@toto.com")))
+          (add-after 'configure-git 'disable-tramp-test
+            (lambda _
+              ;; There is an issue causing TRAMP to fail in the build
+              ;; environment.  Setting the tramp-remote-shell parameter of
+              ;; the sudo-method to the file name of the shell didn't help.
+              (chdir "..")
+              (substitute* "t/magit-tests.el"
+                (("^\\(ert-deftest magit-toplevel:tramp.*" all)
+                 (string-append all "  (skip-unless nil)")))))
+          (add-before 'install 'enter-lisp-directory
+            (lambda _
+              (chdir "lisp"))))))
     (native-inputs
      (list texinfo))
     (inputs
      (list git perl))
     (propagated-inputs
-     (list emacs-dash emacs-libgit emacs-transient emacs-with-editor))
+     (list emacs-dash emacs-transient emacs-with-editor))
     (home-page "https://magit.vc/")
     (synopsis "Emacs interface for the Git version control system")
     (description
-- 
2.36.0