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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/git-commit 1e40d00: magit-remote-unshallow: New command


From: ELPA Syncer
Subject: [nongnu] elpa/git-commit 1e40d00: magit-remote-unshallow: New command
Date: Mon, 13 Sep 2021 15:57:27 -0400 (EDT)

branch: elpa/git-commit
commit 1e40d0021790707f6e88debda04f6b14d9429586
Author: Jonas Bernoulli <jonas@bernoul.li>
Commit: Jonas Bernoulli <jonas@bernoul.li>

    magit-remote-unshallow: New command
    
    Closes #4480.
---
 lisp/magit-remote.el | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/lisp/magit-remote.el b/lisp/magit-remote.el
index a2dd42c..caef16c 100644
--- a/lisp/magit-remote.el
+++ b/lisp/magit-remote.el
@@ -87,7 +87,8 @@ has to be used to view and change remote related variables."
     ("k" "Remove"               magit-remote-remove)]
    [("C" "Configure..."         magit-remote-configure)
     ("p" "Prune stale branches" magit-remote-prune)
-    ("P" "Prune stale refspecs" magit-remote-prune-refspecs)]]
+    ("P" "Prune stale refspecs" magit-remote-prune-refspecs)
+    (7 "z" "Unshallow remote"   magit-remote-unshallow)]]
   (interactive (list (magit-get-current-remote)))
   (transient-setup 'magit-remote nil nil :scope remote))
 
@@ -257,6 +258,24 @@ Delete the symbolic-ref \"refs/remotes/<remote>/HEAD\"."
   (interactive (list (magit-read-remote "Unset HEAD for remote")))
   (magit-run-git "remote" "set-head" remote "--delete"))
 
+;;;###autoload
+(defun magit-remote-unshallow (remote)
+  "Convert a shallow remote into a full one.
+If only a single refspec is set and it does not contain a
+wildcard, then also offer to replace it with the standard
+refspec."
+  (interactive (list (or (magit-get-current-remote)
+                         (magit-read-remote "Delete remote"))))
+  (let ((refspecs (magit-get-all "remote" remote "fetch"))
+        (standard (format "+refs/heads/*:refs/remotes/%s/*" remote)))
+    (when (and (= (length refspecs) 1)
+               (not (string-match-p "\\*" (car refspecs)))
+               (yes-or-no-p (format "Also replace refspec %s with %s? "
+                                    (car refspecs)
+                                    standard)))
+      (magit-set standard "remote" remote "fetch"))
+    (magit-git-fetch "--unshallow" remote)))
+
 ;;; Configure
 
 ;;;###autoload (autoload 'magit-remote-configure "magit-remote" nil t)



reply via email to

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