summaryrefslogtreecommitdiff
path: root/git-submodule.sh
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2021-08-04 13:28:52 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2021-08-04 13:28:52 -0700
commit10f57e0eb9070bf00c45def2980a47eacbae8316 (patch)
tree45cf2d38d0d0c9bf3702d830465398698351bf8e /git-submodule.sh
parentGit 2.33-rc0 (diff)
parentsubmodule: drop unused sm_name parameter from show_fetch_remotes() (diff)
downloadtgif-10f57e0eb9070bf00c45def2980a47eacbae8316.tar.xz
Merge branch 'ar/submodule-add'
Rewrite of "git submodule" in C continues. * ar/submodule-add: submodule: drop unused sm_name parameter from show_fetch_remotes() submodule--helper: introduce add-clone subcommand submodule--helper: refactor module_clone() submodule: prefix die messages with 'fatal' t7400: test failure to add submodule in tracked path
Diffstat (limited to 'git-submodule.sh')
-rwxr-xr-xgit-submodule.sh76
1 files changed, 20 insertions, 56 deletions
diff --git a/git-submodule.sh b/git-submodule.sh
index cb06aa02c8..dbd2ec2050 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -147,7 +147,7 @@ cmd_add()
if ! git submodule--helper config --check-writeable >/dev/null 2>&1
then
- die "$(eval_gettext "please make sure that the .gitmodules file is in the working tree")"
+ die "fatal: $(eval_gettext "please make sure that the .gitmodules file is in the working tree")"
fi
if test -n "$reference_path"
@@ -176,7 +176,7 @@ cmd_add()
case "$repo" in
./*|../*)
test -z "$wt_prefix" ||
- die "$(gettext "Relative path can only be used from the toplevel of the working tree")"
+ die "fatal: $(gettext "Relative path can only be used from the toplevel of the working tree")"
# dereference source url relative to parent's url
realrepo=$(git submodule--helper resolve-relative-url "$repo") || exit
@@ -186,7 +186,7 @@ cmd_add()
realrepo=$repo
;;
*)
- die "$(eval_gettext "repo URL: '\$repo' must be absolute or begin with ./|../")"
+ die "fatal: $(eval_gettext "repo URL: '\$repo' must be absolute or begin with ./|../")"
;;
esac
@@ -205,17 +205,17 @@ cmd_add()
if test -z "$force"
then
git ls-files --error-unmatch "$sm_path" > /dev/null 2>&1 &&
- die "$(eval_gettext "'\$sm_path' already exists in the index")"
+ die "fatal: $(eval_gettext "'\$sm_path' already exists in the index")"
else
git ls-files -s "$sm_path" | sane_grep -v "^160000" > /dev/null 2>&1 &&
- die "$(eval_gettext "'\$sm_path' already exists in the index and is not a submodule")"
+ die "fatal: $(eval_gettext "'\$sm_path' already exists in the index and is not a submodule")"
fi
if test -d "$sm_path" &&
test -z $(git -C "$sm_path" rev-parse --show-cdup 2>/dev/null)
then
git -C "$sm_path" rev-parse --verify -q HEAD >/dev/null ||
- die "$(eval_gettext "'\$sm_path' does not have a commit checked out")"
+ die "fatal: $(eval_gettext "'\$sm_path' does not have a commit checked out")"
fi
if test -z "$force"
@@ -238,50 +238,14 @@ cmd_add()
if ! git submodule--helper check-name "$sm_name"
then
- die "$(eval_gettext "'$sm_name' is not a valid submodule name")"
+ die "fatal: $(eval_gettext "'$sm_name' is not a valid submodule name")"
fi
- # perhaps the path exists and is already a git repo, else clone it
- if test -e "$sm_path"
- then
- if test -d "$sm_path"/.git || test -f "$sm_path"/.git
- then
- eval_gettextln "Adding existing repo at '\$sm_path' to the index"
- else
- die "$(eval_gettext "'\$sm_path' already exists and is not a valid git repo")"
- fi
-
- else
- if test -d ".git/modules/$sm_name"
- then
- if test -z "$force"
- then
- eval_gettextln >&2 "A git directory for '\$sm_name' is found locally with remote(s):"
- GIT_DIR=".git/modules/$sm_name" GIT_WORK_TREE=. git remote -v | grep '(fetch)' | sed -e s,^," ", -e s,' (fetch)',, >&2
- die "$(eval_gettextln "\
-If you want to reuse this local git directory instead of cloning again from
- \$realrepo
-use the '--force' option. If the local git directory is not the correct repo
-or you are unsure what this means choose another name with the '--name' option.")"
- else
- eval_gettextln "Reactivating local git directory for submodule '\$sm_name'."
- fi
- fi
- git submodule--helper clone ${GIT_QUIET:+--quiet} ${progress:+"--progress"} --prefix "$wt_prefix" --path "$sm_path" --name "$sm_name" --url "$realrepo" ${reference:+"$reference"} ${dissociate:+"--dissociate"} ${depth:+"$depth"} || exit
- (
- sanitize_submodule_env
- cd "$sm_path" &&
- # ash fails to wordsplit ${branch:+-b "$branch"...}
- case "$branch" in
- '') git checkout -f -q ;;
- ?*) git checkout -f -q -B "$branch" "origin/$branch" ;;
- esac
- ) || die "$(eval_gettext "Unable to checkout submodule '\$sm_path'")"
- fi
+ git submodule--helper add-clone ${GIT_QUIET:+--quiet} ${force:+"--force"} ${progress:+"--progress"} ${branch:+--branch "$branch"} --prefix "$wt_prefix" --path "$sm_path" --name "$sm_name" --url "$realrepo" ${reference:+"$reference"} ${dissociate:+"--dissociate"} ${depth:+"$depth"} || exit
git config submodule."$sm_name".url "$realrepo"
git add --no-warn-embedded-repo $force "$sm_path" ||
- die "$(eval_gettext "Failed to add submodule '\$sm_path'")"
+ die "fatal: $(eval_gettext "Failed to add submodule '\$sm_path'")"
git submodule--helper config submodule."$sm_name".path "$sm_path" &&
git submodule--helper config submodule."$sm_name".url "$repo" &&
@@ -290,7 +254,7 @@ or you are unsure what this means choose another name with the '--name' option."
git submodule--helper config submodule."$sm_name".branch "$branch"
fi &&
git add --force .gitmodules ||
- die "$(eval_gettext "Failed to register submodule '\$sm_path'")"
+ die "fatal: $(eval_gettext "Failed to register submodule '\$sm_path'")"
# NEEDSWORK: In a multi-working-tree world, this needs to be
# set in the per-worktree config.
@@ -565,7 +529,7 @@ cmd_update()
else
subsha1=$(sanitize_submodule_env; cd "$sm_path" &&
git rev-parse --verify HEAD) ||
- die "$(eval_gettext "Unable to find current revision in submodule path '\$displaypath'")"
+ die "fatal: $(eval_gettext "Unable to find current revision in submodule path '\$displaypath'")"
fi
if test -n "$remote"
@@ -575,12 +539,12 @@ cmd_update()
then
# Fetch remote before determining tracking $sha1
fetch_in_submodule "$sm_path" $depth ||
- die "$(eval_gettext "Unable to fetch in submodule path '\$sm_path'")"
+ die "fatal: $(eval_gettext "Unable to fetch in submodule path '\$sm_path'")"
fi
remote_name=$(sanitize_submodule_env; cd "$sm_path" && git submodule--helper print-default-remote)
sha1=$(sanitize_submodule_env; cd "$sm_path" &&
git rev-parse --verify "${remote_name}/${branch}") ||
- die "$(eval_gettext "Unable to find current \${remote_name}/\${branch} revision in submodule path '\$sm_path'")"
+ die "fatal: $(eval_gettext "Unable to find current \${remote_name}/\${branch} revision in submodule path '\$sm_path'")"
fi
if test "$subsha1" != "$sha1" || test -n "$force"
@@ -604,36 +568,36 @@ cmd_update()
# not be reachable from any of the refs
is_tip_reachable "$sm_path" "$sha1" ||
fetch_in_submodule "$sm_path" "$depth" "$sha1" ||
- die "$(eval_gettext "Fetched in submodule path '\$displaypath', but it did not contain \$sha1. Direct fetching of that commit failed.")"
+ die "fatal: $(eval_gettext "Fetched in submodule path '\$displaypath', but it did not contain \$sha1. Direct fetching of that commit failed.")"
fi
must_die_on_failure=
case "$update_module" in
checkout)
command="git checkout $subforce -q"
- die_msg="$(eval_gettext "Unable to checkout '\$sha1' in submodule path '\$displaypath'")"
+ die_msg="fatal: $(eval_gettext "Unable to checkout '\$sha1' in submodule path '\$displaypath'")"
say_msg="$(eval_gettext "Submodule path '\$displaypath': checked out '\$sha1'")"
;;
rebase)
command="git rebase ${GIT_QUIET:+--quiet}"
- die_msg="$(eval_gettext "Unable to rebase '\$sha1' in submodule path '\$displaypath'")"
+ die_msg="fatal: $(eval_gettext "Unable to rebase '\$sha1' in submodule path '\$displaypath'")"
say_msg="$(eval_gettext "Submodule path '\$displaypath': rebased into '\$sha1'")"
must_die_on_failure=yes
;;
merge)
command="git merge ${GIT_QUIET:+--quiet}"
- die_msg="$(eval_gettext "Unable to merge '\$sha1' in submodule path '\$displaypath'")"
+ die_msg="fatal: $(eval_gettext "Unable to merge '\$sha1' in submodule path '\$displaypath'")"
say_msg="$(eval_gettext "Submodule path '\$displaypath': merged in '\$sha1'")"
must_die_on_failure=yes
;;
!*)
command="${update_module#!}"
- die_msg="$(eval_gettext "Execution of '\$command \$sha1' failed in submodule path '\$displaypath'")"
+ die_msg="fatal: $(eval_gettext "Execution of '\$command \$sha1' failed in submodule path '\$displaypath'")"
say_msg="$(eval_gettext "Submodule path '\$displaypath': '\$command \$sha1'")"
must_die_on_failure=yes
;;
*)
- die "$(eval_gettext "Invalid update mode '$update_module' for submodule path '$path'")"
+ die "fatal: $(eval_gettext "Invalid update mode '$update_module' for submodule path '$path'")"
esac
if (sanitize_submodule_env; cd "$sm_path" && $command "$sha1")
@@ -660,7 +624,7 @@ cmd_update()
res=$?
if test $res -gt 0
then
- die_msg="$(eval_gettext "Failed to recurse into submodule path '\$displaypath'")"
+ die_msg="fatal: $(eval_gettext "Failed to recurse into submodule path '\$displaypath'")"
if test $res -ne 2
then
err="${err};$die_msg"