summaryrefslogtreecommitdiff
path: root/git-submodule.sh
diff options
context:
space:
mode:
authorJohan Herland <johan@herland.net>2009-06-02 22:59:12 (GMT)
committerJunio C Hamano <gitster@pobox.com>2009-06-03 07:09:16 (GMT)
commit42b491786260eb17d97ea9fb1c4b70075bca9523 (patch)
tree3c330360a9fdc6abf984c5497ae3c9668009cf10 /git-submodule.sh
parent329484256e0fe42676e93669122e7a5a007ef4ed (diff)
downloadgit-42b491786260eb17d97ea9fb1c4b70075bca9523.zip
git-42b491786260eb17d97ea9fb1c4b70075bca9523.tar.gz
git-42b491786260eb17d97ea9fb1c4b70075bca9523.tar.bz2
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 f384c6b..3aff379 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"