Merge branch 'jx/i18n-1.7.11'
Add i18n support for scripted Porcelains, and mark strings in merge(-recursive), am, and rebase for i18n. * jx/i18n-1.7.11: i18n: merge-recursive: mark strings for translation Remove dead code which contains bad gettext block i18n: am: mark more strings for translation rebase: remove obsolete and unused LONG_USAGE which breaks xgettext i18n: Rewrite gettext messages start with dash i18n: rebase: mark messages for translation i18n: New keywords for xgettext extraction from sh
This commit is contained in:
commit
5fe1484a9b
3
Makefile
3
Makefile
@ -2394,7 +2394,8 @@ XGETTEXT_FLAGS = \
|
|||||||
--from-code=UTF-8
|
--from-code=UTF-8
|
||||||
XGETTEXT_FLAGS_C = $(XGETTEXT_FLAGS) --language=C \
|
XGETTEXT_FLAGS_C = $(XGETTEXT_FLAGS) --language=C \
|
||||||
--keyword=_ --keyword=N_ --keyword="Q_:1,2"
|
--keyword=_ --keyword=N_ --keyword="Q_:1,2"
|
||||||
XGETTEXT_FLAGS_SH = $(XGETTEXT_FLAGS) --language=Shell
|
XGETTEXT_FLAGS_SH = $(XGETTEXT_FLAGS) --language=Shell \
|
||||||
|
--keyword=gettextln --keyword=eval_gettextln
|
||||||
XGETTEXT_FLAGS_PERL = $(XGETTEXT_FLAGS) --keyword=__ --language=Perl
|
XGETTEXT_FLAGS_PERL = $(XGETTEXT_FLAGS) --keyword=__ --language=Perl
|
||||||
LOCALIZED_C := $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H)
|
LOCALIZED_C := $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H)
|
||||||
LOCALIZED_SH := $(SCRIPT_SH)
|
LOCALIZED_SH := $(SCRIPT_SH)
|
||||||
|
18
git-am.sh
18
git-am.sh
@ -102,9 +102,9 @@ stop_here_user_resolve () {
|
|||||||
printf '%s\n' "$resolvemsg"
|
printf '%s\n' "$resolvemsg"
|
||||||
stop_here $1
|
stop_here $1
|
||||||
fi
|
fi
|
||||||
eval_gettextln "When you have resolved this problem run \"\$cmdline --resolved\".
|
eval_gettextln "When you have resolved this problem, run \"\$cmdline --resolved\".
|
||||||
If you would prefer to skip this patch, instead run \"\$cmdline --skip\".
|
If you prefer to skip this patch, run \"\$cmdline --skip\" instead.
|
||||||
To restore the original branch and stop patching run \"\$cmdline --abort\"."
|
To restore the original branch and stop patching, run \"\$cmdline --abort\"."
|
||||||
|
|
||||||
stop_here $1
|
stop_here $1
|
||||||
}
|
}
|
||||||
@ -136,7 +136,7 @@ fall_back_3way () {
|
|||||||
git write-tree >"$dotest/patch-merge-base+" ||
|
git write-tree >"$dotest/patch-merge-base+" ||
|
||||||
cannot_fallback "$(gettext "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...
|
say "$(gettext "Using index info to reconstruct a base tree...")"
|
||||||
|
|
||||||
cmd='GIT_INDEX_FILE="$dotest/patch-merge-tmp-index"'
|
cmd='GIT_INDEX_FILE="$dotest/patch-merge-tmp-index"'
|
||||||
|
|
||||||
@ -176,8 +176,7 @@ It does not apply to blobs recorded in its index.")"
|
|||||||
fi
|
fi
|
||||||
git-merge-recursive $orig_tree -- HEAD $his_tree || {
|
git-merge-recursive $orig_tree -- HEAD $his_tree || {
|
||||||
git rerere $allow_rerere_autoupdate
|
git rerere $allow_rerere_autoupdate
|
||||||
echo Failed to merge in the changes.
|
die "$(gettext "Failed to merge in the changes.")"
|
||||||
exit 1
|
|
||||||
}
|
}
|
||||||
unset GITHEAD_$his_tree
|
unset GITHEAD_$his_tree
|
||||||
}
|
}
|
||||||
@ -387,8 +386,8 @@ do
|
|||||||
-i|--interactive)
|
-i|--interactive)
|
||||||
interactive=t ;;
|
interactive=t ;;
|
||||||
-b|--binary)
|
-b|--binary)
|
||||||
echo >&2 "The $1 option has been a no-op for long time, and"
|
gettextln >&2 "The -b/--binary option has been a no-op for long time, and
|
||||||
echo >&2 "it will be removed. Please do not use it anymore."
|
it will be removed. Please do not use it anymore."
|
||||||
;;
|
;;
|
||||||
-3|--3way)
|
-3|--3way)
|
||||||
threeway=t ;;
|
threeway=t ;;
|
||||||
@ -414,9 +413,6 @@ do
|
|||||||
abort=t ;;
|
abort=t ;;
|
||||||
--rebasing)
|
--rebasing)
|
||||||
rebasing=t threeway=t ;;
|
rebasing=t threeway=t ;;
|
||||||
-d|--dotest)
|
|
||||||
die "$(gettext "-d option is no longer supported. Do not use.")"
|
|
||||||
;;
|
|
||||||
--resolvemsg)
|
--resolvemsg)
|
||||||
shift; resolvemsg=$1 ;;
|
shift; resolvemsg=$1 ;;
|
||||||
--whitespace|--directory|--exclude|--include)
|
--whitespace|--directory|--exclude|--include)
|
||||||
|
@ -3,31 +3,6 @@
|
|||||||
# Copyright (c) 2005 Junio C Hamano.
|
# Copyright (c) 2005 Junio C Hamano.
|
||||||
#
|
#
|
||||||
|
|
||||||
USAGE='[--interactive | -i] [--exec | -x <cmd>] [-v] [--force-rebase | -f]
|
|
||||||
[--no-ff] [--onto <newbase>] [<upstream>|--root] [<branch>] [--quiet | -q]'
|
|
||||||
LONG_USAGE='git-rebase replaces <branch> with a new branch of the
|
|
||||||
same name. When the --onto option is provided the new branch starts
|
|
||||||
out with a HEAD equal to <newbase>, otherwise it is equal to <upstream>
|
|
||||||
It then attempts to create a new commit for each commit from the original
|
|
||||||
<branch> that does not exist in the <upstream> branch.
|
|
||||||
|
|
||||||
It is possible that a merge failure will prevent this process from being
|
|
||||||
completely automatic. You will have to resolve any such merge failure
|
|
||||||
and run git rebase --continue. Another option is to bypass the commit
|
|
||||||
that caused the merge failure with git rebase --skip. To check out the
|
|
||||||
original <branch> and remove the .git/rebase-apply working files, use the
|
|
||||||
command git rebase --abort instead.
|
|
||||||
|
|
||||||
Note that if <branch> is not specified on the command line, the
|
|
||||||
currently checked out branch is used.
|
|
||||||
|
|
||||||
Example: git-rebase master~1 topic
|
|
||||||
|
|
||||||
A---B---C topic A'\''--B'\''--C'\'' topic
|
|
||||||
/ --> /
|
|
||||||
D---E---F---G master D---E---F---G master
|
|
||||||
'
|
|
||||||
|
|
||||||
SUBDIRECTORY_OK=Yes
|
SUBDIRECTORY_OK=Yes
|
||||||
OPTIONS_KEEPDASHDASH=
|
OPTIONS_KEEPDASHDASH=
|
||||||
OPTIONS_SPEC="\
|
OPTIONS_SPEC="\
|
||||||
@ -65,6 +40,7 @@ abort! abort and check out the original branch
|
|||||||
skip! skip current patch and continue
|
skip! skip current patch and continue
|
||||||
"
|
"
|
||||||
. git-sh-setup
|
. git-sh-setup
|
||||||
|
. git-sh-i18n
|
||||||
set_reflog_action rebase
|
set_reflog_action rebase
|
||||||
require_work_tree_exists
|
require_work_tree_exists
|
||||||
cd_to_toplevel
|
cd_to_toplevel
|
||||||
@ -73,9 +49,9 @@ LF='
|
|||||||
'
|
'
|
||||||
ok_to_skip_pre_rebase=
|
ok_to_skip_pre_rebase=
|
||||||
resolvemsg="
|
resolvemsg="
|
||||||
When you have resolved this problem run \"git rebase --continue\".
|
$(gettext 'When you have resolved this problem, run "git rebase --continue".
|
||||||
If you would prefer to skip this patch, instead run \"git rebase --skip\".
|
If you prefer to skip this patch, run "git rebase --skip" instead.
|
||||||
To check out the original branch and stop rebasing run \"git rebase --abort\".
|
To check out the original branch and stop rebasing, run "git rebase --abort".')
|
||||||
"
|
"
|
||||||
unset onto
|
unset onto
|
||||||
cmd=
|
cmd=
|
||||||
@ -161,7 +137,7 @@ move_to_original_branch () {
|
|||||||
git symbolic-ref \
|
git symbolic-ref \
|
||||||
-m "rebase finished: returning to $head_name" \
|
-m "rebase finished: returning to $head_name" \
|
||||||
HEAD $head_name ||
|
HEAD $head_name ||
|
||||||
die "Could not move back to $head_name"
|
die "$(gettext "Could not move back to $head_name")"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
@ -180,12 +156,12 @@ run_pre_rebase_hook () {
|
|||||||
test -x "$GIT_DIR/hooks/pre-rebase"
|
test -x "$GIT_DIR/hooks/pre-rebase"
|
||||||
then
|
then
|
||||||
"$GIT_DIR/hooks/pre-rebase" ${1+"$@"} ||
|
"$GIT_DIR/hooks/pre-rebase" ${1+"$@"} ||
|
||||||
die "The pre-rebase hook refused to rebase."
|
die "$(gettext "The pre-rebase hook refused to rebase.")"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
test -f "$apply_dir"/applying &&
|
test -f "$apply_dir"/applying &&
|
||||||
die 'It looks like git-am is in progress. Cannot rebase.'
|
die "$(gettext "It looks like git-am is in progress. Cannot rebase.")"
|
||||||
|
|
||||||
if test -d "$apply_dir"
|
if test -d "$apply_dir"
|
||||||
then
|
then
|
||||||
@ -316,12 +292,12 @@ test $# -gt 2 && usage
|
|||||||
if test -n "$cmd" &&
|
if test -n "$cmd" &&
|
||||||
test "$interactive_rebase" != explicit
|
test "$interactive_rebase" != explicit
|
||||||
then
|
then
|
||||||
die "--exec option must be used with --interactive option"
|
die "$(gettext "The --exec option must be used with the --interactive option")"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -n "$action"
|
if test -n "$action"
|
||||||
then
|
then
|
||||||
test -z "$in_progress" && die "No rebase in progress?"
|
test -z "$in_progress" && die "$(gettext "No rebase in progress?")"
|
||||||
# Only interactive rebase uses detailed reflog messages
|
# Only interactive rebase uses detailed reflog messages
|
||||||
if test "$type" = interactive && test "$GIT_REFLOG_ACTION" = rebase
|
if test "$type" = interactive && test "$GIT_REFLOG_ACTION" = rebase
|
||||||
then
|
then
|
||||||
@ -334,11 +310,11 @@ case "$action" in
|
|||||||
continue)
|
continue)
|
||||||
# Sanity check
|
# Sanity check
|
||||||
git rev-parse --verify HEAD >/dev/null ||
|
git rev-parse --verify HEAD >/dev/null ||
|
||||||
die "Cannot read HEAD"
|
die "$(gettext "Cannot read HEAD")"
|
||||||
git update-index --ignore-submodules --refresh &&
|
git update-index --ignore-submodules --refresh &&
|
||||||
git diff-files --quiet --ignore-submodules || {
|
git diff-files --quiet --ignore-submodules || {
|
||||||
echo "You must edit all merge conflicts and then"
|
echo "$(gettext "You must edit all merge conflicts and then
|
||||||
echo "mark them as resolved using git add"
|
mark them as resolved using git add")"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
read_basic_state
|
read_basic_state
|
||||||
@ -355,7 +331,7 @@ abort)
|
|||||||
case "$head_name" in
|
case "$head_name" in
|
||||||
refs/*)
|
refs/*)
|
||||||
git symbolic-ref -m "rebase: aborting" HEAD $head_name ||
|
git symbolic-ref -m "rebase: aborting" HEAD $head_name ||
|
||||||
die "Could not move back to $head_name"
|
die "$(eval_gettext "Could not move back to \$head_name")"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
output git reset --hard $orig_head
|
output git reset --hard $orig_head
|
||||||
@ -367,15 +343,18 @@ esac
|
|||||||
# Make sure no rebase is in progress
|
# Make sure no rebase is in progress
|
||||||
if test -n "$in_progress"
|
if test -n "$in_progress"
|
||||||
then
|
then
|
||||||
die '
|
state_dir_base=${state_dir##*/}
|
||||||
It seems that there is already a '"${state_dir##*/}"' directory, and
|
cmd_live_rebase="git rebase (--continue | --abort | --skip)"
|
||||||
I wonder if you are in the middle of another rebase. If that is the
|
cmd_clear_stale_rebase="rm -fr \"$state_dir\""
|
||||||
|
die "
|
||||||
|
$(eval_gettext 'It seems that there is already a $state_dir_base directory, and
|
||||||
|
I wonder if you ware in the middle of another rebase. If that is the
|
||||||
case, please try
|
case, please try
|
||||||
git rebase (--continue | --abort | --skip)
|
$cmd_live_rebase
|
||||||
If that is not the case, please
|
If that is not the case, please
|
||||||
rm -fr '"$state_dir"'
|
$cmd_clear_stale_rebase
|
||||||
and run me again. I am stopping in case you still have something
|
and run me again. I am stopping in case you still have something
|
||||||
valuable there.'
|
valuable there.')"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -n "$rebase_root" && test -z "$onto"
|
if test -n "$rebase_root" && test -z "$onto"
|
||||||
@ -413,7 +392,7 @@ then
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
upstream=`git rev-parse --verify "${upstream_name}^0"` ||
|
upstream=`git rev-parse --verify "${upstream_name}^0"` ||
|
||||||
die "invalid upstream $upstream_name"
|
die "$(eval_gettext "invalid upstream \$upstream_name")"
|
||||||
upstream_arg="$upstream_name"
|
upstream_arg="$upstream_name"
|
||||||
else
|
else
|
||||||
if test -z "$onto"
|
if test -z "$onto"
|
||||||
@ -437,19 +416,19 @@ case "$onto_name" in
|
|||||||
then
|
then
|
||||||
case "$onto" in
|
case "$onto" in
|
||||||
?*"$LF"?*)
|
?*"$LF"?*)
|
||||||
die "$onto_name: there are more than one merge bases"
|
die "$(eval_gettext "\$onto_name: there are more than one merge bases")"
|
||||||
;;
|
;;
|
||||||
'')
|
'')
|
||||||
die "$onto_name: there is no merge base"
|
die "$(eval_gettext "\$onto_name: there is no merge base")"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
die "$onto_name: there is no merge base"
|
die "$(eval_gettext "\$onto_name: there is no merge base")"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
onto=$(git rev-parse --verify "${onto_name}^0") ||
|
onto=$(git rev-parse --verify "${onto_name}^0") ||
|
||||||
die "Does not point to a valid commit: $onto_name"
|
die "$(eval_gettext "Does not point to a valid commit: \$onto_name")"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@ -472,7 +451,7 @@ case "$#" in
|
|||||||
then
|
then
|
||||||
head_name="detached HEAD"
|
head_name="detached HEAD"
|
||||||
else
|
else
|
||||||
die "fatal: no such branch: $1"
|
die "$(eval_gettext "fatal: no such branch: \$branch_name")"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
0)
|
0)
|
||||||
@ -492,7 +471,7 @@ case "$#" in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
require_clean_work_tree "rebase" "Please commit or stash them."
|
require_clean_work_tree "rebase" "$(gettext "Please commit or stash them.")"
|
||||||
|
|
||||||
# Now we are rebasing commits $upstream..$orig_head (or with --root,
|
# Now we are rebasing commits $upstream..$orig_head (or with --root,
|
||||||
# everything leading up to $orig_head) on top of $onto
|
# everything leading up to $orig_head) on top of $onto
|
||||||
@ -510,10 +489,10 @@ then
|
|||||||
then
|
then
|
||||||
# Lazily switch to the target branch if needed...
|
# Lazily switch to the target branch if needed...
|
||||||
test -z "$switch_to" || git checkout "$switch_to" --
|
test -z "$switch_to" || git checkout "$switch_to" --
|
||||||
say "Current branch $branch_name is up to date."
|
say "$(eval_gettext "Current branch \$branch_name is up to date.")"
|
||||||
exit 0
|
exit 0
|
||||||
else
|
else
|
||||||
say "Current branch $branch_name is up to date, rebase forced."
|
say "$(eval_gettext "Current branch \$branch_name is up to date, rebase forced.")"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -524,7 +503,7 @@ if test -n "$diffstat"
|
|||||||
then
|
then
|
||||||
if test -n "$verbose"
|
if test -n "$verbose"
|
||||||
then
|
then
|
||||||
echo "Changes from $mb to $onto:"
|
echo "$(eval_gettext "Changes from \$mb to \$onto:")"
|
||||||
fi
|
fi
|
||||||
# We want color (if set), but no pager
|
# We want color (if set), but no pager
|
||||||
GIT_PAGER='' git diff --stat --summary "$mb" "$onto"
|
GIT_PAGER='' git diff --stat --summary "$mb" "$onto"
|
||||||
@ -533,7 +512,7 @@ fi
|
|||||||
test "$type" = interactive && run_specific_rebase
|
test "$type" = interactive && run_specific_rebase
|
||||||
|
|
||||||
# Detach HEAD and reset the tree
|
# Detach HEAD and reset the tree
|
||||||
say "First, rewinding head to replay your work on top of it..."
|
say "$(gettext "First, rewinding head to replay your work on top of it...")"
|
||||||
git checkout -q "$onto^0" || die "could not detach HEAD"
|
git checkout -q "$onto^0" || die "could not detach HEAD"
|
||||||
git update-ref ORIG_HEAD $orig_head
|
git update-ref ORIG_HEAD $orig_head
|
||||||
|
|
||||||
@ -541,7 +520,7 @@ git update-ref ORIG_HEAD $orig_head
|
|||||||
# we just fast-forwarded.
|
# we just fast-forwarded.
|
||||||
if test "$mb" = "$orig_head"
|
if test "$mb" = "$orig_head"
|
||||||
then
|
then
|
||||||
say "Fast-forwarded $branch_name to $onto_name."
|
say "$(eval_gettext "Fast-forwarded \$branch_name to \$onto_name.")"
|
||||||
move_to_original_branch
|
move_to_original_branch
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
@ -751,7 +751,7 @@ cmd_summary() {
|
|||||||
if [ -n "$files" ]
|
if [ -n "$files" ]
|
||||||
then
|
then
|
||||||
test -n "$cached" &&
|
test -n "$cached" &&
|
||||||
die "$(gettext -- "--cached cannot be used with --files")"
|
die "$(gettext "The --cached option cannot be used with the --files option")"
|
||||||
diff_cmd=diff-files
|
diff_cmd=diff-files
|
||||||
head=
|
head=
|
||||||
fi
|
fi
|
||||||
|
@ -187,7 +187,7 @@ static void output_commit_title(struct merge_options *o, struct commit *commit)
|
|||||||
else {
|
else {
|
||||||
printf("%s ", find_unique_abbrev(commit->object.sha1, DEFAULT_ABBREV));
|
printf("%s ", find_unique_abbrev(commit->object.sha1, DEFAULT_ABBREV));
|
||||||
if (parse_commit(commit) != 0)
|
if (parse_commit(commit) != 0)
|
||||||
printf("(bad commit)\n");
|
printf(_("(bad commit)\n"));
|
||||||
else {
|
else {
|
||||||
const char *title;
|
const char *title;
|
||||||
int len = find_commit_subject(commit->buffer, &title);
|
int len = find_commit_subject(commit->buffer, &title);
|
||||||
@ -203,7 +203,7 @@ static int add_cacheinfo(unsigned int mode, const unsigned char *sha1,
|
|||||||
struct cache_entry *ce;
|
struct cache_entry *ce;
|
||||||
ce = make_cache_entry(mode, sha1 ? sha1 : null_sha1, path, stage, refresh);
|
ce = make_cache_entry(mode, sha1 ? sha1 : null_sha1, path, stage, refresh);
|
||||||
if (!ce)
|
if (!ce)
|
||||||
return error("addinfo_cache failed for path '%s'", path);
|
return error(_("addinfo_cache failed for path '%s'"), path);
|
||||||
return add_cache_entry(ce, options);
|
return add_cache_entry(ce, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -265,7 +265,7 @@ struct tree *write_tree_from_memory(struct merge_options *o)
|
|||||||
if (!cache_tree_fully_valid(active_cache_tree) &&
|
if (!cache_tree_fully_valid(active_cache_tree) &&
|
||||||
cache_tree_update(active_cache_tree,
|
cache_tree_update(active_cache_tree,
|
||||||
active_cache, active_nr, 0) < 0)
|
active_cache, active_nr, 0) < 0)
|
||||||
die("error building trees");
|
die(_("error building trees"));
|
||||||
|
|
||||||
result = lookup_tree(active_cache_tree->sha1);
|
result = lookup_tree(active_cache_tree->sha1);
|
||||||
|
|
||||||
@ -494,7 +494,7 @@ static struct string_list *get_renames(struct merge_options *o,
|
|||||||
opts.show_rename_progress = o->show_rename_progress;
|
opts.show_rename_progress = o->show_rename_progress;
|
||||||
opts.output_format = DIFF_FORMAT_NO_OUTPUT;
|
opts.output_format = DIFF_FORMAT_NO_OUTPUT;
|
||||||
if (diff_setup_done(&opts) < 0)
|
if (diff_setup_done(&opts) < 0)
|
||||||
die("diff setup failed");
|
die(_("diff setup failed"));
|
||||||
diff_tree_sha1(o_tree->object.sha1, tree->object.sha1, "", &opts);
|
diff_tree_sha1(o_tree->object.sha1, tree->object.sha1, "", &opts);
|
||||||
diffcore_std(&opts);
|
diffcore_std(&opts);
|
||||||
if (opts.needed_rename_limit > o->needed_rename_limit)
|
if (opts.needed_rename_limit > o->needed_rename_limit)
|
||||||
@ -624,7 +624,7 @@ static void flush_buffer(int fd, const char *buf, unsigned long size)
|
|||||||
break;
|
break;
|
||||||
die_errno("merge-recursive");
|
die_errno("merge-recursive");
|
||||||
} else if (!ret) {
|
} else if (!ret) {
|
||||||
die("merge-recursive: disk full?");
|
die(_("merge-recursive: disk full?"));
|
||||||
}
|
}
|
||||||
size -= ret;
|
size -= ret;
|
||||||
buf += ret;
|
buf += ret;
|
||||||
@ -687,7 +687,7 @@ static int would_lose_untracked(const char *path)
|
|||||||
static int make_room_for_path(struct merge_options *o, const char *path)
|
static int make_room_for_path(struct merge_options *o, const char *path)
|
||||||
{
|
{
|
||||||
int status, i;
|
int status, i;
|
||||||
const char *msg = "failed to create path '%s'%s";
|
const char *msg = _("failed to create path '%s'%s");
|
||||||
|
|
||||||
/* Unlink any D/F conflict files that are in the way */
|
/* Unlink any D/F conflict files that are in the way */
|
||||||
for (i = 0; i < o->df_conflict_file_set.nr; i++) {
|
for (i = 0; i < o->df_conflict_file_set.nr; i++) {
|
||||||
@ -698,7 +698,7 @@ static int make_room_for_path(struct merge_options *o, const char *path)
|
|||||||
path[df_pathlen] == '/' &&
|
path[df_pathlen] == '/' &&
|
||||||
strncmp(path, df_path, df_pathlen) == 0) {
|
strncmp(path, df_path, df_pathlen) == 0) {
|
||||||
output(o, 3,
|
output(o, 3,
|
||||||
"Removing %s to make room for subdirectory\n",
|
_("Removing %s to make room for subdirectory\n"),
|
||||||
df_path);
|
df_path);
|
||||||
unlink(df_path);
|
unlink(df_path);
|
||||||
unsorted_string_list_delete_item(&o->df_conflict_file_set,
|
unsorted_string_list_delete_item(&o->df_conflict_file_set,
|
||||||
@ -712,7 +712,7 @@ static int make_room_for_path(struct merge_options *o, const char *path)
|
|||||||
if (status) {
|
if (status) {
|
||||||
if (status == -3) {
|
if (status == -3) {
|
||||||
/* something else exists */
|
/* something else exists */
|
||||||
error(msg, path, ": perhaps a D/F conflict?");
|
error(msg, path, _(": perhaps a D/F conflict?"));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
die(msg, path, "");
|
die(msg, path, "");
|
||||||
@ -723,7 +723,7 @@ static int make_room_for_path(struct merge_options *o, const char *path)
|
|||||||
* tracking it.
|
* tracking it.
|
||||||
*/
|
*/
|
||||||
if (would_lose_untracked(path))
|
if (would_lose_untracked(path))
|
||||||
return error("refusing to lose untracked file at '%s'",
|
return error(_("refusing to lose untracked file at '%s'"),
|
||||||
path);
|
path);
|
||||||
|
|
||||||
/* Successful unlink is good.. */
|
/* Successful unlink is good.. */
|
||||||
@ -733,7 +733,7 @@ static int make_room_for_path(struct merge_options *o, const char *path)
|
|||||||
if (errno == ENOENT)
|
if (errno == ENOENT)
|
||||||
return 0;
|
return 0;
|
||||||
/* .. but not some other error (who really cares what?) */
|
/* .. but not some other error (who really cares what?) */
|
||||||
return error(msg, path, ": perhaps a D/F conflict?");
|
return error(msg, path, _(": perhaps a D/F conflict?"));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void update_file_flags(struct merge_options *o,
|
static void update_file_flags(struct merge_options *o,
|
||||||
@ -763,9 +763,9 @@ static void update_file_flags(struct merge_options *o,
|
|||||||
|
|
||||||
buf = read_sha1_file(sha, &type, &size);
|
buf = read_sha1_file(sha, &type, &size);
|
||||||
if (!buf)
|
if (!buf)
|
||||||
die("cannot read object %s '%s'", sha1_to_hex(sha), path);
|
die(_("cannot read object %s '%s'"), sha1_to_hex(sha), path);
|
||||||
if (type != OBJ_BLOB)
|
if (type != OBJ_BLOB)
|
||||||
die("blob expected for %s '%s'", sha1_to_hex(sha), path);
|
die(_("blob expected for %s '%s'"), sha1_to_hex(sha), path);
|
||||||
if (S_ISREG(mode)) {
|
if (S_ISREG(mode)) {
|
||||||
struct strbuf strbuf = STRBUF_INIT;
|
struct strbuf strbuf = STRBUF_INIT;
|
||||||
if (convert_to_working_tree(path, buf, size, &strbuf)) {
|
if (convert_to_working_tree(path, buf, size, &strbuf)) {
|
||||||
@ -788,7 +788,7 @@ static void update_file_flags(struct merge_options *o,
|
|||||||
mode = 0666;
|
mode = 0666;
|
||||||
fd = open(path, O_WRONLY | O_TRUNC | O_CREAT, mode);
|
fd = open(path, O_WRONLY | O_TRUNC | O_CREAT, mode);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
die_errno("failed to open '%s'", path);
|
die_errno(_("failed to open '%s'"), path);
|
||||||
flush_buffer(fd, buf, size);
|
flush_buffer(fd, buf, size);
|
||||||
close(fd);
|
close(fd);
|
||||||
} else if (S_ISLNK(mode)) {
|
} else if (S_ISLNK(mode)) {
|
||||||
@ -796,10 +796,10 @@ static void update_file_flags(struct merge_options *o,
|
|||||||
safe_create_leading_directories_const(path);
|
safe_create_leading_directories_const(path);
|
||||||
unlink(path);
|
unlink(path);
|
||||||
if (symlink(lnk, path))
|
if (symlink(lnk, path))
|
||||||
die_errno("failed to symlink '%s'", path);
|
die_errno(_("failed to symlink '%s'"), path);
|
||||||
free(lnk);
|
free(lnk);
|
||||||
} else
|
} else
|
||||||
die("do not know what to do with %06o %s '%s'",
|
die(_("do not know what to do with %06o %s '%s'"),
|
||||||
mode, sha1_to_hex(sha), path);
|
mode, sha1_to_hex(sha), path);
|
||||||
free(buf);
|
free(buf);
|
||||||
}
|
}
|
||||||
@ -936,11 +936,11 @@ static struct merge_file_info merge_file_1(struct merge_options *o,
|
|||||||
branch1, branch2);
|
branch1, branch2);
|
||||||
|
|
||||||
if ((merge_status < 0) || !result_buf.ptr)
|
if ((merge_status < 0) || !result_buf.ptr)
|
||||||
die("Failed to execute internal merge");
|
die(_("Failed to execute internal merge"));
|
||||||
|
|
||||||
if (write_sha1_file(result_buf.ptr, result_buf.size,
|
if (write_sha1_file(result_buf.ptr, result_buf.size,
|
||||||
blob_type, result.sha))
|
blob_type, result.sha))
|
||||||
die("Unable to add %s to database",
|
die(_("Unable to add %s to database"),
|
||||||
a->path);
|
a->path);
|
||||||
|
|
||||||
free(result_buf.ptr);
|
free(result_buf.ptr);
|
||||||
@ -956,7 +956,7 @@ static struct merge_file_info merge_file_1(struct merge_options *o,
|
|||||||
if (!sha_eq(a->sha1, b->sha1))
|
if (!sha_eq(a->sha1, b->sha1))
|
||||||
result.clean = 0;
|
result.clean = 0;
|
||||||
} else {
|
} else {
|
||||||
die("unsupported object type in the tree");
|
die(_("unsupported object type in the tree"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1034,22 +1034,32 @@ static void handle_change_delete(struct merge_options *o,
|
|||||||
remove_file_from_cache(path);
|
remove_file_from_cache(path);
|
||||||
update_file(o, 0, o_sha, o_mode, renamed ? renamed : path);
|
update_file(o, 0, o_sha, o_mode, renamed ? renamed : path);
|
||||||
} else if (!a_sha) {
|
} else if (!a_sha) {
|
||||||
output(o, 1, "CONFLICT (%s/delete): %s deleted in %s "
|
if (!renamed) {
|
||||||
"and %s in %s. Version %s of %s left in tree%s%s.",
|
output(o, 1, _("CONFLICT (%s/delete): %s deleted in %s "
|
||||||
change, path, o->branch1,
|
"and %s in %s. Version %s of %s left in tree."),
|
||||||
change_past, o->branch2, o->branch2, path,
|
change, path, o->branch1, change_past,
|
||||||
NULL == renamed ? "" : " at ",
|
o->branch2, o->branch2, path);
|
||||||
NULL == renamed ? "" : renamed);
|
update_file(o, 0, b_sha, b_mode, path);
|
||||||
update_file(o, 0, b_sha, b_mode, renamed ? renamed : path);
|
|
||||||
} else {
|
} else {
|
||||||
output(o, 1, "CONFLICT (%s/delete): %s deleted in %s "
|
output(o, 1, _("CONFLICT (%s/delete): %s deleted in %s "
|
||||||
"and %s in %s. Version %s of %s left in tree%s%s.",
|
"and %s in %s. Version %s of %s left in tree at %s."),
|
||||||
change, path, o->branch2,
|
change, path, o->branch1, change_past,
|
||||||
change_past, o->branch1, o->branch1, path,
|
o->branch2, o->branch2, path, renamed);
|
||||||
NULL == renamed ? "" : " at ",
|
update_file(o, 0, b_sha, b_mode, renamed);
|
||||||
NULL == renamed ? "" : renamed);
|
}
|
||||||
if (renamed)
|
} else {
|
||||||
|
if (!renamed) {
|
||||||
|
output(o, 1, _("CONFLICT (%s/delete): %s deleted in %s "
|
||||||
|
"and %s in %s. Version %s of %s left in tree."),
|
||||||
|
change, path, o->branch2, change_past,
|
||||||
|
o->branch1, o->branch1, path);
|
||||||
|
} else {
|
||||||
|
output(o, 1, _("CONFLICT (%s/delete): %s deleted in %s "
|
||||||
|
"and %s in %s. Version %s of %s left in tree at %s."),
|
||||||
|
change, path, o->branch2, change_past,
|
||||||
|
o->branch1, o->branch1, path, renamed);
|
||||||
update_file(o, 0, a_sha, a_mode, renamed);
|
update_file(o, 0, a_sha, a_mode, renamed);
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* No need to call update_file() on path when !renamed, since
|
* No need to call update_file() on path when !renamed, since
|
||||||
* that would needlessly touch path. We could call
|
* that would needlessly touch path. We could call
|
||||||
@ -1085,7 +1095,7 @@ static void conflict_rename_delete(struct merge_options *o,
|
|||||||
orig->sha1, orig->mode,
|
orig->sha1, orig->mode,
|
||||||
a_sha, a_mode,
|
a_sha, a_mode,
|
||||||
b_sha, b_mode,
|
b_sha, b_mode,
|
||||||
"rename", "renamed");
|
_("rename"), _("renamed"));
|
||||||
|
|
||||||
if (o->call_depth) {
|
if (o->call_depth) {
|
||||||
remove_file_from_cache(dest->path);
|
remove_file_from_cache(dest->path);
|
||||||
@ -1141,7 +1151,7 @@ static void handle_file(struct merge_options *o,
|
|||||||
} else {
|
} else {
|
||||||
if (dir_in_way(rename->path, !o->call_depth)) {
|
if (dir_in_way(rename->path, !o->call_depth)) {
|
||||||
dst_name = unique_path(o, rename->path, cur_branch);
|
dst_name = unique_path(o, rename->path, cur_branch);
|
||||||
output(o, 1, "%s is a directory in %s adding as %s instead",
|
output(o, 1, _("%s is a directory in %s adding as %s instead"),
|
||||||
rename->path, other_branch, dst_name);
|
rename->path, other_branch, dst_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1163,12 +1173,12 @@ static void conflict_rename_rename_1to2(struct merge_options *o,
|
|||||||
struct diff_filespec *a = ci->pair1->two;
|
struct diff_filespec *a = ci->pair1->two;
|
||||||
struct diff_filespec *b = ci->pair2->two;
|
struct diff_filespec *b = ci->pair2->two;
|
||||||
|
|
||||||
output(o, 1, "CONFLICT (rename/rename): "
|
output(o, 1, _("CONFLICT (rename/rename): "
|
||||||
"Rename \"%s\"->\"%s\" in branch \"%s\" "
|
"Rename \"%s\"->\"%s\" in branch \"%s\" "
|
||||||
"rename \"%s\"->\"%s\" in \"%s\"%s",
|
"rename \"%s\"->\"%s\" in \"%s\"%s"),
|
||||||
one->path, a->path, ci->branch1,
|
one->path, a->path, ci->branch1,
|
||||||
one->path, b->path, ci->branch2,
|
one->path, b->path, ci->branch2,
|
||||||
o->call_depth ? " (left unresolved)" : "");
|
o->call_depth ? _(" (left unresolved)") : "");
|
||||||
if (o->call_depth) {
|
if (o->call_depth) {
|
||||||
struct merge_file_info mfi;
|
struct merge_file_info mfi;
|
||||||
struct diff_filespec other;
|
struct diff_filespec other;
|
||||||
@ -1222,9 +1232,9 @@ static void conflict_rename_rename_2to1(struct merge_options *o,
|
|||||||
struct merge_file_info mfi_c1;
|
struct merge_file_info mfi_c1;
|
||||||
struct merge_file_info mfi_c2;
|
struct merge_file_info mfi_c2;
|
||||||
|
|
||||||
output(o, 1, "CONFLICT (rename/rename): "
|
output(o, 1, _("CONFLICT (rename/rename): "
|
||||||
"Rename %s->%s in %s. "
|
"Rename %s->%s in %s. "
|
||||||
"Rename %s->%s in %s",
|
"Rename %s->%s in %s"),
|
||||||
a->path, c1->path, ci->branch1,
|
a->path, c1->path, ci->branch1,
|
||||||
b->path, c2->path, ci->branch2);
|
b->path, c2->path, ci->branch2);
|
||||||
|
|
||||||
@ -1252,7 +1262,7 @@ static void conflict_rename_rename_2to1(struct merge_options *o,
|
|||||||
} else {
|
} else {
|
||||||
char *new_path1 = unique_path(o, path, ci->branch1);
|
char *new_path1 = unique_path(o, path, ci->branch1);
|
||||||
char *new_path2 = unique_path(o, path, ci->branch2);
|
char *new_path2 = unique_path(o, path, ci->branch2);
|
||||||
output(o, 1, "Renaming %s to %s and %s to %s instead",
|
output(o, 1, _("Renaming %s to %s and %s to %s instead"),
|
||||||
a->path, new_path1, b->path, new_path2);
|
a->path, new_path1, b->path, new_path2);
|
||||||
remove_file(o, 0, path, 0);
|
remove_file(o, 0, path, 0);
|
||||||
update_file(o, 0, mfi_c1.sha, mfi_c1.mode, new_path1);
|
update_file(o, 0, mfi_c1.sha, mfi_c1.mode, new_path1);
|
||||||
@ -1451,8 +1461,8 @@ static int process_renames(struct merge_options *o,
|
|||||||
} else if (!sha_eq(dst_other.sha1, null_sha1)) {
|
} else if (!sha_eq(dst_other.sha1, null_sha1)) {
|
||||||
clean_merge = 0;
|
clean_merge = 0;
|
||||||
try_merge = 1;
|
try_merge = 1;
|
||||||
output(o, 1, "CONFLICT (rename/add): Rename %s->%s in %s. "
|
output(o, 1, _("CONFLICT (rename/add): Rename %s->%s in %s. "
|
||||||
"%s added in %s",
|
"%s added in %s"),
|
||||||
ren1_src, ren1_dst, branch1,
|
ren1_src, ren1_dst, branch1,
|
||||||
ren1_dst, branch2);
|
ren1_dst, branch2);
|
||||||
if (o->call_depth) {
|
if (o->call_depth) {
|
||||||
@ -1461,12 +1471,12 @@ static int process_renames(struct merge_options *o,
|
|||||||
ren1->pair->two->sha1, ren1->pair->two->mode,
|
ren1->pair->two->sha1, ren1->pair->two->mode,
|
||||||
dst_other.sha1, dst_other.mode,
|
dst_other.sha1, dst_other.mode,
|
||||||
branch1, branch2);
|
branch1, branch2);
|
||||||
output(o, 1, "Adding merged %s", ren1_dst);
|
output(o, 1, _("Adding merged %s"), ren1_dst);
|
||||||
update_file(o, 0, mfi.sha, mfi.mode, ren1_dst);
|
update_file(o, 0, mfi.sha, mfi.mode, ren1_dst);
|
||||||
try_merge = 0;
|
try_merge = 0;
|
||||||
} else {
|
} else {
|
||||||
char *new_path = unique_path(o, ren1_dst, branch2);
|
char *new_path = unique_path(o, ren1_dst, branch2);
|
||||||
output(o, 1, "Adding as %s instead", new_path);
|
output(o, 1, _("Adding as %s instead"), new_path);
|
||||||
update_file(o, 0, dst_other.sha1, dst_other.mode, new_path);
|
update_file(o, 0, dst_other.sha1, dst_other.mode, new_path);
|
||||||
free(new_path);
|
free(new_path);
|
||||||
}
|
}
|
||||||
@ -1517,10 +1527,10 @@ static int read_sha1_strbuf(const unsigned char *sha1, struct strbuf *dst)
|
|||||||
unsigned long size;
|
unsigned long size;
|
||||||
buf = read_sha1_file(sha1, &type, &size);
|
buf = read_sha1_file(sha1, &type, &size);
|
||||||
if (!buf)
|
if (!buf)
|
||||||
return error("cannot read object %s", sha1_to_hex(sha1));
|
return error(_("cannot read object %s"), sha1_to_hex(sha1));
|
||||||
if (type != OBJ_BLOB) {
|
if (type != OBJ_BLOB) {
|
||||||
free(buf);
|
free(buf);
|
||||||
return error("object %s is not a blob", sha1_to_hex(sha1));
|
return error(_("object %s is not a blob"), sha1_to_hex(sha1));
|
||||||
}
|
}
|
||||||
strbuf_attach(dst, buf, size, size + 1);
|
strbuf_attach(dst, buf, size, size + 1);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1568,7 +1578,7 @@ static void handle_modify_delete(struct merge_options *o,
|
|||||||
o_sha, o_mode,
|
o_sha, o_mode,
|
||||||
a_sha, a_mode,
|
a_sha, a_mode,
|
||||||
b_sha, b_mode,
|
b_sha, b_mode,
|
||||||
"modify", "modified");
|
_("modify"), _("modified"));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int merge_content(struct merge_options *o,
|
static int merge_content(struct merge_options *o,
|
||||||
@ -1578,14 +1588,14 @@ static int merge_content(struct merge_options *o,
|
|||||||
unsigned char *b_sha, int b_mode,
|
unsigned char *b_sha, int b_mode,
|
||||||
struct rename_conflict_info *rename_conflict_info)
|
struct rename_conflict_info *rename_conflict_info)
|
||||||
{
|
{
|
||||||
const char *reason = "content";
|
const char *reason = _("content");
|
||||||
const char *path1 = NULL, *path2 = NULL;
|
const char *path1 = NULL, *path2 = NULL;
|
||||||
struct merge_file_info mfi;
|
struct merge_file_info mfi;
|
||||||
struct diff_filespec one, a, b;
|
struct diff_filespec one, a, b;
|
||||||
unsigned df_conflict_remains = 0;
|
unsigned df_conflict_remains = 0;
|
||||||
|
|
||||||
if (!o_sha) {
|
if (!o_sha) {
|
||||||
reason = "add/add";
|
reason = _("add/add");
|
||||||
o_sha = (unsigned char *)null_sha1;
|
o_sha = (unsigned char *)null_sha1;
|
||||||
}
|
}
|
||||||
one.path = a.path = b.path = (char *)path;
|
one.path = a.path = b.path = (char *)path;
|
||||||
@ -1619,7 +1629,7 @@ static int merge_content(struct merge_options *o,
|
|||||||
if (mfi.clean && !df_conflict_remains &&
|
if (mfi.clean && !df_conflict_remains &&
|
||||||
sha_eq(mfi.sha, a_sha) && mfi.mode == a_mode) {
|
sha_eq(mfi.sha, a_sha) && mfi.mode == a_mode) {
|
||||||
int path_renamed_outside_HEAD;
|
int path_renamed_outside_HEAD;
|
||||||
output(o, 3, "Skipped %s (merged same as existing)", path);
|
output(o, 3, _("Skipped %s (merged same as existing)"), path);
|
||||||
/*
|
/*
|
||||||
* The content merge resulted in the same file contents we
|
* The content merge resulted in the same file contents we
|
||||||
* already had. We can return early if those file contents
|
* already had. We can return early if those file contents
|
||||||
@ -1633,12 +1643,12 @@ static int merge_content(struct merge_options *o,
|
|||||||
return mfi.clean;
|
return mfi.clean;
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
output(o, 2, "Auto-merging %s", path);
|
output(o, 2, _("Auto-merging %s"), path);
|
||||||
|
|
||||||
if (!mfi.clean) {
|
if (!mfi.clean) {
|
||||||
if (S_ISGITLINK(mfi.mode))
|
if (S_ISGITLINK(mfi.mode))
|
||||||
reason = "submodule";
|
reason = _("submodule");
|
||||||
output(o, 1, "CONFLICT (%s): Merge conflict in %s",
|
output(o, 1, _("CONFLICT (%s): Merge conflict in %s"),
|
||||||
reason, path);
|
reason, path);
|
||||||
if (rename_conflict_info && !df_conflict_remains)
|
if (rename_conflict_info && !df_conflict_remains)
|
||||||
update_stages(path, &one, &a, &b);
|
update_stages(path, &one, &a, &b);
|
||||||
@ -1664,7 +1674,7 @@ static int merge_content(struct merge_options *o,
|
|||||||
|
|
||||||
}
|
}
|
||||||
new_path = unique_path(o, path, rename_conflict_info->branch1);
|
new_path = unique_path(o, path, rename_conflict_info->branch1);
|
||||||
output(o, 1, "Adding as %s instead", new_path);
|
output(o, 1, _("Adding as %s instead"), new_path);
|
||||||
update_file(o, 0, mfi.sha, mfi.mode, new_path);
|
update_file(o, 0, mfi.sha, mfi.mode, new_path);
|
||||||
free(new_path);
|
free(new_path);
|
||||||
mfi.clean = 0;
|
mfi.clean = 0;
|
||||||
@ -1728,7 +1738,7 @@ static int process_entry(struct merge_options *o,
|
|||||||
/* Deleted in both or deleted in one and
|
/* Deleted in both or deleted in one and
|
||||||
* unchanged in the other */
|
* unchanged in the other */
|
||||||
if (a_sha)
|
if (a_sha)
|
||||||
output(o, 2, "Removing %s", path);
|
output(o, 2, _("Removing %s"), path);
|
||||||
/* do not touch working file if it did not exist */
|
/* do not touch working file if it did not exist */
|
||||||
remove_file(o, 1, path, !a_sha);
|
remove_file(o, 1, path, !a_sha);
|
||||||
} else {
|
} else {
|
||||||
@ -1753,19 +1763,19 @@ static int process_entry(struct merge_options *o,
|
|||||||
other_branch = o->branch2;
|
other_branch = o->branch2;
|
||||||
mode = a_mode;
|
mode = a_mode;
|
||||||
sha = a_sha;
|
sha = a_sha;
|
||||||
conf = "file/directory";
|
conf = _("file/directory");
|
||||||
} else {
|
} else {
|
||||||
add_branch = o->branch2;
|
add_branch = o->branch2;
|
||||||
other_branch = o->branch1;
|
other_branch = o->branch1;
|
||||||
mode = b_mode;
|
mode = b_mode;
|
||||||
sha = b_sha;
|
sha = b_sha;
|
||||||
conf = "directory/file";
|
conf = _("directory/file");
|
||||||
}
|
}
|
||||||
if (dir_in_way(path, !o->call_depth)) {
|
if (dir_in_way(path, !o->call_depth)) {
|
||||||
char *new_path = unique_path(o, path, add_branch);
|
char *new_path = unique_path(o, path, add_branch);
|
||||||
clean_merge = 0;
|
clean_merge = 0;
|
||||||
output(o, 1, "CONFLICT (%s): There is a directory with name %s in %s. "
|
output(o, 1, _("CONFLICT (%s): There is a directory with name %s in %s. "
|
||||||
"Adding %s as %s",
|
"Adding %s as %s"),
|
||||||
conf, path, other_branch, path, new_path);
|
conf, path, other_branch, path, new_path);
|
||||||
if (o->call_depth)
|
if (o->call_depth)
|
||||||
remove_file_from_cache(path);
|
remove_file_from_cache(path);
|
||||||
@ -1774,7 +1784,7 @@ static int process_entry(struct merge_options *o,
|
|||||||
remove_file_from_cache(path);
|
remove_file_from_cache(path);
|
||||||
free(new_path);
|
free(new_path);
|
||||||
} else {
|
} else {
|
||||||
output(o, 2, "Adding %s", path);
|
output(o, 2, _("Adding %s"), path);
|
||||||
/* do not overwrite file if already present */
|
/* do not overwrite file if already present */
|
||||||
update_file_flags(o, sha, mode, path, 1, !a_sha);
|
update_file_flags(o, sha, mode, path, 1, !a_sha);
|
||||||
}
|
}
|
||||||
@ -1791,7 +1801,7 @@ static int process_entry(struct merge_options *o,
|
|||||||
*/
|
*/
|
||||||
remove_file(o, 1, path, !a_mode);
|
remove_file(o, 1, path, !a_mode);
|
||||||
} else
|
} else
|
||||||
die("Fatal merge failure, shouldn't happen.");
|
die(_("Fatal merge failure, shouldn't happen."));
|
||||||
|
|
||||||
return clean_merge;
|
return clean_merge;
|
||||||
}
|
}
|
||||||
@ -1810,7 +1820,7 @@ int merge_trees(struct merge_options *o,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (sha_eq(common->object.sha1, merge->object.sha1)) {
|
if (sha_eq(common->object.sha1, merge->object.sha1)) {
|
||||||
output(o, 0, "Already up-to-date!");
|
output(o, 0, _("Already up-to-date!"));
|
||||||
*result = head;
|
*result = head;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -1819,7 +1829,7 @@ int merge_trees(struct merge_options *o,
|
|||||||
|
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
if (show(o, 4) || o->call_depth)
|
if (show(o, 4) || o->call_depth)
|
||||||
die("merging of trees %s and %s failed",
|
die(_("merging of trees %s and %s failed"),
|
||||||
sha1_to_hex(head->object.sha1),
|
sha1_to_hex(head->object.sha1),
|
||||||
sha1_to_hex(merge->object.sha1));
|
sha1_to_hex(merge->object.sha1));
|
||||||
else
|
else
|
||||||
@ -1849,7 +1859,7 @@ int merge_trees(struct merge_options *o,
|
|||||||
for (i = 0; i < entries->nr; i++) {
|
for (i = 0; i < entries->nr; i++) {
|
||||||
struct stage_data *e = entries->items[i].util;
|
struct stage_data *e = entries->items[i].util;
|
||||||
if (!e->processed)
|
if (!e->processed)
|
||||||
die("Unprocessed path??? %s",
|
die(_("Unprocessed path??? %s"),
|
||||||
entries->items[i].string);
|
entries->items[i].string);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1894,7 +1904,7 @@ int merge_recursive(struct merge_options *o,
|
|||||||
int clean;
|
int clean;
|
||||||
|
|
||||||
if (show(o, 4)) {
|
if (show(o, 4)) {
|
||||||
output(o, 4, "Merging:");
|
output(o, 4, _("Merging:"));
|
||||||
output_commit_title(o, h1);
|
output_commit_title(o, h1);
|
||||||
output_commit_title(o, h2);
|
output_commit_title(o, h2);
|
||||||
}
|
}
|
||||||
@ -1905,7 +1915,7 @@ int merge_recursive(struct merge_options *o,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (show(o, 5)) {
|
if (show(o, 5)) {
|
||||||
output(o, 5, "found %u common ancestor(s):", commit_list_count(ca));
|
output(o, 5, _("found %u common ancestor(s):"), commit_list_count(ca));
|
||||||
for (iter = ca; iter; iter = iter->next)
|
for (iter = ca; iter; iter = iter->next)
|
||||||
output_commit_title(o, iter->item);
|
output_commit_title(o, iter->item);
|
||||||
}
|
}
|
||||||
@ -1941,7 +1951,7 @@ int merge_recursive(struct merge_options *o,
|
|||||||
o->call_depth--;
|
o->call_depth--;
|
||||||
|
|
||||||
if (!merged_common_ancestors)
|
if (!merged_common_ancestors)
|
||||||
die("merge returned no commit");
|
die(_("merge returned no commit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
discard_cache();
|
discard_cache();
|
||||||
@ -1998,7 +2008,7 @@ int merge_recursive_generic(struct merge_options *o,
|
|||||||
for (i = 0; i < num_base_list; ++i) {
|
for (i = 0; i < num_base_list; ++i) {
|
||||||
struct commit *base;
|
struct commit *base;
|
||||||
if (!(base = get_ref(base_list[i], sha1_to_hex(base_list[i]))))
|
if (!(base = get_ref(base_list[i], sha1_to_hex(base_list[i]))))
|
||||||
return error("Could not parse object '%s'",
|
return error(_("Could not parse object '%s'"),
|
||||||
sha1_to_hex(base_list[i]));
|
sha1_to_hex(base_list[i]));
|
||||||
commit_list_insert(base, &ca);
|
commit_list_insert(base, &ca);
|
||||||
}
|
}
|
||||||
@ -2010,7 +2020,7 @@ int merge_recursive_generic(struct merge_options *o,
|
|||||||
if (active_cache_changed &&
|
if (active_cache_changed &&
|
||||||
(write_cache(index_fd, active_cache, active_nr) ||
|
(write_cache(index_fd, active_cache, active_nr) ||
|
||||||
commit_locked_index(lock)))
|
commit_locked_index(lock)))
|
||||||
return error("Unable to write index.");
|
return error(_("Unable to write index."));
|
||||||
|
|
||||||
return clean ? 0 : 1;
|
return clean ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
@ -51,16 +51,16 @@ test_expect_success 'eval_gettext: our eval_gettext() fallback can interpolate v
|
|||||||
test_expect_success 'eval_gettext: our eval_gettext() fallback can interpolate variables with spaces' '
|
test_expect_success 'eval_gettext: our eval_gettext() fallback can interpolate variables with spaces' '
|
||||||
cmdline="git am" &&
|
cmdline="git am" &&
|
||||||
export cmdline;
|
export cmdline;
|
||||||
printf "When you have resolved this problem run git am --resolved." >expect &&
|
printf "When you have resolved this problem, run git am --resolved." >expect &&
|
||||||
eval_gettext "When you have resolved this problem run \$cmdline --resolved." >actual
|
eval_gettext "When you have resolved this problem, run \$cmdline --resolved." >actual
|
||||||
test_i18ncmp expect actual
|
test_i18ncmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'eval_gettext: our eval_gettext() fallback can interpolate variables with spaces and quotes' '
|
test_expect_success 'eval_gettext: our eval_gettext() fallback can interpolate variables with spaces and quotes' '
|
||||||
cmdline="git am" &&
|
cmdline="git am" &&
|
||||||
export cmdline;
|
export cmdline;
|
||||||
printf "When you have resolved this problem run \"git am --resolved\"." >expect &&
|
printf "When you have resolved this problem, run \"git am --resolved\"." >expect &&
|
||||||
eval_gettext "When you have resolved this problem run \"\$cmdline --resolved\"." >actual
|
eval_gettext "When you have resolved this problem, run \"\$cmdline --resolved\"." >actual
|
||||||
test_i18ncmp expect actual
|
test_i18ncmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -68,24 +68,24 @@ test_expect_success 'rebase against master' '
|
|||||||
|
|
||||||
test_expect_success 'rebase against master twice' '
|
test_expect_success 'rebase against master twice' '
|
||||||
git rebase master >out &&
|
git rebase master >out &&
|
||||||
grep "Current branch my-topic-branch is up to date" out
|
test_i18ngrep "Current branch my-topic-branch is up to date" out
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'rebase against master twice with --force' '
|
test_expect_success 'rebase against master twice with --force' '
|
||||||
git rebase --force-rebase master >out &&
|
git rebase --force-rebase master >out &&
|
||||||
grep "Current branch my-topic-branch is up to date, rebase forced" out
|
test_i18ngrep "Current branch my-topic-branch is up to date, rebase forced" out
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'rebase against master twice from another branch' '
|
test_expect_success 'rebase against master twice from another branch' '
|
||||||
git checkout my-topic-branch^ &&
|
git checkout my-topic-branch^ &&
|
||||||
git rebase master my-topic-branch >out &&
|
git rebase master my-topic-branch >out &&
|
||||||
grep "Current branch my-topic-branch is up to date" out
|
test_i18ngrep "Current branch my-topic-branch is up to date" out
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'rebase fast-forward to master' '
|
test_expect_success 'rebase fast-forward to master' '
|
||||||
git checkout my-topic-branch^ &&
|
git checkout my-topic-branch^ &&
|
||||||
git rebase my-topic-branch >out &&
|
git rebase my-topic-branch >out &&
|
||||||
grep "Fast-forwarded HEAD to my-topic-branch" out
|
test_i18ngrep "Fast-forwarded HEAD to my-topic-branch" out
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'the rebase operation should not have destroyed author information' '
|
test_expect_success 'the rebase operation should not have destroyed author information' '
|
||||||
|
@ -858,7 +858,7 @@ test_expect_success 'rebase -ix with --autosquash' '
|
|||||||
test_expect_success 'rebase --exec without -i shows error message' '
|
test_expect_success 'rebase --exec without -i shows error message' '
|
||||||
git reset --hard execute &&
|
git reset --hard execute &&
|
||||||
test_must_fail git rebase --exec "git show HEAD" HEAD~2 2>actual &&
|
test_must_fail git rebase --exec "git show HEAD" HEAD~2 2>actual &&
|
||||||
echo "--exec option must be used with --interactive option" >expected &&
|
echo "The --exec option must be used with the --interactive option" >expected &&
|
||||||
test_i18ncmp expected actual
|
test_i18ncmp expected actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -62,9 +62,16 @@ test_expect_success 'rebase -n overrides config rebase.stat config' '
|
|||||||
! grep "^ fileX | *1 +$" diffstat.txt
|
! grep "^ fileX | *1 +$" diffstat.txt
|
||||||
'
|
'
|
||||||
|
|
||||||
|
# Output to stderr:
|
||||||
|
#
|
||||||
|
# "Does not point to a valid commit: invalid-ref"
|
||||||
|
#
|
||||||
|
# NEEDSWORK: This "grep" is fine in real non-C locales, but
|
||||||
|
# GETTEXT_POISON poisons the refname along with the enclosing
|
||||||
|
# error message.
|
||||||
test_expect_success 'rebase --onto outputs the invalid ref' '
|
test_expect_success 'rebase --onto outputs the invalid ref' '
|
||||||
test_must_fail git rebase --onto invalid-ref HEAD HEAD 2>err &&
|
test_must_fail git rebase --onto invalid-ref HEAD HEAD 2>err &&
|
||||||
grep "invalid-ref" err
|
test_i18ngrep "invalid-ref" err
|
||||||
'
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
@ -242,10 +242,10 @@ test_expect_success 'merge of identical changes in a renamed file' '
|
|||||||
rm -f A M N &&
|
rm -f A M N &&
|
||||||
git reset --hard &&
|
git reset --hard &&
|
||||||
git checkout change+rename &&
|
git checkout change+rename &&
|
||||||
GIT_MERGE_VERBOSITY=3 git merge change | grep "^Skipped B" &&
|
GIT_MERGE_VERBOSITY=3 git merge change | test_i18ngrep "^Skipped B" &&
|
||||||
git reset --hard HEAD^ &&
|
git reset --hard HEAD^ &&
|
||||||
git checkout change &&
|
git checkout change &&
|
||||||
GIT_MERGE_VERBOSITY=3 git merge change+rename | grep "^Skipped B"
|
GIT_MERGE_VERBOSITY=3 git merge change+rename | test_i18ngrep "^Skipped B"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'setup for rename + d/f conflicts' '
|
test_expect_success 'setup for rename + d/f conflicts' '
|
||||||
@ -303,9 +303,9 @@ test_expect_success 'Rename+D/F conflict; renamed file merges but dir in way' '
|
|||||||
git checkout -q renamed-file-has-no-conflicts^0 &&
|
git checkout -q renamed-file-has-no-conflicts^0 &&
|
||||||
test_must_fail git merge --strategy=recursive dir-in-way >output &&
|
test_must_fail git merge --strategy=recursive dir-in-way >output &&
|
||||||
|
|
||||||
grep "CONFLICT (modify/delete): dir/file-in-the-way" output &&
|
test_i18ngrep "CONFLICT (modify/delete): dir/file-in-the-way" output &&
|
||||||
grep "Auto-merging dir" output &&
|
test_i18ngrep "Auto-merging dir" output &&
|
||||||
grep "Adding as dir~HEAD instead" output &&
|
test_i18ngrep "Adding as dir~HEAD instead" output &&
|
||||||
|
|
||||||
test 3 -eq "$(git ls-files -u | wc -l)" &&
|
test 3 -eq "$(git ls-files -u | wc -l)" &&
|
||||||
test 2 -eq "$(git ls-files -u dir/file-in-the-way | wc -l)" &&
|
test 2 -eq "$(git ls-files -u dir/file-in-the-way | wc -l)" &&
|
||||||
@ -325,9 +325,9 @@ test_expect_success 'Same as previous, but merged other way' '
|
|||||||
test_must_fail git merge --strategy=recursive renamed-file-has-no-conflicts >output 2>errors &&
|
test_must_fail git merge --strategy=recursive renamed-file-has-no-conflicts >output 2>errors &&
|
||||||
|
|
||||||
! grep "error: refusing to lose untracked file at" errors &&
|
! grep "error: refusing to lose untracked file at" errors &&
|
||||||
grep "CONFLICT (modify/delete): dir/file-in-the-way" output &&
|
test_i18ngrep "CONFLICT (modify/delete): dir/file-in-the-way" output &&
|
||||||
grep "Auto-merging dir" output &&
|
test_i18ngrep "Auto-merging dir" output &&
|
||||||
grep "Adding as dir~renamed-file-has-no-conflicts instead" output &&
|
test_i18ngrep "Adding as dir~renamed-file-has-no-conflicts instead" output &&
|
||||||
|
|
||||||
test 3 -eq "$(git ls-files -u | wc -l)" &&
|
test 3 -eq "$(git ls-files -u | wc -l)" &&
|
||||||
test 2 -eq "$(git ls-files -u dir/file-in-the-way | wc -l)" &&
|
test 2 -eq "$(git ls-files -u dir/file-in-the-way | wc -l)" &&
|
||||||
|
@ -380,7 +380,7 @@ test_expect_success 'handle rename/rename (2to1) conflict correctly' '
|
|||||||
git checkout B^0 &&
|
git checkout B^0 &&
|
||||||
|
|
||||||
test_must_fail git merge -s recursive C^0 >out &&
|
test_must_fail git merge -s recursive C^0 >out &&
|
||||||
grep "CONFLICT (rename/rename)" out &&
|
test_i18ngrep "CONFLICT (rename/rename)" out &&
|
||||||
|
|
||||||
test 2 -eq $(git ls-files -s | wc -l) &&
|
test 2 -eq $(git ls-files -s | wc -l) &&
|
||||||
test 2 -eq $(git ls-files -u | wc -l) &&
|
test 2 -eq $(git ls-files -u | wc -l) &&
|
||||||
|
Loading…
Reference in New Issue
Block a user