Skip to content

Commit

Permalink
submodule: prefix die messages with 'fatal'
Browse files Browse the repository at this point in the history
The standard `die()` function that is used in C code prefixes all the
messages passed to it with 'fatal: '. This does not happen with the
`die` used in 'git-submodule.sh'.

Let's prefix each of the shell die messages with 'fatal: ' so that when
they are converted to C code, the error messages stay the same as before
the conversion.

Note that the shell version of `die` exits with error code 1, while the
C version exits with error code 128. In practice, this does not change
any behaviour, as no functionality in 'submodule add' and 'submodule
update' relies on the value of the exit code.

Signed-off-by: Atharva Raykar <raykar.ath@gmail.com>
Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Shourya Shukla <periperidip@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
tfidfwastaken authored and gitster committed Jul 12, 2021
1 parent 84069fc commit 0008d12
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 26 deletions.
38 changes: 19 additions & 19 deletions git-submodule.sh
Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand All @@ -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

Expand All @@ -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"
Expand All @@ -238,7 +238,7 @@ 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
Expand Down Expand Up @@ -281,7 +281,7 @@ or you are unsure what this means choose another name with the '--name' option."
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" &&
Expand All @@ -290,7 +290,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.
Expand Down Expand Up @@ -565,7 +565,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"
Expand All @@ -575,12 +575,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"
Expand All @@ -604,36 +604,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")
Expand All @@ -660,7 +660,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"
Expand Down
4 changes: 2 additions & 2 deletions t/t7400-submodule-basic.sh
Expand Up @@ -51,7 +51,7 @@ test_expect_success 'submodule update aborts on missing gitmodules url' '

test_expect_success 'add aborts on repository with no commits' '
cat >expect <<-\EOF &&
'"'repo-no-commits'"' does not have a commit checked out
fatal: '"'repo-no-commits'"' does not have a commit checked out
EOF
git init repo-no-commits &&
test_must_fail git submodule add ../a ./repo-no-commits 2>actual &&
Expand Down Expand Up @@ -199,7 +199,7 @@ test_expect_success 'submodule add to .gitignored path with --force' '
test_expect_success 'submodule add to path with tracked content fails' '
(
cd addtest &&
echo "'\''dir-tracked'\'' already exists in the index" >expect &&
echo "fatal: '\''dir-tracked'\'' already exists in the index" >expect &&
mkdir dir-tracked &&
test_commit foo dir-tracked/bar &&
test_must_fail git submodule add "$submodurl" dir-tracked >actual 2>&1 &&
Expand Down
10 changes: 5 additions & 5 deletions t/t7406-submodule-update.sh
Expand Up @@ -448,7 +448,7 @@ test_expect_success 'fsck detects command in .gitmodules' '
'

cat << EOF >expect
Execution of 'false $submodulesha1' failed in submodule path 'submodule'
fatal: Execution of 'false $submodulesha1' failed in submodule path 'submodule'
EOF

test_expect_success 'submodule update - command in .git/config catches failure' '
Expand All @@ -465,7 +465,7 @@ test_expect_success 'submodule update - command in .git/config catches failure'
'

cat << EOF >expect
Execution of 'false $submodulesha1' failed in submodule path '../submodule'
fatal: Execution of 'false $submodulesha1' failed in submodule path '../submodule'
EOF

test_expect_success 'submodule update - command in .git/config catches failure -- subdirectory' '
Expand All @@ -484,7 +484,7 @@ test_expect_success 'submodule update - command in .git/config catches failure -

test_expect_success 'submodule update - command run for initial population of submodule' '
cat >expect <<-EOF &&
Execution of '\''false $submodulesha1'\'' failed in submodule path '\''submodule'\''
fatal: Execution of '\''false $submodulesha1'\'' failed in submodule path '\''submodule'\''
EOF
rm -rf super/submodule &&
test_must_fail git -C super submodule update 2>actual &&
Expand All @@ -493,8 +493,8 @@ test_expect_success 'submodule update - command run for initial population of su
'

cat << EOF >expect
Execution of 'false $submodulesha1' failed in submodule path '../super/submodule'
Failed to recurse into submodule path '../super'
fatal: Execution of 'false $submodulesha1' failed in submodule path '../super/submodule'
fatal: Failed to recurse into submodule path '../super'
EOF

test_expect_success 'recursive submodule update - command in .git/config catches failure -- subdirectory' '
Expand Down

0 comments on commit 0008d12

Please sign in to comment.