summaryrefslogtreecommitdiff
path: root/git-submodule.sh
diff options
context:
space:
mode:
authorJohan Herland <johan@herland.net>2009-06-03 00:59:12 +0200
committerJunio C Hamano <gitster@pobox.com>2009-06-03 00:09:16 -0700
commit42b491786260eb17d97ea9fb1c4b70075bca9523 (patch)
tree3c330360a9fdc6abf984c5497ae3c9668009cf10 /git-submodule.sh
parent329484256e0fe42676e93669122e7a5a007ef4ed (diff)
downloadgit-42b491786260eb17d97ea9fb1c4b70075bca9523.tar.gz
git-submodule: add support for --merge.
'git submodule update --merge' merges the commit referenced by the superproject into your local branch, instead of checking it out on a detached HEAD. As evidenced by the addition of "git submodule update --rebase", it is useful to provide alternatives to the default 'checkout' behaviour of "git submodule update". One such alternative is, when updating a submodule to a new commit, to merge that commit into the current local branch in that submodule. This is useful in workflows where you want to update your submodule from its upstream, but you cannot use --rebase, because you have downstream people working on top of your submodule branch, and you don't want to disrupt their work. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-submodule.sh')
-rwxr-xr-xgit-submodule.sh11
1 files changed, 10 insertions, 1 deletions
diff --git a/git-submodule.sh b/git-submodule.sh
index f384c6b2b4..3aff37970a 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -5,7 +5,7 @@
# Copyright (c) 2007 Lars Hjemli
USAGE="[--quiet] [--cached] \
-[add [-b branch] <repo> <path>]|[status|init|update [-i|--init] [-N|--no-fetch]|summary [-n|--summary-limit <n>] [<commit>]] \
+[add [-b branch] <repo> <path>]|[status|init|update [-i|--init] [-N|--no-fetch] [--rebase|--merge]|summary [-n|--summary-limit <n>] [<commit>]] \
[--] [<path>...]|[foreach <command>]|[sync [--] [<path>...]]"
OPTIONS_SPEC=
. git-sh-setup
@@ -331,6 +331,10 @@ cmd_update()
shift
update="rebase"
;;
+ -m|--merge)
+ shift
+ update="merge"
+ ;;
--)
shift
break
@@ -396,6 +400,11 @@ cmd_update()
action="rebase"
msg="rebased onto"
;;
+ merge)
+ command="git merge"
+ action="merge"
+ msg="merged in"
+ ;;
*)
command="git checkout $force -q"
action="checkout"