progfolio / elpaca

An elisp package manager
GNU General Public License v3.0
659 stars 33 forks source link

[Support]: Advice on dealing with mono-repos #318

Open deadcombo opened 5 months ago

deadcombo commented 5 months ago

Confirmation

Elpaca Version

Elpaca bc685f5 HEAD -> master, origin/master, origin/HEAD installer: 0.7 emacs-version: GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.41, cairo version 1.18.0) of 2024-04-23 git --version: git version 2.45.2

Operating System

Windows Subsystem for Linux - Arch Linux; Windows 11

Description

Hi. Currently I've a couple of packages that live in mono-repos: flymake (in the emacs repo) and the commercial-emacs variant gnus. These clone the whole repository and subsequently clutter the fetch process with all changes to the repo. Do you have any tips on avoiding this? I see there's some internal mono-repo handling in elpaca.el but it's over my head, I don't understand what it does.

This is the recipe I'm using for flymake (it's the one on the GNU-Devel menu):

( :package "flymake"
       :repo "https://github.com/emacs-mirror/emacs"
       :local-repo "flymake"
       :branch "master"
       :files ("lisp/progmodes/flymake.el"
           (:exclude ".git"))
       :source "GNU-devel ELPA")
progfolio commented 5 months ago

What is the output of M-x elpaca-info for those packages? You may also be interested in something like the build step mentioned here:

f851f4c02d9dcc42b05b2acc004b641537456346

deadcombo commented 5 months ago

Hmm, maybe something like this is possible: https://github.blog/2020-01-17-bring-your-monorepo-down-to-size-with-sparse-checkout/#cloning-in-sparse-mode

flymake [GNU-devel ELPA|GNU ELPA]
A universal on-the-fly syntax checker

source: GNU ELPA
url: https://elpa.gnu.org/packages/flymake.html
menu item recipe:
( :package "flymake"
       :repo "https://github.com/emacs-mirror/emacs"
       :local-repo "flymake"
       :branch "master"
       :files ("lisp/progmodes/flymake.el"
           (:exclude ".git")))
full recipe:
( :package "flymake"
       ;; Inherited from declaration.
       :depth 1
       :inherit t
       :protocol https
       :files ("lisp/progmodes/flymake.el"
           (:exclude ".git"))
       :branch "master"
       :local-repo "flymake"
       :repo "https://github.com/emacs-mirror/emacs")
dependencies:
  emacs   >= 26.1
  eldoc   >= 1.14.0
  project >= 0.7.1
dependents: 
  flymake-guile
installed version: 1.3.7 90234ba
statuses:
  (finished update-log fetching-remotes queued)
files:
  $REPOS/flymake/lisp/progmodes/flymake.el → $BUILDS/flymake/flymake.el
log:
  [2024-06-16 22:06:20] Package queued
  [2024-06-16 22:06:20] Continued by: elpaca--process
  [2024-06-16 22:06:20] Cloning
  [2024-06-16 22:06:20] $git clone --depth 1 --single-branch --branch master https://github.com/emacs-mirror/emacs /home/willow/.emacs.d/elpaca/repos/flymake/
  [2024-06-16 22:06:20]   Cloning into '/home/willow/.emacs.d/elpaca/repos/flymake'...
  [2024-06-16 22:06:21]   remote: Enumerating objects: 5615, done.
  [2024-06-16 22:06:21]   remote: Counting objects: 100% (5615/5615), done.
  [2024-06-16 22:06:26]   remote: Compressing objects: 100% (5086/5086), done.
  [2024-06-16 22:06:55]   remote: Total 5615 (delta 626), reused 2256 (delta 323), pack-reused 0
  [2024-06-16 22:06:55]   Receiving objects: 100% (5615/5615), 49.57 MiB | 1.72 MiB/s, done.
  [2024-06-16 22:06:55]   Resolving deltas: 100% (626/626), done.
  [2024-06-16 22:06:57]   Updating files: 100% (5297/5297), done.
  [2024-06-16 22:06:57] Continued by: elpaca--clone-process-sentinel
  [2024-06-16 22:06:57] Continued by: elpaca--configure-remotes
  [2024-06-16 22:06:57] Checking out master
  [2024-06-16 22:06:57] $git -c advice.detachedHead=false switch -C master origin/master
  [2024-06-16 22:06:57]   Reset branch 'master'
  [2024-06-16 22:06:57]   branch 'master' set up to track 'origin/master'.
  [2024-06-16 22:06:57]   Your branch is up to date with 'origin/master'.
  [2024-06-16 22:06:57] Continued by: #[128 "\302\301\303\300\"\"\207" [("master checked out" ref-checked-out) elpaca--process-sentinel apply append] 6 "

(fn &rest ARGS2)"]
  [2024-06-16 22:06:57] master checked out
  [2024-06-16 22:06:57] Continued by: elpaca--dispatch-build-commands
  [2024-06-16 22:06:58] Continued by: elpaca--queue-dependencies
  [2024-06-16 22:06:58] No external dependencies
  [2024-06-16 22:06:58] Checking dependency versions
  [2024-06-16 22:06:58] Continued by: elpaca--check-version
  [2024-06-16 22:06:58] Linking build files
  [2024-06-16 22:06:58] Continued by: elpaca--link-build-files
  [2024-06-16 22:06:58] Build files linked
  [2024-06-16 22:06:58] Generating autoloads: /home/willow/.emacs.d/elpaca/builds/flymake
  [2024-06-16 22:06:58] $/usr/sbin/emacs -Q -L /home/willow/.emacs.d/elpaca/repos/elpaca/ -l /home/willow/.emacs.d/elpaca/repos/elpaca/elpaca.el --batch --eval (progn (setq gc-cons-percentage 1.0) (elpaca-generate-autoloads "flymake" "/home/willow/.emacs.d/elpaca/builds/flymake"))
  [2024-06-16 22:06:58]     INFO     Scraping files for loaddefs... 
  [2024-06-16 22:06:58]     INFO     Scraping files for loaddefs...done
  [2024-06-16 22:06:58]     GEN      flymake-autoloads.el
  [2024-06-16 22:06:58] Continued by: #[128 "\302\301\303\300\"\"\207" [("Autoloads Generated" nil) elpaca--process-sentinel apply append] 6 "

(fn &rest ARGS2)"]
  [2024-06-16 22:06:58] Autoloads Generated
  [2024-06-16 22:06:58] Byte compiling
  [2024-06-16 22:06:58] $/usr/sbin/emacs -q --batch --eval (let ((gc-cons-percentage 1.0) (native-comp-eln-load-path '("/home/willow/.emacs.d/eln-cache/" "/usr/lib/emacs/30.0.50/native-lisp/"))) (dolist (dir '("/home/willow/.emacs.d/elpaca/builds/flymake")) (let ((default-directory dir)) (add-to-list 'load-path dir) (normal-top-level-add-subdirs-to-load-path))) (byte-recompile-directory "/home/willow/.emacs.d/elpaca/builds/flymake" 0 'force))
  [2024-06-16 22:06:58]   Checking /home/willow/.emacs.d/elpaca/builds/flymake...
  [2024-06-16 22:06:58]   Compiling /home/willow/.emacs.d/elpaca/builds/flymake/flymake-autoloads.el...
  [2024-06-16 22:06:58]   Compiling /home/willow/.emacs.d/elpaca/builds/flymake/flymake.el...
  [2024-06-16 22:06:59]   Done (Total of 1 file compiled, 1 skipped)
  [2024-06-16 22:06:59] Continued by: #[128 "\302\301\303\300\"\"\207" [("Byte compilation complete" nil) elpaca--process-sentinel apply append] 6 "

(fn &rest ARGS2)"]
  [2024-06-16 22:06:59] Byte compilation complete
  [2024-06-16 22:06:59] Compiling Info files
  [2024-06-16 22:06:59] Continued by: elpaca--compile-info
  [2024-06-16 22:06:59] Info source files not found
  [2024-06-16 22:06:59] Continued by: elpaca--dispatch-build-commands
  [2024-06-16 22:06:59] Activating package
  [2024-06-16 22:06:59] Package build dir added to load-path
  [2024-06-16 22:06:59] Caching autoloads
  [2024-06-16 22:06:59] Autoloads cached
  [2024-06-16 22:06:59] Continued by: elpaca--activate-package
  [2024-06-16 22:06:59] ✓ 38.918 secs
  [2024-06-17 00:02:12] Continued by: elpaca--process
  [2024-06-17 00:02:12] Fetching remotes
  [2024-06-17 00:02:12] $git fetch --all -v
  [2024-06-17 00:02:16]   POST git-upload-pack (416 bytes)
  [2024-06-17 00:02:16]   POST git-upload-pack (275 bytes)
  [2024-06-17 00:02:17]   From https://github.com/emacs-mirror/emacs
  [2024-06-17 00:02:17]      90234ba..f18a915  master     -> origin/master
  [2024-06-17 00:02:17] Continued by: #[128 "\302\301\303\300\"\"\207" [("Remotes fetched" nil) elpaca--process-sentinel apply append] 6 "

(fn &rest ARGS2)"]
  [2024-06-17 00:02:17] Remotes fetched
  [2024-06-17 00:02:17] $git --no-pager log --reverse --since=2024-06-16 16:03:41 +0200 --pretty=%h %s (%ch) ..@{u}
  [2024-06-17 00:02:17]   c0eefeb ; Fix typos (Sun 22:38)
  [2024-06-17 00:02:17]   f18a915 ; Translate comment to English (Sun 22:38)
  [2024-06-17 00:02:17] Continued by: #[128 "\302\301\303\300\"\"\207" [(nil nil) elpaca--process-sentinel apply append] 6 "

(fn &rest ARGS2)"]
  [2024-06-17 00:02:17] ✓ 5.747 secs
gnus
Not available in menu functions

source: Init file
full recipe:
( :package "gnus"
       ;; Inherited from declaration.
       :files ("lisp/gnus/*")
       :repo "commercial-emacs/commercial-emacs"
       :host github
       ;; Inherited from elpaca-order-functions.
       :depth 1
       :inherit t
       :protocol https)
dependencies:
nil
dependents: nil
installed version: 5.14 04e2a133a41
statuses:
  (finished update-log fetching-remotes queued)
files:
  $REPOS/commercial-emacs/lisp/gnus/ChangeLog.1           → $BUILDS/gnus/ChangeLog.1
  $REPOS/commercial-emacs/lisp/gnus/ChangeLog.2           → $BUILDS/gnus/ChangeLog.2
  $REPOS/commercial-emacs/lisp/gnus/ChangeLog.3           → $BUILDS/gnus/ChangeLog.3
  $REPOS/commercial-emacs/lisp/gnus/canlock.el            → $BUILDS/gnus/canlock.el
  $REPOS/commercial-emacs/lisp/gnus/deuglify.el           → $BUILDS/gnus/deuglify.el
  $REPOS/commercial-emacs/lisp/gnus/gmm-utils.el          → $BUILDS/gnus/gmm-utils.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-agent.el         → $BUILDS/gnus/gnus-agent.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-art.el           → $BUILDS/gnus/gnus-art.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-async.el         → $BUILDS/gnus/gnus-async.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-bcklg.el         → $BUILDS/gnus/gnus-bcklg.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-bookmark.el      → $BUILDS/gnus/gnus-bookmark.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-cache.el         → $BUILDS/gnus/gnus-cache.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-cite.el          → $BUILDS/gnus/gnus-cite.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-cloud.el         → $BUILDS/gnus/gnus-cloud.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-cus.el           → $BUILDS/gnus/gnus-cus.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-dbus.el          → $BUILDS/gnus/gnus-dbus.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-delay.el         → $BUILDS/gnus/gnus-delay.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-demon.el         → $BUILDS/gnus/gnus-demon.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-diary.el         → $BUILDS/gnus/gnus-diary.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-dired.el         → $BUILDS/gnus/gnus-dired.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-draft.el         → $BUILDS/gnus/gnus-draft.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-dup.el           → $BUILDS/gnus/gnus-dup.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-eform.el         → $BUILDS/gnus/gnus-eform.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-fun.el           → $BUILDS/gnus/gnus-fun.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-gravatar.el      → $BUILDS/gnus/gnus-gravatar.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-group.el         → $BUILDS/gnus/gnus-group.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-html.el          → $BUILDS/gnus/gnus-html.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-icalendar.el     → $BUILDS/gnus/gnus-icalendar.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-int.el           → $BUILDS/gnus/gnus-int.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-kill.el          → $BUILDS/gnus/gnus-kill.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-logic.el         → $BUILDS/gnus/gnus-logic.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-mh.el            → $BUILDS/gnus/gnus-mh.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-ml.el            → $BUILDS/gnus/gnus-ml.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-mlspl.el         → $BUILDS/gnus/gnus-mlspl.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-msg.el           → $BUILDS/gnus/gnus-msg.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-notifications.el → $BUILDS/gnus/gnus-notifications.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-picon.el         → $BUILDS/gnus/gnus-picon.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-range.el         → $BUILDS/gnus/gnus-range.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-registry.el      → $BUILDS/gnus/gnus-registry.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-rfc1843.el       → $BUILDS/gnus/gnus-rfc1843.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-rmail.el         → $BUILDS/gnus/gnus-rmail.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-salt.el          → $BUILDS/gnus/gnus-salt.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-score.el         → $BUILDS/gnus/gnus-score.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-search.el        → $BUILDS/gnus/gnus-search.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-sieve.el         → $BUILDS/gnus/gnus-sieve.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-spec.el          → $BUILDS/gnus/gnus-spec.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-srvr.el          → $BUILDS/gnus/gnus-srvr.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-start.el         → $BUILDS/gnus/gnus-start.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-sum.el           → $BUILDS/gnus/gnus-sum.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-topic.el         → $BUILDS/gnus/gnus-topic.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-undo.el          → $BUILDS/gnus/gnus-undo.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-util.el          → $BUILDS/gnus/gnus-util.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-uu.el            → $BUILDS/gnus/gnus-uu.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-vm.el            → $BUILDS/gnus/gnus-vm.el
  $REPOS/commercial-emacs/lisp/gnus/gnus-win.el           → $BUILDS/gnus/gnus-win.el
  $REPOS/commercial-emacs/lisp/gnus/gnus.el               → $BUILDS/gnus/gnus.el
  $REPOS/commercial-emacs/lisp/gnus/gssapi.el             → $BUILDS/gnus/gssapi.el
  $REPOS/commercial-emacs/lisp/gnus/mail-source.el        → $BUILDS/gnus/mail-source.el
  $REPOS/commercial-emacs/lisp/gnus/message.el            → $BUILDS/gnus/message.el
  $REPOS/commercial-emacs/lisp/gnus/mm-archive.el         → $BUILDS/gnus/mm-archive.el
  $REPOS/commercial-emacs/lisp/gnus/mm-bodies.el          → $BUILDS/gnus/mm-bodies.el
  $REPOS/commercial-emacs/lisp/gnus/mm-decode.el          → $BUILDS/gnus/mm-decode.el
  $REPOS/commercial-emacs/lisp/gnus/mm-encode.el          → $BUILDS/gnus/mm-encode.el
  $REPOS/commercial-emacs/lisp/gnus/mm-extern.el          → $BUILDS/gnus/mm-extern.el
  $REPOS/commercial-emacs/lisp/gnus/mm-partial.el         → $BUILDS/gnus/mm-partial.el
  $REPOS/commercial-emacs/lisp/gnus/mm-url.el             → $BUILDS/gnus/mm-url.el
  $REPOS/commercial-emacs/lisp/gnus/mm-util.el            → $BUILDS/gnus/mm-util.el
  $REPOS/commercial-emacs/lisp/gnus/mm-uu.el              → $BUILDS/gnus/mm-uu.el
  $REPOS/commercial-emacs/lisp/gnus/mm-view.el            → $BUILDS/gnus/mm-view.el
  $REPOS/commercial-emacs/lisp/gnus/mml-sec.el            → $BUILDS/gnus/mml-sec.el
  $REPOS/commercial-emacs/lisp/gnus/mml-smime.el          → $BUILDS/gnus/mml-smime.el
  $REPOS/commercial-emacs/lisp/gnus/mml.el                → $BUILDS/gnus/mml.el
  $REPOS/commercial-emacs/lisp/gnus/mml1991.el            → $BUILDS/gnus/mml1991.el
  $REPOS/commercial-emacs/lisp/gnus/mml2015.el            → $BUILDS/gnus/mml2015.el
  $REPOS/commercial-emacs/lisp/gnus/nnagent.el            → $BUILDS/gnus/nnagent.el
  $REPOS/commercial-emacs/lisp/gnus/nnatom.el             → $BUILDS/gnus/nnatom.el
  $REPOS/commercial-emacs/lisp/gnus/nnbabyl.el            → $BUILDS/gnus/nnbabyl.el
  $REPOS/commercial-emacs/lisp/gnus/nndiary.el            → $BUILDS/gnus/nndiary.el
  $REPOS/commercial-emacs/lisp/gnus/nndir.el              → $BUILDS/gnus/nndir.el
  $REPOS/commercial-emacs/lisp/gnus/nndoc.el              → $BUILDS/gnus/nndoc.el
  $REPOS/commercial-emacs/lisp/gnus/nndraft.el            → $BUILDS/gnus/nndraft.el
  $REPOS/commercial-emacs/lisp/gnus/nneething.el          → $BUILDS/gnus/nneething.el
  $REPOS/commercial-emacs/lisp/gnus/nnfeed.el             → $BUILDS/gnus/nnfeed.el
  $REPOS/commercial-emacs/lisp/gnus/nnfolder.el           → $BUILDS/gnus/nnfolder.el
  $REPOS/commercial-emacs/lisp/gnus/nngateway.el          → $BUILDS/gnus/nngateway.el
  $REPOS/commercial-emacs/lisp/gnus/nnheader.el           → $BUILDS/gnus/nnheader.el
  $REPOS/commercial-emacs/lisp/gnus/nnimap.el             → $BUILDS/gnus/nnimap.el
  $REPOS/commercial-emacs/lisp/gnus/nnmail.el             → $BUILDS/gnus/nnmail.el
  $REPOS/commercial-emacs/lisp/gnus/nnmaildir.el          → $BUILDS/gnus/nnmaildir.el
  $REPOS/commercial-emacs/lisp/gnus/nnmairix.el           → $BUILDS/gnus/nnmairix.el
  $REPOS/commercial-emacs/lisp/gnus/nnmbox.el             → $BUILDS/gnus/nnmbox.el
  $REPOS/commercial-emacs/lisp/gnus/nnmh.el               → $BUILDS/gnus/nnmh.el
  $REPOS/commercial-emacs/lisp/gnus/nnml.el               → $BUILDS/gnus/nnml.el
  $REPOS/commercial-emacs/lisp/gnus/nnnil.el              → $BUILDS/gnus/nnnil.el
  $REPOS/commercial-emacs/lisp/gnus/nnoo.el               → $BUILDS/gnus/nnoo.el
  $REPOS/commercial-emacs/lisp/gnus/nnregistry.el         → $BUILDS/gnus/nnregistry.el
  $REPOS/commercial-emacs/lisp/gnus/nnrss.el              → $BUILDS/gnus/nnrss.el
  $REPOS/commercial-emacs/lisp/gnus/nnselect.el           → $BUILDS/gnus/nnselect.el
  $REPOS/commercial-emacs/lisp/gnus/nnspool.el            → $BUILDS/gnus/nnspool.el
  $REPOS/commercial-emacs/lisp/gnus/nntp.el               → $BUILDS/gnus/nntp.el
  $REPOS/commercial-emacs/lisp/gnus/nnvirtual.el          → $BUILDS/gnus/nnvirtual.el
  $REPOS/commercial-emacs/lisp/gnus/nnweb.el              → $BUILDS/gnus/nnweb.el
  $REPOS/commercial-emacs/lisp/gnus/score-mode.el         → $BUILDS/gnus/score-mode.el
  $REPOS/commercial-emacs/lisp/gnus/smiley.el             → $BUILDS/gnus/smiley.el
  $REPOS/commercial-emacs/lisp/gnus/smime.el              → $BUILDS/gnus/smime.el
  $REPOS/commercial-emacs/lisp/gnus/spam-report.el        → $BUILDS/gnus/spam-report.el
  $REPOS/commercial-emacs/lisp/gnus/spam-stat.el          → $BUILDS/gnus/spam-stat.el
  $REPOS/commercial-emacs/lisp/gnus/spam-wash.el          → $BUILDS/gnus/spam-wash.el
  $REPOS/commercial-emacs/lisp/gnus/spam.el               → $BUILDS/gnus/spam.el
log:
  [2024-06-16 22:06:20] Package queued
  [2024-06-16 22:06:20] Continued by: elpaca--process
  [2024-06-16 22:06:20] Continued by: elpaca--queue-dependencies
  [2024-06-16 22:06:20] No external dependencies
  [2024-06-16 22:06:20] No Info dir file found
  [2024-06-16 22:06:20] Continued by: elpaca--add-info-path
  [2024-06-16 22:06:20] Activating package
  [2024-06-16 22:06:20] Package build dir added to load-path
  [2024-06-16 22:06:20] Caching autoloads
  [2024-06-16 22:06:20] Autoloads cached
  [2024-06-16 22:06:20] Continued by: elpaca--activate-package
  [2024-06-16 22:06:20] ✓ 0.369 secs
  [2024-06-17 00:02:14] Continued by: elpaca--process
  [2024-06-17 00:02:14] Fetching remotes
  [2024-06-17 00:02:14] $git fetch --all -v
  [2024-06-17 00:02:16]   POST git-upload-pack (416 bytes)
  [2024-06-17 00:02:17]   From https://github.com/commercial-emacs/commercial-emacs
  [2024-06-17 00:02:17]    = [up to date]              master     -> origin/master
  [2024-06-17 00:02:17] Continued by: #[128 "\302\301\303\300\"\"\207" [("Remotes fetched" nil) elpaca--process-sentinel apply append] 6 "

(fn &rest ARGS2)"]
  [2024-06-17 00:02:17] Remotes fetched
  [2024-06-17 00:02:17] $git --no-pager log --reverse --since=2024-06-04 13:08:19 -0400 --pretty=%h %s (%ch) ..@{u}
  [2024-06-17 00:02:17] Continued by: #[128 "\302\301\303\300\"\"\207" [(nil nil) elpaca--process-sentinel apply append] 6 "

(fn &rest ARGS2)"]
  [2024-06-17 00:02:17] ✓ 5.742 secs
progfolio commented 5 months ago

Hmm, maybe something like this is possible: https://github.blog/2020-01-17-bring-your-monorepo-down-to-size-with-sparse-checkout/#cloning-in-sparse-mode

I've considered using sparse checkouts. Have not had the chance to implement/test it much:

https://github.com/progfolio/elpaca/issues/300#issuecomment-2081701038