[PATCH v3 03/03] Adding command for merging in git.el

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

 



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
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux