[PATCH v3 03/03] Adding command for merging in git.el
M-x git-merge will ask for an commitish, and merge with it.
key binding "C-cC-m"
A new submenu is also available for merging with local and remote
branch.
---
contrib/emacs/git.el | 24 +++++++++++++++++++++++-
1 files changed, 23 insertions(+), 1 deletions(-)diff --git a/contrib/emacs/git.el b/contrib/emacs/git.el
index d35f837..5c3fc01 100644
--- a/contrib/emacs/git.el
+++ b/contrib/emacs/git.el
@@ -1254,6 +1254,26 @@ use a prefix arg if git should merge while checking out"
:after `(["checkout any commitish" git-checkout t]
["change to new" git-branch t]))))
+(defun git-merge (commitish)
+ "merge with commitish
+
+Note that in case of conflict, after resolving everty conflict,
+one have to select every concerned file before commiting"
+ (interactive (list (git-read-commitish "Merge with: ")))
+ (git-call-process-display-error "merge" commitish)
+ (git-refresh-status))
+
+(defun git-merge-menu-filter (rest)
+ "define the change branch menu"
+ (git-refs-build-menu
+ :branch (lambda (short-name ref-name)
+ `[,short-name (git-merge ,short-name)])
+ :remote (lambda (short-name ref-name)
+ `[,short-name (git-merge ,short-name)])
+ :tag (lambda (short-name ref-name)
+ `[,short-name (git-merge ,short-name)])
+ :after `(["merge with any commitish" git-merge t])))
+
(defun git-diff-file ()
"Diff the marked file(s) against HEAD."
(interactive)
@@ -1578,6 +1598,7 @@ amended version of it."
(define-key commit-map "\C-a" 'git-amend-commit)
(define-key commit-map "\C-o" 'git-checkout)
(define-key commit-map "\C-b" 'git-branch)
+ (define-key commit-map "\C-m" 'git-merge)
; the diff submap
(define-key diff-map "b" 'git-diff-file-base)
(define-key diff-map "c" 'git-diff-file-combined)
@@ -1599,7 +1620,8 @@ amended version of it."
["Refresh" git-refresh-status t]
["Commit" git-commit-file t]
("Checkout Branch" :filter git-checkout-menu-filter)
- ("Merge"
+ ("Merge" :filter git-merge-menu-filter)
+ ("Resolve Merge"
["Next Unmerged File" git-next-unmerged-file t]
["Prev Unmerged File" git-prev-unmerged-file t]
["Mark as Resolved" git-resolve-file t]
--
1.5.4.1.123.gcb68-dirty