[PATCH 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.
A new submenu is also available for merging with local and remote
branch.
---
The problem here, which is similar to the one that exist now when one
merge from outside Emacs, is that in case of conflict, Emacs doesn't
look to the index, and so, when one commit the resolved conflict,
one might forget to select all file that should be selected for the
commit to be what is needed.

This problem could be even worse with rebasing, as rebasing is a more
destructive action than merging.


 contrib/emacs/git.el |   22 +++++++++++++++++++++-
 1 files changed, 21 insertions(+), 1 deletions(-)

diff --git a/contrib/emacs/git.el b/contrib/emacs/git.el
index f180421..60553d3 100644
--- a/contrib/emacs/git.el
+++ b/contrib/emacs/git.el
@@ -1213,6 +1213,25 @@ use a prefix arg if git should merge while checking out"
    (list ["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 merge branch menu"
+  (append
+   (mapcar
+    (lambda (branch)
+      `[,(car branch)
+	 (git-merge ,(car branch)) :visible ,(not (cdr branch))])
+    (git-list-branches :all))
+   (list ["merge with any commitish" git-merge t])))
+
 (defun git-diff-file ()
   "Diff the marked file(s) against HEAD."
   (interactive)
@@ -1555,7 +1574,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