[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] elpa-admin 5250761 270/357: * admin/archive-contents.el: Use `git
From: |
Stefan Monnier |
Subject: |
[elpa] elpa-admin 5250761 270/357: * admin/archive-contents.el: Use `git worktree` for externals |
Date: |
Thu, 10 Dec 2020 18:06:57 -0500 (EST) |
branch: elpa-admin
commit 525076114bce71d13ebaec8de3fd587912f37907
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>
* admin/archive-contents.el: Use `git worktree` for externals
* admin/archive-contents.el (archive--use-worktree): New var.
(archive--use-worktree-p): New function.
(archive--external-package-sync): Use it to use `git worktree`
when available.
(archive--external-package-sync): Don't `git fetch` if this is a worktree.
Shorten the output when it's a single line.
---
admin/archive-contents.el | 40 +++++++++++++++++++++++++++++++---------
1 file changed, 31 insertions(+), 9 deletions(-)
diff --git a/admin/archive-contents.el b/admin/archive-contents.el
index af156b9..322eef9 100644
--- a/admin/archive-contents.el
+++ b/admin/archive-contents.el
@@ -607,9 +607,19 @@ Rename DIR/ to PKG-VERS/, and return the descriptor."
(defun archive--pull (dirname)
(let ((default-directory (archive--dirname dirname)))
(with-temp-buffer
- (message "Running git pull in %S" default-directory)
- (archive-call t "git" "pull")
- (message "Updated %s:\n%s" dirname (buffer-string)))))
+ (cond
+ ((file-directory-p ".git")
+ (message "Running git pull in %S" default-directory)
+ (archive-call t "git" "pull"))
+ ((file-exists-p ".git")
+ (message "Updating worktree in %S" default-directory)
+ (archive-call t "git" "merge"))
+ (t (error "No .git in %S" default-directory)))
+ (message "Updated %s:%s%s" dirname
+ (if (and (eobp) (bolp)
+ (eq (line-beginning-position 0) (point-min)))
+ " " "\n")
+ (buffer-string)))))
;;; Maintain external packages.
@@ -688,6 +698,15 @@ If WITH-CORE is non-nil, it means we manage :core packages
as well."
;; (delete-directory dir 'recursive t))))
)))))
+(defvar archive--use-worktree nil)
+(defun archive--use-worktree-p ()
+ (unless archive--use-worktree
+ (setq archive--use-worktree
+ (list
+ (ignore-errors
+ (zerop (call-process "git" nil nil nil "worktree" "--help"))))))
+ (car archive--use-worktree))
+
(defun archive--external-package-sync (name)
"Sync external package named NAME."
(let ((default-directory (expand-file-name "packages/")))
@@ -695,14 +714,17 @@ If WITH-CORE is non-nil, it means we manage :core
packages as well."
(let* ((branch (concat "externals/" name))
(output
(with-temp-buffer
- ;; FIXME: Use `git worktree'!
- (archive-call t "git" "clone"
- "--reference" ".." "--single-branch"
- "--branch" branch
- archive--elpa-git-url name)
+ (if (archive--use-worktree-p)
+ (archive-call t "git" "worktree" "add"
+ "-b" branch
+ name (concat "origin/" branch))
+ (archive-call t "git" "clone"
+ "--reference" ".." "--single-branch"
+ "--branch" branch
+ archive--elpa-git-url name))
(buffer-string))))
(message "Cloning branch %s:\n%s" name output)))
- ((not (file-directory-p (concat name "/.git")))
+ ((not (file-exists-p (concat name "/.git")))
(message "%s is in the way of an external, please remove!" name))
(t (archive--pull name)))))
- [elpa] elpa-admin 9731033 204/357: Use symbolic links for core packages, (continued)
- [elpa] elpa-admin 9731033 204/357: Use symbolic links for core packages, Stefan Monnier, 2020/12/10
- [elpa] elpa-admin 5571ea8 211/357: Add symlink to README, Stefan Monnier, 2020/12/10
- [elpa] elpa-admin 9ab6e7e 217/357: Update packages/yasnippet by subtree-merging from its external upstream, Stefan Monnier, 2020/12/10
- [elpa] elpa-admin f1c2e2f 210/357: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs/elpa: transcribe.el update, Stefan Monnier, 2020/12/10
- [elpa] elpa-admin 0d7eb99 235/357: Add 'packages/realgud/' from commit 'b7a7fe924217931332915d457928c6851db4a636', Stefan Monnier, 2020/12/10
- [elpa] elpa-admin b14148a 249/357: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs/elpa, Stefan Monnier, 2020/12/10
- [elpa] elpa-admin 8208d1c 245/357: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs/elpa, Stefan Monnier, 2020/12/10
- [elpa] elpa-admin 299da86 255/357: Package pages improvements, Stefan Monnier, 2020/12/10
- [elpa] elpa-admin ec13cc2 260/357: Let ert-support.el work for subdirectories, Stefan Monnier, 2020/12/10
- [elpa] elpa-admin 294407d 256/357: README: Fix copyright years., Stefan Monnier, 2020/12/10
- [elpa] elpa-admin 5250761 270/357: * admin/archive-contents.el: Use `git worktree` for externals,
Stefan Monnier <=
- [elpa] elpa-admin 334aa51 273/357: Merge commit 'a1130df3ada34e76675324a8c25823b420b20239', Stefan Monnier, 2020/12/10
- [elpa] elpa-admin 5067b05 258/357: Change to package directory before checking .elpaignore exclusions., Stefan Monnier, 2020/12/10
- [elpa] elpa-admin 82a2bda 259/357: Put tar'd files at the end to fix build in some environments., Stefan Monnier, 2020/12/10
- [elpa] elpa-admin 7626ffa 254/357: Website footer improvement, Stefan Monnier, 2020/12/10
- [elpa] elpa-admin dbd4e0b 295/357: Merge remote-tracking branch 'refs/remotes/origin/master', Stefan Monnier, 2020/12/10
- [elpa] elpa-admin 02d8431 297/357: * admin/archive-contents.el (archive--insert-repolinks): Fix further yet, Stefan Monnier, 2020/12/10
- [elpa] elpa-admin 38e81a8 300/357: * README: Recommend "externals" and add some recommendations, Stefan Monnier, 2020/12/10
- [elpa] elpa-admin a216465 299/357: * admin/archive-contents.el (archive--insert-repolinks): Whoops, Stefan Monnier, 2020/12/10
- [elpa] elpa-admin 0e7eab5 304/357: Merge commit 'facd92f4c026525706a48b96b4e0b24543ce1d94', Stefan Monnier, 2020/12/10
- [elpa] elpa-admin 75bab1c 309/357: * admin/archive-contents.el: Fix case of non-versions dependencies, Stefan Monnier, 2020/12/10