Skip to content

Commit

Permalink
git-submodule.sh: 'checkout' is a valid update mode
Browse files Browse the repository at this point in the history
'checkout' is documented as one of the valid values for the
'submodule.<name>.update' variable, and in a repository with the
variable set to 'checkout', "git submodule update" command does
update using the 'checkout' mode.

However, it has been an accident that the implementation works this
way; any unknown value would trigger the same codepath and update
using the 'checkout' mode.

Explicitly list 'checkout' as one of the known update modes, and
error out when an unknown update mode is used.

Teach the codepath that initializes the configuration variable from
an in-tree .gitmodules that 'checkout' is one of the valid values.
The code since ac1fbbd (submodule: do not copy unknown update mode
from .gitmodules, 2013-12-02) used to treat the value 'checkout' as
unknown and mapped it to 'none', which made little sense.  With this
change, 'checkout' specified in .gitmodules will stay to be 'checkout'.

Signed-off-by: Francesco Pretto <ceztko@gmail.com>
Signed-off-by: Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Francesco Pretto authored and Junio C Hamano committed Jan 7, 2014
1 parent b9cf14d commit efa8fd7
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion git-submodule.sh
Original file line number Diff line number Diff line change
Expand Up @@ -617,7 +617,7 @@ cmd_init()
test -z "$(git config submodule."$name".update)"
then
case "$upd" in
rebase | merge | none)
checkout | rebase | merge | none)
;; # known modes of updating
*)
echo >&2 "warning: unknown update mode '$upd' suggested for submodule '$name'"
Expand Down Expand Up @@ -803,6 +803,17 @@ cmd_update()
update_module=$update
else
update_module=$(git config submodule."$name".update)
case "$update_module" in
'')
;; # Unset update mode
checkout | rebase | merge | none)
;; # Known update modes
!*)
;; # Custom update command
*)
die "$(eval_gettext "Invalid update mode '$update_module' for submodule '$name'")"
;;
esac
fi

displaypath=$(relative_path "$prefix$sm_path")
Expand Down

0 comments on commit efa8fd7

Please sign in to comment.