Skip to content

Commit

Permalink
submodule: no [--merge|--rebase] when newly cloned
Browse files Browse the repository at this point in the history
"git submodule update" can be run with either the "--merge" or "--rebase"
option, or submodule.<name>.update configuration variable can be set to
"merge" or "rebase, to cause local work to get integrated when updating
the submodule.

When a submodule is newly cloned, however, it does not have a check out
when a rebase or merge is attempted, leading to a failure.  For newly
cloned submodules, simply check out the appropriate revision.  There is no
local work to integrate with for them.

Signed-off-by: Spencer E. Olson <olsonse@umich.edu>
Acked-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Spencer E. Olson authored and Junio C Hamano committed Feb 17, 2011
1 parent 7ed863a commit 1b4735d
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions git-submodule.sh
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ cmd_update()
cmd_init "--" "$@" || return
fi

cloned_modules=
module_list "$@" |
while read mode sha1 stage path
do
Expand All @@ -442,6 +443,7 @@ cmd_update()
if ! test -d "$path"/.git -o -f "$path"/.git
then
module_clone "$path" "$url" "$reference"|| exit
cloned_modules="$cloned_modules;$name"
subsha1=
else
subsha1=$(clear_local_git_env; cd "$path" &&
Expand Down Expand Up @@ -469,6 +471,13 @@ cmd_update()
die "Unable to fetch in submodule path '$path'"
fi

# Is this something we just cloned?
case ";$cloned_modules;" in
*";$name;"*)
# then there is no local change to integrate
update_module= ;;
esac

case "$update_module" in
rebase)
command="git rebase"
Expand Down

0 comments on commit 1b4735d

Please sign in to comment.