summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--init.el4
-rw-r--r--lisp/km-magit.el10
2 files changed, 12 insertions, 2 deletions
diff --git a/init.el b/init.el
index 623b8d1..50fab18 100644
--- a/init.el
+++ b/init.el
@@ -1157,8 +1157,8 @@
'("c" "Create & checkout from current"
km/magit-branch-and-checkout-from-current))
- (transient-replace-suffix 'magit-branch "r"
- '("r" "Rename branch" km/magit-branch-rename))
+ (transient-append-suffix 'magit-branch "S"
+ '("d" "Copy branch" km/magit-branch-copy))
(transient-append-suffix 'magit-branch "r"
'("s" "Backup current branch" km/magit-branch-backup-current))
diff --git a/lisp/km-magit.el b/lisp/km-magit.el
index 8faceeb..e672ec8 100644
--- a/lisp/km-magit.el
+++ b/lisp/km-magit.el
@@ -158,6 +158,16 @@ namespace."
(unless (string= old new)
(magit-run-git "branch" (if force "-M" "-m") old new)))
+(defun km/magit-branch-copy (old new &optional force)
+ (interactive
+ (let ((branch (magit-read-local-branch "Copy branch")))
+ (list branch
+ (magit-read-string-ns (format "Copy branch '%s' to" branch)
+ branch)
+ current-prefix-arg)))
+ (unless (string= old new)
+ (magit-run-git "branch" (if force "-C" "-c") old new)))
+
(defun km/magit-checkout-master ()
"Check out master branch.
\n(git checkout master)"