summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xgit-am.sh77
-rwxr-xr-xgit-bisect.sh113
-rwxr-xr-xgit-pull.sh34
-rwxr-xr-xgit-stash.sh81
-rwxr-xr-xgit-submodule.sh98
-rwxr-xr-xt/t4150-am.sh2
-rwxr-xr-xt/t4151-am-abort.sh5
-rwxr-xr-xt/t7400-submodule-basic.sh4
-rwxr-xr-xt/t7401-submodule-summary.sh12
-rwxr-xr-xt/t7406-submodule-update.sh2
-rwxr-xr-xt/t7407-submodule-foreach.sh4
11 files changed, 255 insertions, 177 deletions
diff --git a/git-am.sh b/git-am.sh
index 6cdd591..463c741 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -37,13 +37,14 @@ rerere-autoupdate update the index with reused conflict resolution if possible
rebasing* (internal use for git-rebase)"
. git-sh-setup
+. git-sh-i18n
prefix=$(git rev-parse --show-prefix)
set_reflog_action am
require_work_tree
cd_to_toplevel
git var GIT_COMMITTER_IDENT >/dev/null ||
- die "You need to set your committer info first"
+ die "$(gettext "You need to set your committer info first")"
if git rev-parse --verify -q HEAD >/dev/null
then
@@ -88,8 +89,11 @@ safe_to_abort () {
then
return 0
fi
- echo >&2 "You seem to have moved HEAD since the last 'am' failure."
- echo >&2 "Not rewinding to ORIG_HEAD"
+ (
+ gettext "You seem to have moved HEAD since the last 'am' failure.
+Not rewinding to ORIG_HEAD" &&
+ echo
+ ) >&2
return 1
}
@@ -98,9 +102,9 @@ stop_here_user_resolve () {
printf '%s\n' "$resolvemsg"
stop_here $1
fi
- echo "When you have resolved this problem run \"$cmdline --resolved\"."
- echo "If you would prefer to skip this patch, instead run \"$cmdline --skip\"."
- echo "To restore the original branch and stop patching run \"$cmdline --abort\"."
+ eval_gettext "When you have resolved this problem run \"\$cmdline --resolved\".
+If you would prefer to skip this patch, instead run \"\$cmdline --skip\".
+To restore the original branch and stop patching run \"\$cmdline --abort\"."; echo
stop_here $1
}
@@ -114,7 +118,7 @@ go_next () {
cannot_fallback () {
echo "$1"
- echo "Cannot fall back to three-way merge."
+ gettext "Cannot fall back to three-way merge."; echo
exit 1
}
@@ -129,7 +133,7 @@ fall_back_3way () {
"$dotest/patch" &&
GIT_INDEX_FILE="$dotest/patch-merge-tmp-index" \
git write-tree >"$dotest/patch-merge-base+" ||
- cannot_fallback "Repository lacks necessary blobs to fall back on 3-way merge."
+ cannot_fallback "$(gettext "Repository lacks necessary blobs to fall back on 3-way merge.")"
say Using index info to reconstruct a base tree...
if GIT_INDEX_FILE="$dotest/patch-merge-tmp-index" \
@@ -138,8 +142,8 @@ fall_back_3way () {
mv "$dotest/patch-merge-base+" "$dotest/patch-merge-base"
mv "$dotest/patch-merge-tmp-index" "$dotest/patch-merge-index"
else
- cannot_fallback "Did you hand edit your patch?
-It does not apply to blobs recorded in its index."
+ cannot_fallback "$(gettext "Did you hand edit your patch?
+It does not apply to blobs recorded in its index.")"
fi
test -f "$dotest/patch-merge-index" &&
@@ -147,7 +151,7 @@ It does not apply to blobs recorded in its index."
orig_tree=$(cat "$dotest/patch-merge-base") &&
rm -fr "$dotest"/patch-merge-* || exit 1
- say Falling back to patching base and 3-way merge...
+ say "$(gettext "Falling back to patching base and 3-way merge...")"
# This is not so wrong. Depending on which base we picked,
# orig_tree may be wildly different from ours, but his_tree
@@ -254,7 +258,7 @@ split_patches () {
stgit-series)
if test $# -ne 1
then
- clean_abort "Only one StGIT patch series can be applied at once"
+ clean_abort "$(gettext "Only one StGIT patch series can be applied at once")"
fi
series_dir=`dirname "$1"`
series_file="$1"
@@ -306,9 +310,9 @@ split_patches () {
;;
*)
if test -n "$parse_patch" ; then
- clean_abort "Patch format $patch_format is not supported."
+ clean_abort "$(eval_gettext "Patch format \$patch_format is not supported.")"
else
- clean_abort "Patch format detection failed."
+ clean_abort "$(gettext "Patch format detection failed.")"
fi
;;
esac
@@ -358,7 +362,7 @@ do
--rebasing)
rebasing=t threeway=t keep=t scissors=f no_inbody_headers=t ;;
-d|--dotest)
- die "-d option is no longer supported. Do not use."
+ die "$(gettext "-d option is no longer supported. Do not use.")"
;;
--resolvemsg)
shift; resolvemsg=$1 ;;
@@ -421,12 +425,12 @@ then
false
;;
esac ||
- die "previous rebase directory $dotest still exists but mbox given."
+ die "$(eval_gettext "previous rebase directory \$dotest still exists but mbox given.")"
resume=yes
case "$skip,$abort" in
t,t)
- die "Please make up your mind. --skip or --abort?"
+ die "$(gettext "Please make up your mind. --skip or --abort?")"
;;
t,)
git rerere clear
@@ -453,7 +457,7 @@ then
else
# Make sure we are not given --skip, --resolved, nor --abort
test "$skip$resolved$abort" = "" ||
- die "Resolve operation not in progress, we are not resuming."
+ die "$(gettext "Resolve operation not in progress, we are not resuming.")"
# Start afresh.
mkdir -p "$dotest" || exit
@@ -518,7 +522,7 @@ case "$resolved" in
if test "$files"
then
test -n "$HAS_HEAD" && : >"$dotest/dirtyindex"
- die "Dirty index: cannot apply patches (dirty: $files)"
+ die "$(eval_gettext "Dirty index: cannot apply patches (dirty: \$files)")"
fi
esac
@@ -607,9 +611,9 @@ do
go_next && continue
test -s "$dotest/patch" || {
- echo "Patch is empty. Was it split wrong?"
- echo "If you would prefer to skip this patch, instead run \"$cmdline --skip\"."
- echo "To restore the original branch and stop patching run \"$cmdline --abort\"."
+ eval_gettext "Patch is empty. Was it split wrong?
+If you would prefer to skip this patch, instead run \"\$cmdline --skip\".
+To restore the original branch and stop patching run \"\$cmdline --abort\"."; echo
stop_here $this
}
rm -f "$dotest/original-commit" "$dotest/author-script"
@@ -644,7 +648,7 @@ do
if test -z "$GIT_AUTHOR_EMAIL"
then
- echo "Patch does not have a valid e-mail address."
+ gettext "Patch does not have a valid e-mail address."; echo
stop_here $this
fi
@@ -691,15 +695,18 @@ do
if test "$interactive" = t
then
test -t 0 ||
- die "cannot be interactive without stdin connected to a terminal."
+ die "$(gettext "cannot be interactive without stdin connected to a terminal.")"
action=again
while test "$action" = again
do
- echo "Commit Body is:"
+ gettext "Commit Body is:"; echo
echo "--------------------------"
cat "$dotest/final-commit"
echo "--------------------------"
- printf "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all "
+ # TRANSLATORS: Make sure to include [y], [n], [e], [v] and [a]
+ # in your translation. The program will only accept English
+ # input at this point.
+ gettext "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all "
read reply
case "$reply" in
[yY]*) action=yes ;;
@@ -735,7 +742,7 @@ do
stop_here $this
fi
- say "Applying: $FIRSTLINE"
+ say "$(eval_gettext "Applying: \$FIRSTLINE")"
case "$resolved" in
'')
@@ -756,16 +763,16 @@ do
# working tree.
resolved=
git diff-index --quiet --cached HEAD -- && {
- echo "No changes - did you forget to use 'git add'?"
- echo "If there is nothing left to stage, chances are that something else"
- echo "already introduced the same changes; you might want to skip this patch."
+ gettext "No changes - did you forget to use 'git add'?
+If there is nothing left to stage, chances are that something else
+already introduced the same changes; you might want to skip this patch."; echo
stop_here_user_resolve $this
}
unmerged=$(git ls-files -u)
if test -n "$unmerged"
then
- echo "You still have unmerged paths in your index"
- echo "did you forget to use 'git add'?"
+ gettext "You still have unmerged paths in your index
+did you forget to use 'git add'?"; echo
stop_here_user_resolve $this
fi
apply_status=0
@@ -780,7 +787,7 @@ do
# Applying the patch to an earlier tree and merging the
# result may have produced the same tree as ours.
git diff-index --quiet --cached HEAD -- && {
- say No changes -- Patch already applied.
+ say "$(gettext "No changes -- Patch already applied.")"
go_next
continue
}
@@ -790,7 +797,7 @@ do
fi
if test $apply_status != 0
then
- printf 'Patch failed at %s %s\n' "$msgnum" "$FIRSTLINE"
+ eval_gettext 'Patch failed at $msgnum $FIRSTLINE'; echo
stop_here_user_resolve $this
fi
@@ -806,7 +813,7 @@ do
GIT_AUTHOR_DATE=
fi
parent=$(git rev-parse --verify -q HEAD) ||
- say >&2 "applying to an empty history"
+ say >&2 "$(gettext "applying to an empty history")"
if test -n "$committer_date_is_author_date"
then
diff --git a/git-bisect.sh b/git-bisect.sh
index 415a8d0..b2186a8 100755
--- a/git-bisect.sh
+++ b/git-bisect.sh
@@ -28,6 +28,7 @@ Please use "git help bisect" to get the full man page.'
OPTIONS_SPEC=
. git-sh-setup
+. git-sh-i18n
require_work_tree
_x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
@@ -35,10 +36,16 @@ _x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"
bisect_autostart() {
test -s "$GIT_DIR/BISECT_START" || {
- echo >&2 'You need to start by "git bisect start"'
+ (
+ gettext "You need to start by \"git bisect start\"" &&
+ echo
+ ) >&2
if test -t 0
then
- echo >&2 -n 'Do you want me to do it for you [Y/n]? '
+ # TRANSLATORS: Make sure to include [Y] and [n] in your
+ # translation. The program will only accept English input
+ # at this point.
+ gettext "Do you want me to do it for you [Y/n]? " >&2
read yesno
case "$yesno" in
[Nn]*)
@@ -57,7 +64,7 @@ bisect_start() {
#
head=$(GIT_DIR="$GIT_DIR" git symbolic-ref -q HEAD) ||
head=$(GIT_DIR="$GIT_DIR" git rev-parse --verify HEAD) ||
- die "Bad HEAD - I need a HEAD"
+ die "$(gettext "Bad HEAD - I need a HEAD")"
#
# Check if we are bisecting.
@@ -76,11 +83,11 @@ bisect_start() {
# cogito usage, and cogito users should understand
# it relates to cg-seek.
[ -s "$GIT_DIR/head-name" ] &&
- die "won't bisect on seeked tree"
+ die "$(gettext "won't bisect on seeked tree")"
start_head="${head#refs/heads/}"
;;
*)
- die "Bad HEAD - strange symbolic ref"
+ die "$(gettext "Bad HEAD - strange symbolic ref")"
;;
esac
fi
@@ -110,7 +117,7 @@ bisect_start() {
*)
rev=$(git rev-parse -q --verify "$arg^{commit}") || {
test $has_double_dash -eq 1 &&
- die "'$arg' does not appear to be a valid revision"
+ die "$(eval_gettext "'\$arg' does not appear to be a valid revision")"
break
}
case $bad_seen in
@@ -155,7 +162,7 @@ bisect_write() {
case "$state" in
bad) tag="$state" ;;
good|skip) tag="$state"-"$rev" ;;
- *) die "Bad bisect_write argument: $state" ;;
+ *) die "$(eval_gettext "Bad bisect_write argument: \$state")" ;;
esac
git update-ref "refs/bisect/$tag" "$rev" || exit
echo "# $state: $(git show-branch $rev)" >>"$GIT_DIR/BISECT_LOG"
@@ -183,7 +190,7 @@ bisect_skip() {
do
case "$arg" in
*..*)
- revs=$(git rev-list "$arg") || die "Bad rev input: $arg" ;;
+ revs=$(git rev-list "$arg") || die "$(eval_gettext "Bad rev input: \$arg")" ;;
*)
revs=$(git rev-parse --sq-quote "$arg") ;;
esac
@@ -197,10 +204,10 @@ bisect_state() {
state=$1
case "$#,$state" in
0,*)
- die "Please call 'bisect_state' with at least one argument." ;;
+ die "$(gettext "Please call 'bisect_state' with at least one argument.")" ;;
1,bad|1,good|1,skip)
rev=$(git rev-parse --verify HEAD) ||
- die "Bad rev input: HEAD"
+ die "$(gettext "Bad rev input: HEAD")"
bisect_write "$state" "$rev"
check_expected_revs "$rev" ;;
2,bad|*,good|*,skip)
@@ -209,13 +216,13 @@ bisect_state() {
for rev in "$@"
do
sha=$(git rev-parse --verify "$rev^{commit}") ||
- die "Bad rev input: $rev"
+ die "$(eval_gettext "Bad rev input: \$rev")"
eval="$eval bisect_write '$state' '$sha'; "
done
eval "$eval"
check_expected_revs "$@" ;;
*,bad)
- die "'git bisect bad' can take only one argument." ;;
+ die "$(gettext "'git bisect bad' can take only one argument.")" ;;
*)
usage ;;
esac
@@ -238,25 +245,38 @@ bisect_next_check() {
t,,good)
# have bad but not good. we could bisect although
# this is less optimum.
- echo >&2 'Warning: bisecting only with a bad commit.'
+ (
+ gettext "Warning: bisecting only with a bad commit." &&
+ echo
+ ) >&2
if test -t 0
then
- printf >&2 'Are you sure [Y/n]? '
+ # TRANSLATORS: Make sure to include [Y] and [n] in your
+ # translation. The program will only accept English input
+ # at this point.
+ gettext "Are you sure [Y/n]? " >&2
read yesno
case "$yesno" in [Nn]*) exit 1 ;; esac
fi
: bisect without good...
;;
*)
- THEN=''
- test -s "$GIT_DIR/BISECT_START" || {
- echo >&2 'You need to start by "git bisect start".'
- THEN='then '
- }
- echo >&2 'You '$THEN'need to give me at least one good' \
- 'and one bad revisions.'
- echo >&2 '(You can use "git bisect bad" and' \
- '"git bisect good" for that.)'
+
+ if test -s "$GIT_DIR/BISECT_START"
+ then
+ (
+ gettext "You need to give me at least one good and one bad revisions.
+(You can use \"git bisect bad\" and \"git bisect good\" for that.)" &&
+ echo
+ ) >&2
+ else
+ (
+ gettext "You need to start by \"git bisect start\".
+You then need to give me at least one good and one bad revisions.
+(You can use \"git bisect bad\" and \"git bisect good\" for that.)" &&
+ echo
+ ) >&2
+ fi
exit 1 ;;
esac
}
@@ -307,13 +327,15 @@ bisect_visualize() {
bisect_reset() {
test -s "$GIT_DIR/BISECT_START" || {
- echo "We are not bisecting."
+ gettext "We are not bisecting."; echo
return
}
case "$#" in
0) branch=$(cat "$GIT_DIR/BISECT_START") ;;
- 1) git rev-parse --quiet --verify "$1^{commit}" > /dev/null ||
- die "'$1' is not a valid commit"
+ 1) git rev-parse --quiet --verify "$1^{commit}" > /dev/null || {
+ invalid="$1"
+ die "$(eval_gettext "'\$invalid' is not a valid commit")"
+ }
branch="$1" ;;
*)
usage ;;
@@ -321,8 +343,8 @@ bisect_reset() {
if git checkout "$branch" -- ; then
bisect_clean_state
else
- die "Could not check out original HEAD '$branch'." \
- "Try 'git bisect reset <commit>'."
+ die "$(eval_gettext "Could not check out original HEAD '\$branch'.
+Try 'git bisect reset <commit>'.")"
fi
}
@@ -345,8 +367,9 @@ bisect_clean_state() {
}
bisect_replay () {
- test "$#" -eq 1 || die "No logfile given"
- test -r "$1" || die "cannot read $1 for replaying"
+ file="$1"
+ test "$#" -eq 1 || die "$(gettext "No logfile given")"
+ test -r "$file" || die "$(eval_gettext "cannot read \$file for replaying")"
bisect_reset
while read git bisect command rev
do
@@ -362,9 +385,9 @@ bisect_replay () {
good|bad|skip)
bisect_write "$command" "$rev" ;;
*)
- die "?? what are you talking about?" ;;
+ die "$(gettext "?? what are you talking about?")" ;;
esac
- done <"$1"
+ done <"$file"
bisect_auto_next
}
@@ -373,14 +396,18 @@ bisect_run () {
while true
do
- echo "running $@"
+ command="$@"
+ eval_gettext "running \$command"; echo
"$@"
res=$?
# Check for really bad run error.
if [ $res -lt 0 -o $res -ge 128 ]; then
- echo >&2 "bisect run failed:"
- echo >&2 "exit code $res from '$@' is < 0 or >= 128"
+ (
+ eval_gettext "bisect run failed:
+exit code \$res from '\$command' is < 0 or >= 128" &&
+ echo
+ ) >&2
exit $res
fi
@@ -402,18 +429,24 @@ bisect_run () {
if sane_grep "first bad commit could be any of" "$GIT_DIR/BISECT_RUN" \
> /dev/null; then
- echo >&2 "bisect run cannot continue any more"
+ (
+ gettext "bisect run cannot continue any more" &&
+ echo
+ ) >&2
exit $res
fi
if [ $res -ne 0 ]; then
- echo >&2 "bisect run failed:"
- echo >&2 "'bisect_state $state' exited with error code $res"
+ (
+ eval_gettext "bisect run failed:
+'bisect_state \$state' exited with error code \$res" &&
+ echo
+ ) >&2
exit $res
fi
if sane_grep "is the first bad commit" "$GIT_DIR/BISECT_RUN" > /dev/null; then
- echo "bisect run success"
+ gettext "bisect run success"; echo
exit 0;
fi
@@ -421,7 +454,7 @@ bisect_run () {
}
bisect_log () {
- test -s "$GIT_DIR/BISECT_LOG" || die "We are not bisecting."
+ test -s "$GIT_DIR/BISECT_LOG" || die "$(gettext "We are not bisecting.")"
cat "$GIT_DIR/BISECT_LOG"
}
diff --git a/git-pull.sh b/git-pull.sh
index fb9e2df..a10b129 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -9,6 +9,7 @@ LONG_USAGE='Fetch one or more remote refs and merge it/them into the current HEA
SUBDIRECTORY_OK=Yes
OPTIONS_SPEC=
. git-sh-setup
+. git-sh-i18n
set_reflog_action "pull $*"
require_work_tree
cd_to_toplevel
@@ -17,20 +18,20 @@ cd_to_toplevel
die_conflict () {
git diff-index --cached --name-status -r --ignore-submodules HEAD --
if [ $(git config --bool --get advice.resolveConflict || echo true) = "true" ]; then
- die "Pull is not possible because you have unmerged files.
+ die "$(gettext "Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>'
-as appropriate to mark resolution, or use 'git commit -a'."
+as appropriate to mark resolution, or use 'git commit -a'.")"
else
- die "Pull is not possible because you have unmerged files."
+ die "$(gettext "Pull is not possible because you have unmerged files.")"
fi
}
die_merge () {
if [ $(git config --bool --get advice.resolveConflict || echo true) = "true" ]; then
- die "You have not concluded your merge (MERGE_HEAD exists).
-Please, commit your changes before you can merge."
+ die "$(gettext "You have not concluded your merge (MERGE_HEAD exists).
+Please, commit your changes before you can merge.")"
else
- die "You have not concluded your merge (MERGE_HEAD exists)."
+ die "$(gettext "You have not concluded your merge (MERGE_HEAD exists).")"
fi
}
@@ -185,7 +186,7 @@ test true = "$rebase" && {
# On an unborn branch
if test -f "$GIT_DIR/index"
then
- die "updating an unborn branch with changes added to the index"
+ die "$(gettext "updating an unborn branch with changes added to the index")"
fi
else
require_clean_work_tree "pull with rebase" "Please commit or stash them."
@@ -216,17 +217,20 @@ then
# $orig_head commit, but we are merging into $curr_head.
# First update the working tree to match $curr_head.
- echo >&2 "Warning: fetch updated the current branch head."
- echo >&2 "Warning: fast-forwarding your working tree from"
- echo >&2 "Warning: commit $orig_head."
+ (
+ eval_gettext "Warning: fetch updated the current branch head.
+Warning: fast-forwarding your working tree from
+Warning: commit \$orig_head." &&
+ echo
+ ) >&2
git update-index -q --refresh
git read-tree -u -m "$orig_head" "$curr_head" ||
- die 'Cannot fast-forward your working tree.
+ die "$(eval_gettext "Cannot fast-forward your working tree.
After making sure that you saved anything precious from
-$ git diff '$orig_head'
+$ git diff \$orig_head
output, run
$ git reset --hard
-to recover.'
+to recover.")"
fi
@@ -241,11 +245,11 @@ case "$merge_head" in
?*' '?*)
if test -z "$orig_head"
then
- die "Cannot merge multiple branches into empty head"
+ die "$(gettext "Cannot merge multiple branches into empty head")"
fi
if test true = "$rebase"
then
- die "Cannot rebase onto multiple branches"
+ die "$(gettext "Cannot rebase onto multiple branches")"
fi
;;
esac
diff --git a/git-stash.sh b/git-stash.sh
index 0a94036..5619da5 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -14,6 +14,7 @@ SUBDIRECTORY_OK=Yes
OPTIONS_SPEC=
START_DIR=`pwd`
. git-sh-setup
+. git-sh-i18n
require_work_tree
cd_to_toplevel
@@ -39,7 +40,7 @@ no_changes () {
clear_stash () {
if test $# != 0
then
- die "git stash clear with parameters is unimplemented"
+ die "$(gettext "git stash clear with parameters is unimplemented")"
fi
if current=$(git rev-parse --verify $ref_stash 2>/dev/null)
then
@@ -61,7 +62,7 @@ create_stash () {
then
head=$(git rev-list --oneline -n 1 HEAD --)
else
- die "You do not have the initial commit yet"
+ die "$(gettext "You do not have the initial commit yet")"
fi
if branch=$(git symbolic-ref -q HEAD)
@@ -76,7 +77,7 @@ create_stash () {
i_tree=$(git write-tree) &&
i_commit=$(printf 'index on %s\n' "$msg" |
git commit-tree $i_tree -p $b_commit) ||
- die "Cannot save the current index state"
+ die "$(gettext "Cannot save the current index state")"
if test -z "$patch_mode"
then
@@ -90,7 +91,7 @@ create_stash () {
git write-tree &&
rm -f "$TMPindex"
) ) ||
- die "Cannot save the current worktree state"
+ die "$(gettext "Cannot save the current worktree state")"
else
@@ -103,14 +104,14 @@ create_stash () {
# state of the working tree
w_tree=$(GIT_INDEX_FILE="$TMP-index" git write-tree) ||
- die "Cannot save the current worktree state"
+ die "$(gettext "Cannot save the current worktree state")"
git diff-tree -p HEAD $w_tree > "$TMP-patch" &&
test -s "$TMP-patch" ||
- die "No changes selected"
+ die "$(gettext "No changes selected")"
rm -f "$TMP-index" ||
- die "Cannot remove temporary index (can't happen)"
+ die "$(gettext "Cannot remove temporary index (can't happen)")"
fi
@@ -123,7 +124,7 @@ create_stash () {
fi
w_commit=$(printf '%s\n' "$stash_msg" |
git commit-tree $w_tree -p $b_commit -p $i_commit) ||
- die "Cannot record working tree state"
+ die "$(gettext "Cannot record working tree state")"
}
save_stash () {
@@ -151,8 +152,19 @@ save_stash () {
break
;;
-*)
- echo "error: unknown option for 'stash save': $1"
- echo " To provide a message, use git stash save -- '$1'"
+ option="$1"
+ # TRANSLATORS: $option is an invalid option, like
+ # `--blah-blah'. The 7 spaces at the beginning of the
+ # second line correspond to "error: ". So you should line
+ # up the second line with however many characters the
+ # translation of "error: " takes in your language. E.g. in
+ # English this is:
+ #
+ # $ git stash save --blah-blah 2>&1 | head -n 2
+ # error: unknown option for 'stash save': --blah-blah
+ # To provide a message, use git stash save -- '--blah-blah'
+ eval_gettext "$("error: unknown option for 'stash save': \$option
+ To provide a message, use git stash save -- '\$option'")"; echo
usage
;;
*)
@@ -167,11 +179,11 @@ save_stash () {
git update-index -q --refresh
if no_changes
then
- say 'No local changes to save'
+ say "$(gettext "No local changes to save")"
exit 0
fi
test -f "$GIT_DIR/logs/$ref_stash" ||
- clear_stash || die "Cannot initialize stash"
+ clear_stash || die "$(gettext "Cannot initialize stash")"
create_stash "$stash_msg"
@@ -179,7 +191,7 @@ save_stash () {
: >>"$GIT_DIR/logs/$ref_stash"
git update-ref -m "$stash_msg" $ref_stash $w_commit ||
- die "Cannot save the current status"
+ die "$(gettext "Cannot save the current status")"
say Saved working directory and index state "$stash_msg"
if test -z "$patch_mode"
@@ -192,7 +204,7 @@ save_stash () {
fi
else
git apply -R < "$TMP-patch" ||
- die "Cannot remove worktree changes"
+ die "$(gettext "Cannot remove worktree changes")"
if test "$keep_index" != "t"
then
@@ -287,18 +299,21 @@ parse_flags_and_rev()
case $# in
0)
- have_stash || die "No stash found."
+ have_stash || die "$(gettext "No stash found.")"
set -- ${ref_stash}@{0}
;;
1)
:
;;
*)
- die "Too many revisions specified: $REV"
+ die "$(eval_gettext "Too many revisions specified: \$REV")"
;;
esac
- REV=$(git rev-parse --quiet --symbolic --verify $1 2>/dev/null) || die "$1 is not valid reference"
+ REV=$(git rev-parse --quiet --symbolic --verify $1 2>/dev/null) || {
+ reference="$1"
+ die "$(eval_gettext "\$reference is not valid reference")"
+ }
i_commit=$(git rev-parse --quiet --verify $REV^2 2>/dev/null) &&
set -- $(git rev-parse $REV $REV^1 $REV: $REV^1: $REV^2: 2>/dev/null) &&
@@ -320,7 +335,10 @@ is_stash_like()
}
assert_stash_like() {
- is_stash_like "$@" || die "'$*' is not a stash-like commit"
+ is_stash_like "$@" || {
+ args="$*"
+ die "$(eval_gettext "'\$args' is not a stash-like commit")"
+ }
}
is_stash_ref() {
@@ -328,18 +346,21 @@ is_stash_ref() {
}
assert_stash_ref() {
- is_stash_ref "$@" || die "'$*' is not a stash reference"
+ is_stash_ref "$@" || {
+ args="$*"
+ die "$(eval_gettext "'\$args' is not a stash reference")"
+ }
}
apply_stash () {
assert_stash_like "$@"
- git update-index -q --refresh || die 'unable to refresh index'
+ git update-index -q --refresh || die "$(gettext "unable to refresh index")"
# current index state
c_tree=$(git write-tree) ||
- die 'Cannot apply a stash in the middle of a merge'
+ die "$(gettext "Cannot apply a stash in the middle of a merge")"
unstashed_index_tree=
if test -n "$INDEX_OPTION" && test "$b_tree" != "$i_tree" &&
@@ -347,9 +368,9 @@ apply_stash () {
then
git diff-tree --binary $s^2^..$s^2 | git apply --cached
test $? -ne 0 &&
- die 'Conflicts in index. Try without --index.'
+ die "$(gettext "Conflicts in index. Try without --index.")"
unstashed_index_tree=$(git write-tree) ||
- die 'Could not save index tree'
+ die "$(gettext "Could not save index tree")"
git reset
fi
@@ -375,7 +396,7 @@ apply_stash () {
git diff-index --cached --name-only --diff-filter=A $c_tree >"$a" &&
git read-tree --reset $c_tree &&
git update-index --add --stdin <"$a" ||
- die "Cannot unstage modified files"
+ die "$(gettext "Cannot unstage modified files")"
rm -f "$a"
fi
squelch=
@@ -389,7 +410,10 @@ apply_stash () {
status=$?
if test -n "$INDEX_OPTION"
then
- echo >&2 'Index was not unstashed.'
+ (
+ gettext "Index was not unstashed." &&
+ echo
+ ) >&2
fi
exit $status
fi
@@ -406,14 +430,15 @@ drop_stash () {
assert_stash_ref "$@"
git reflog delete --updateref --rewrite "${REV}" &&
- say "Dropped ${REV} ($s)" || die "${REV}: Could not drop stash entry"
+ say "$(eval_gettext "Dropped \${REV} (\$s)")" ||
+ die "$(eval_gettext "\${REV}: Could not drop stash entry")"
# clear_stash if we just dropped the last stash entry
git rev-parse --verify "$ref_stash@{0}" > /dev/null 2>&1 || clear_stash
}
apply_to_branch () {
- test -n "$1" || die 'No branch name specified'
+ test -n "$1" || die "$(gettext "No branch name specified")"
branch=$1
shift 1
@@ -484,7 +509,7 @@ branch)
case $# in
0)
save_stash &&
- say '(To restore them type "git stash apply")'
+ say "$(gettext "(To restore them type \"git stash apply\")")"
;;
*)
usage
diff --git a/git-submodule.sh b/git-submodule.sh
index d189a24..c571d32 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -14,6 +14,7 @@ USAGE="[--quiet] add [-b branch] [-f|--force] [--reference <repository>] [--] <r
or: $dashless [--quiet] sync [--] [<path>...]"
OPTIONS_SPEC=
. git-sh-setup
+. git-sh-i18n
. git-parse-remote
require_work_tree
@@ -34,7 +35,7 @@ resolve_relative_url ()
{
remote=$(get_default_remote)
remoteurl=$(git config "remote.$remote.url") ||
- die "remote ($remote) does not have a url defined in .git/config"
+ die "$(eval_gettext "remote (\$remote) does not have a url defined in .git/config")"
url="$1"
remoteurl=${remoteurl%/}
sep=/
@@ -52,7 +53,7 @@ resolve_relative_url ()
sep=:
;;
*)
- die "cannot strip one component off url '$remoteurl'"
+ die "$(eval_gettext "cannot strip one component off url '\$remoteurl'")"
;;
esac
;;
@@ -104,7 +105,7 @@ module_name()
name=$( git config -f .gitmodules --get-regexp '^submodule\..*\.path$' |
sed -n -e 's|^submodule\.\(.*\)\.path '"$re"'$|\1|p' )
test -z "$name" &&
- die "No submodule mapping found in .gitmodules for path '$path'"
+ die "$(eval_gettext "No submodule mapping found in .gitmodules for path '\$path'")"
echo "$name"
}
@@ -128,7 +129,7 @@ module_clone()
else
git-clone -n "$url" "$path"
fi ||
- die "Clone of '$url' into submodule path '$path' failed"
+ die "$(eval_gettext "Clone of '\$url' into submodule path '\$path' failed")"
}
#
@@ -201,7 +202,7 @@ cmd_add()
realrepo=$repo
;;
*)
- die "repo URL: '$repo' must be absolute or begin with ./|../"
+ die "$(eval_gettext "repo URL: '\$repo' must be absolute or begin with ./|../")"
;;
esac
@@ -218,13 +219,16 @@ cmd_add()
s|/*$||
')
git ls-files --error-unmatch "$path" > /dev/null 2>&1 &&
- die "'$path' already exists in the index"
+ die "$(eval_gettext "'\$path' already exists in the index")"
if test -z "$force" && ! git add --dry-run --ignore-missing "$path" > /dev/null 2>&1
then
- echo >&2 "The following path is ignored by one of your .gitignore files:" &&
- echo >&2 $path &&
- echo >&2 "Use -f if you really want to add it."
+ (
+ eval_gettext "The following path is ignored by one of your .gitignore files:
+\$path
+Use -f if you really want to add it." &&
+ echo
+ ) >&2
exit 1
fi
@@ -233,9 +237,9 @@ cmd_add()
then
if test -d "$path"/.git -o -f "$path"/.git
then
- echo "Adding existing repo at '$path' to the index"
+ eval_gettext "Adding existing repo at '\$path' to the index"; echo
else
- die "'$path' already exists and is not a valid git repo"
+ die "$(eval_gettext "'\$path' already exists and is not a valid git repo")"
fi
case "$repo" in
@@ -258,16 +262,16 @@ cmd_add()
'') git checkout -f -q ;;
?*) git checkout -f -q -B "$branch" "origin/$branch" ;;
esac
- ) || die "Unable to checkout submodule '$path'"
+ ) || die "$(eval_gettext "Unable to checkout submodule '\$path'")"
fi
git add $force "$path" ||
- die "Failed to add submodule '$path'"
+ die "$(eval_gettext "Failed to add submodule '\$path'")"
git config -f .gitmodules submodule."$path".path "$path" &&
git config -f .gitmodules submodule."$path".url "$repo" &&
git add --force .gitmodules ||
- die "Failed to register submodule '$path'"
+ die "$(eval_gettext "Failed to register submodule '\$path'")"
}
#
@@ -305,7 +309,7 @@ cmd_foreach()
do
if test -e "$path"/.git
then
- say "Entering '$prefix$path'"
+ say "$(eval_gettext "Entering '\$prefix\$path'")"
name=$(module_name "$path")
(
prefix="$prefix$path/"
@@ -317,7 +321,7 @@ cmd_foreach()
cmd_foreach "--recursive" "$@"
fi
) ||
- die "Stopping at '$path'; script returned non-zero status."
+ die "$(eval_gettext "Stopping at '\$path'; script returned non-zero status.")"
fi
done
}
@@ -360,7 +364,7 @@ cmd_init()
url=$(git config -f .gitmodules submodule."$name".url)
test -z "$url" &&
- die "No url found for submodule path '$path' in .gitmodules"
+ die "$(eval_gettext "No url found for submodule path '\$path' in .gitmodules")"
# Possibly a url relative to parent
case "$url" in
@@ -370,14 +374,14 @@ cmd_init()
esac
git config submodule."$name".url "$url" ||
- die "Failed to register url for submodule path '$path'"
+ die "$(eval_gettext "Failed to register url for submodule path '\$path'")"
upd="$(git config -f .gitmodules submodule."$name".update)"
test -z "$upd" ||
git config submodule."$name".update "$upd" ||
- die "Failed to register update mode for submodule path '$path'"
+ die "$(eval_gettext "Failed to register update mode for submodule path '\$path'")"
- say "Submodule '$name' ($url) registered for path '$path'"
+ say "$(eval_gettext "Submodule '\$name' (\$url) registered for path '\$path'")"
done
}
@@ -460,8 +464,8 @@ cmd_update()
# Only mention uninitialized submodules when its
# path have been specified
test "$#" != "0" &&
- say "Submodule path '$path' not initialized" &&
- say "Maybe you want to use 'update --init'?"
+ say "$(eval_gettext "Submodule path '\$path' not initialized
+Maybe you want to use 'update --init'?")"
continue
fi
@@ -473,7 +477,7 @@ cmd_update()
else
subsha1=$(clear_local_git_env; cd "$path" &&
git rev-parse --verify HEAD) ||
- die "Unable to find current revision in submodule path '$path'"
+ die "$(eval_gettext "Unable to find current revision in submodule path '\$path'")"
fi
if ! test -z "$update"
@@ -497,7 +501,7 @@ cmd_update()
(clear_local_git_env; cd "$path" &&
( (rev=$(git rev-list -n 1 $sha1 --not --all 2>/dev/null) &&
test -z "$rev") || git-fetch)) ||
- die "Unable to fetch in submodule path '$path'"
+ die "$(eval_gettext "Unable to fetch in submodule path '\$path'")"
fi
# Is this something we just cloned?
@@ -510,30 +514,29 @@ cmd_update()
case "$update_module" in
rebase)
command="git rebase"
- action="rebase"
- msg="rebased onto"
+ die_msg="$(eval_gettext "Unable to rebase '\$sha1' in submodule path '\$path'")"
+ say_msg="$(eval_gettext "Submodule path '\$path': rebased into '\$sha1'")"
;;
merge)
command="git merge"
- action="merge"
- msg="merged in"
+ die_msg="$(eval_gettext "Unable to merge '\$sha1' in submodule path '\$path'")"
+ say_msg="$(eval_gettext "Submodule path '\$path': merged in '\$sha1'")"
;;
*)
command="git checkout $subforce -q"
- action="checkout"
- msg="checked out"
+ die_msg="$(eval_gettext "Unable to checkout '\$sha1' in submodule path '\$path'")"
+ say_msg="$(eval_gettext "Submodule path '\$path': checked out '\$sha1'")"
;;
esac
- (clear_local_git_env; cd "$path" && $command "$sha1") ||
- die "Unable to $action '$sha1' in submodule path '$path'"
- say "Submodule path '$path': $msg '$sha1'"
+ (clear_local_git_env; cd "$path" && $command "$sha1") || die $die_msg
+ say $say_msg
fi
if test -n "$recursive"
then
(clear_local_git_env; cd "$path" && eval cmd_update "$orig_flags") ||
- die "Failed to recurse into submodule path '$path'"
+ die "$(eval_gettext "Failed to recurse into submodule path '\$path'")"
fi
done
}
@@ -617,7 +620,7 @@ cmd_summary() {
if [ -n "$files" ]
then
test -n "$cached" &&
- die "--cached cannot be used with --files"
+ die "$(gettext -- "--cached cannot be used with --files")"
diff_cmd=diff-files
head=
fi
@@ -657,7 +660,10 @@ cmd_summary() {
;; # removed
*)
# unexpected type
- echo >&2 "unexpected mode $mod_dst"
+ (
+ eval_gettext "unexpected mode \$mod_dst" &&
+ echo
+ ) >&2
continue ;;
esac
fi
@@ -675,13 +681,13 @@ cmd_summary() {
total_commits=
case "$missing_src,$missing_dst" in
t,)
- errmsg=" Warn: $name doesn't contain commit $sha1_src"
+ errmsg="$(eval_gettext " Warn: \$name doesn't contain commit \$sha1_src")"
;;
,t)
- errmsg=" Warn: $name doesn't contain commit $sha1_dst"
+ errmsg="$(eval_gettext " Warn: \$name doesn't contain commit \$sha1_dst")"
;;
t,t)
- errmsg=" Warn: $name doesn't contain commits $sha1_src and $sha1_dst"
+ errmsg="$(eval_gettext " Warn: \$name doesn't contain commits \$sha1_src and \$sha1_dst")"
;;
*)
errmsg=
@@ -706,11 +712,13 @@ cmd_summary() {
sha1_abbr_dst=$(echo $sha1_dst | cut -c1-7)
if test $status = T
then
+ blob="$(gettext "blob")"
+ submodule="$(gettext "submodule")"
if test $mod_dst = 160000
then
- echo "* $name $sha1_abbr_src(blob)->$sha1_abbr_dst(submodule)$total_commits:"
+ echo "* $name $sha1_abbr_src($blob)->$sha1_abbr_dst($submodule)$total_commits:"
else
- echo "* $name $sha1_abbr_src(submodule)->$sha1_abbr_dst(blob)$total_commits:"
+ echo "* $name $sha1_abbr_src($submodule)->$sha1_abbr_dst($blob)$total_commits:"
fi
else
echo "* $name $sha1_abbr_src...$sha1_abbr_dst$total_commits:"
@@ -742,9 +750,9 @@ cmd_summary() {
done |
if test -n "$for_status"; then
if [ -n "$files" ]; then
- echo "# Submodules changed but not updated:"
+ gettext "# Submodules changed but not updated:"; echo
else
- echo "# Submodule changes to be committed:"
+ gettext "# Submodule changes to be committed:"; echo
fi
echo "#"
sed -e 's|^|# |' -e 's|^# $|#|'
@@ -830,7 +838,7 @@ cmd_status()
cd "$path" &&
eval cmd_status "$orig_args"
) ||
- die "Failed to recurse into submodule path '$path'"
+ die "$(eval_gettext "Failed to recurse into submodule path '\$path'")"
fi
done
}
@@ -874,7 +882,7 @@ cmd_sync()
;;
esac
- say "Synchronizing submodule url for '$name'"
+ say "$(eval_gettext "Synchronizing submodule url for '\$name'")"
git config submodule."$name".url "$url"
if test -e "$path"/.git
diff --git a/t/t4150-am.sh b/t/t4150-am.sh
index 850fc96..151404e 100755
--- a/t/t4150-am.sh
+++ b/t/t4150-am.sh
@@ -465,7 +465,7 @@ test_expect_success 'am newline in subject' '
test_tick &&
sed -e "s/second/second \\\n foo/" patch1 >patchnl &&
git am <patchnl >output.out 2>&1 &&
- grep "^Applying: second \\\n foo$" output.out
+ test_i18ngrep "^Applying: second \\\n foo$" output.out
'
test_expect_success 'am -q is quiet' '
diff --git a/t/t4151-am-abort.sh b/t/t4151-am-abort.sh
index c95c4cc..1176bcc 100755
--- a/t/t4151-am-abort.sh
+++ b/t/t4151-am-abort.sh
@@ -45,8 +45,9 @@ do
test_expect_success "am$with3 --skip continue after failed am$with3" '
test_must_fail git am$with3 --skip >output &&
- test "$(grep "^Applying" output)" = "Applying: 6" &&
- test_cmp file-2-expect file-2 &&
+ test_i18ngrep "^Applying" output >output.applying &&
+ test_i18ngrep "^Applying: 6$" output.applying &&
+ test_i18ncmp file-2-expect file-2 &&
test ! -f .git/MERGE_RR
'
diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh
index 874279e..b2b26b7 100755
--- a/t/t7400-submodule-basic.sh
+++ b/t/t7400-submodule-basic.sh
@@ -99,7 +99,7 @@ test_expect_success 'submodule add to .gitignored path fails' '
git add --force .gitignore &&
git commit -m"Ignore everything" &&
! git submodule add "$submodurl" submod >actual 2>&1 &&
- test_cmp expect actual
+ test_i18ncmp expect actual
)
'
@@ -357,7 +357,7 @@ test_expect_success 'update --init' '
git submodule update init > update.out &&
cat update.out &&
- grep "not initialized" update.out &&
+ test_i18ngrep "not initialized" update.out &&
! test -d init/.git &&
git submodule update --init init &&
diff --git a/t/t7401-submodule-summary.sh b/t/t7401-submodule-summary.sh
index 7d7fde0..30b429e 100755
--- a/t/t7401-submodule-summary.sh
+++ b/t/t7401-submodule-summary.sh
@@ -128,7 +128,7 @@ test_expect_success 'typechanged submodule(submodule->blob), --cached' "
< Add foo5
EOF
- test_cmp actual expected
+ test_i18ncmp actual expected
"
test_expect_success 'typechanged submodule(submodule->blob), --files' "
@@ -138,7 +138,7 @@ test_expect_success 'typechanged submodule(submodule->blob), --files' "
> Add foo5
EOF
- test_cmp actual expected
+ test_i18ncmp actual expected
"
rm -rf sm1 &&
@@ -149,7 +149,7 @@ test_expect_success 'typechanged submodule(submodule->blob)' "
* sm1 $head4(submodule)->$head5(blob):
EOF
- test_cmp actual expected
+ test_i18ncmp actual expected
"
rm -f sm1 &&
@@ -162,7 +162,7 @@ test_expect_success 'nonexistent commit' "
Warn: sm1 doesn't contain commit $head4_full
EOF
- test_cmp actual expected
+ test_i18ncmp actual expected
"
commit_file
@@ -173,7 +173,7 @@ test_expect_success 'typechanged submodule(blob->submodule)' "
> Add foo7
EOF
- test_cmp expected actual
+ test_i18ncmp expected actual
"
commit_file sm1 &&
@@ -228,7 +228,7 @@ EOF
test_expect_success '--for-status' "
git submodule summary --for-status HEAD^ >actual &&
- test_cmp actual - <<EOF
+ test_i18ncmp actual - <<EOF
# Submodule changes to be committed:
#
# * sm1 $head6...0000000:
diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh
index 4f16fcc..60e33be 100755
--- a/t/t7406-submodule-update.sh
+++ b/t/t7406-submodule-update.sh
@@ -90,7 +90,7 @@ test_expect_success 'submodule update does not fetch already present commits' '
(cd super &&
git submodule update > ../actual 2> ../actual.err
) &&
- test_cmp expected actual &&
+ test_i18ncmp expected actual &&
! test -s actual.err
'
diff --git a/t/t7407-submodule-foreach.sh b/t/t7407-submodule-foreach.sh
index e5be13c..ae3bd18 100755
--- a/t/t7407-submodule-foreach.sh
+++ b/t/t7407-submodule-foreach.sh
@@ -77,7 +77,7 @@ test_expect_success 'test basic "submodule foreach" usage' '
git config foo.bar zar &&
git submodule foreach "git config --file \"\$toplevel/.git/config\" foo.bar"
) &&
- test_cmp expect actual
+ test_i18ncmp expect actual
'
test_expect_success 'setup nested submodules' '
@@ -158,7 +158,7 @@ test_expect_success 'test messages from "foreach --recursive"' '
cd clone2 &&
git submodule foreach --recursive "true" > ../actual
) &&
- test_cmp expect actual
+ test_i18ncmp expect actual
'
cat > expect <<EOF