aboutsummaryrefslogtreecommitdiff
path: root/lisp/magit-remote.el
diff options
context:
space:
mode:
authorJonas Bernoulli <jonas@bernoul.li>2023-01-15 16:24:46 +0100
committerJonas Bernoulli <jonas@bernoul.li>2023-01-15 16:24:46 +0100
commit59833692ed02a7589482c9358466c9b890530776 (patch)
treefd5c97173027aa1e0322998acd7d053975860e7f /lisp/magit-remote.el
parent2286a6397485f815de70e8105eda90fd0caed4e7 (diff)
magit-update-default-branch: New command
Diffstat (limited to 'lisp/magit-remote.el')
-rw-r--r--lisp/magit-remote.el32
1 files changed, 32 insertions, 0 deletions
diff --git a/lisp/magit-remote.el b/lisp/magit-remote.el
index 3b6689a..75958c4 100644
--- a/lisp/magit-remote.el
+++ b/lisp/magit-remote.el
@@ -85,6 +85,7 @@ has to be used to view and change remote related variables."
[("C" "Configure..." magit-remote-configure)
("p" "Prune stale branches" magit-remote-prune)
("P" "Prune stale refspecs" magit-remote-prune-refspecs)
+ ("b" magit-update-default-branch)
(7 "z" "Unshallow remote" magit-remote-unshallow)]]
(interactive (list (magit-get-current-remote)))
(transient-setup 'magit-remote nil nil :scope remote))
@@ -255,6 +256,37 @@ 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 (autoload 'magit-update-default-branch "magit-remote" nil t)
+(transient-define-suffix magit-update-default-branch ()
+ "Update name of the default branch after upstream changed it."
+ :description "Update default branch"
+ :inapt-if-not #'magit-get-some-remote
+ (interactive)
+ (pcase-let ((`(,_remote ,oldname) (magit--get-default-branch))
+ (`( ,remote ,newname) (magit--get-default-branch t)))
+ (cond
+ ((equal oldname newname)
+ (setq oldname
+ (read-string
+ (format "Name of default branch is still `%s', %s\n%s" oldname
+ "but some upstreams might need updating."
+ "Name of upstream branches to update: ")))
+ (magit--set-default-branch newname oldname)
+ (magit-refresh))
+ (t
+ (unless oldname
+ (setq oldname
+ (magit-read-other-local-branch
+ (format "Name of old default branch to be renamed to `%s'"
+ newname)
+ newname "master")))
+ (cond
+ ((y-or-n-p (format "Default branch changed from `%s' to `%s' on %s.%s"
+ oldname newname remote " Do the same locally? "))
+ (magit--set-default-branch newname oldname)
+ (magit-refresh))
+ ((user-error "Abort")))))))
+
;;;###autoload
(defun magit-remote-unshallow (remote)
"Convert a shallow remote into a full one.