зеркало из https://github.com/microsoft/git.git
Merge branch 'nd/i18n'
More _("i18n") markings. * nd/i18n: fsck: mark strings for translation fsck: reduce word legos to help i18n parse-options.c: mark more strings for translation parse-options.c: turn some die() to BUG() parse-options: replace opterror() with optname() repack: mark more strings for translation remote.c: mark messages for translation remote.c: turn some error() or die() to BUG() reflog: mark strings for translation read-cache.c: add missing colon separators read-cache.c: mark more strings for translation read-cache.c: turn die("internal error") to BUG() attr.c: mark more string for translation archive.c: mark more strings for translation alias.c: mark split_cmdline_strerror() strings for translation git.c: mark more strings for translation
This commit is contained in:
Коммит
3813a89fae
4
alias.c
4
alias.c
|
@ -47,8 +47,8 @@ void list_aliases(struct string_list *list)
|
|||
#define SPLIT_CMDLINE_BAD_ENDING 1
|
||||
#define SPLIT_CMDLINE_UNCLOSED_QUOTE 2
|
||||
static const char *split_cmdline_errors[] = {
|
||||
"cmdline ends with \\",
|
||||
"unclosed quote"
|
||||
N_("cmdline ends with \\"),
|
||||
N_("unclosed quote")
|
||||
};
|
||||
|
||||
int split_cmdline(char *cmdline, const char ***argv)
|
||||
|
|
|
@ -391,12 +391,12 @@ static void parse_treeish_arg(const char **argv,
|
|||
int refnamelen = colon - name;
|
||||
|
||||
if (!dwim_ref(name, refnamelen, &oid, &ref))
|
||||
die("no such ref: %.*s", refnamelen, name);
|
||||
die(_("no such ref: %.*s"), refnamelen, name);
|
||||
free(ref);
|
||||
}
|
||||
|
||||
if (get_oid(name, &oid))
|
||||
die("Not a valid object name");
|
||||
die(_("not a valid object name: %s"), name);
|
||||
|
||||
commit = lookup_commit_reference_gently(ar_args->repo, &oid, 1);
|
||||
if (commit) {
|
||||
|
@ -409,7 +409,7 @@ static void parse_treeish_arg(const char **argv,
|
|||
|
||||
tree = parse_tree_indirect(&oid);
|
||||
if (tree == NULL)
|
||||
die("not a tree object");
|
||||
die(_("not a tree object: %s"), oid_to_hex(&oid));
|
||||
|
||||
if (prefix) {
|
||||
struct object_id tree_oid;
|
||||
|
@ -419,7 +419,7 @@ static void parse_treeish_arg(const char **argv,
|
|||
err = get_tree_entry(&tree->object.oid, prefix, &tree_oid,
|
||||
&mode);
|
||||
if (err || !S_ISDIR(mode))
|
||||
die("current working directory is untracked");
|
||||
die(_("current working directory is untracked"));
|
||||
|
||||
tree = parse_tree_indirect(&tree_oid);
|
||||
}
|
||||
|
|
4
attr.c
4
attr.c
|
@ -366,8 +366,8 @@ static struct match_attr *parse_attr_line(const char *line, const char *src,
|
|||
if (strlen(ATTRIBUTE_MACRO_PREFIX) < namelen &&
|
||||
starts_with(name, ATTRIBUTE_MACRO_PREFIX)) {
|
||||
if (!macro_ok) {
|
||||
fprintf(stderr, "%s not allowed: %s:%d\n",
|
||||
name, src, lineno);
|
||||
fprintf_ln(stderr, _("%s not allowed: %s:%d"),
|
||||
name, src, lineno);
|
||||
goto fail_return;
|
||||
}
|
||||
is_macro = 1;
|
||||
|
|
160
builtin/fsck.c
160
builtin/fsck.c
|
@ -51,16 +51,24 @@ static int name_objects;
|
|||
|
||||
static const char *describe_object(struct object *obj)
|
||||
{
|
||||
static struct strbuf buf = STRBUF_INIT;
|
||||
char *name = name_objects ?
|
||||
lookup_decoration(fsck_walk_options.object_names, obj) : NULL;
|
||||
static struct strbuf bufs[] = {
|
||||
STRBUF_INIT, STRBUF_INIT, STRBUF_INIT, STRBUF_INIT
|
||||
};
|
||||
static int b = 0;
|
||||
struct strbuf *buf;
|
||||
char *name = NULL;
|
||||
|
||||
strbuf_reset(&buf);
|
||||
strbuf_addstr(&buf, oid_to_hex(&obj->oid));
|
||||
if (name_objects)
|
||||
name = lookup_decoration(fsck_walk_options.object_names, obj);
|
||||
|
||||
buf = bufs + b;
|
||||
b = (b + 1) % ARRAY_SIZE(bufs);
|
||||
strbuf_reset(buf);
|
||||
strbuf_addstr(buf, oid_to_hex(&obj->oid));
|
||||
if (name)
|
||||
strbuf_addf(&buf, " (%s)", name);
|
||||
strbuf_addf(buf, " (%s)", name);
|
||||
|
||||
return buf.buf;
|
||||
return buf->buf;
|
||||
}
|
||||
|
||||
static const char *printable_type(struct object *obj)
|
||||
|
@ -76,7 +84,7 @@ static const char *printable_type(struct object *obj)
|
|||
|
||||
ret = type_name(obj->type);
|
||||
if (!ret)
|
||||
ret = "unknown";
|
||||
ret = _("unknown");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -104,25 +112,32 @@ static int fsck_config(const char *var, const char *value, void *cb)
|
|||
return git_default_config(var, value, cb);
|
||||
}
|
||||
|
||||
static void objreport(struct object *obj, const char *msg_type,
|
||||
const char *err)
|
||||
{
|
||||
fprintf(stderr, "%s in %s %s: %s\n",
|
||||
msg_type, printable_type(obj), describe_object(obj), err);
|
||||
}
|
||||
|
||||
static int objerror(struct object *obj, const char *err)
|
||||
{
|
||||
errors_found |= ERROR_OBJECT;
|
||||
objreport(obj, "error", err);
|
||||
/* TRANSLATORS: e.g. error in tree 01bfda: <more explanation> */
|
||||
fprintf_ln(stderr, _("error in %s %s: %s"),
|
||||
printable_type(obj), describe_object(obj), err);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int fsck_error_func(struct fsck_options *o,
|
||||
struct object *obj, int type, const char *message)
|
||||
{
|
||||
objreport(obj, (type == FSCK_WARN) ? "warning" : "error", message);
|
||||
return (type == FSCK_WARN) ? 0 : 1;
|
||||
switch (type) {
|
||||
case FSCK_WARN:
|
||||
/* TRANSLATORS: e.g. warning in tree 01bfda: <more explanation> */
|
||||
fprintf_ln(stderr, _("warning in %s %s: %s"),
|
||||
printable_type(obj), describe_object(obj), message);
|
||||
return 0;
|
||||
case FSCK_ERROR:
|
||||
/* TRANSLATORS: e.g. error in tree 01bfda: <more explanation> */
|
||||
fprintf_ln(stderr, _("error in %s %s: %s"),
|
||||
printable_type(obj), describe_object(obj), message);
|
||||
return 1;
|
||||
default:
|
||||
BUG("%d (FSCK_IGNORE?) should never trigger this callback", type);
|
||||
}
|
||||
}
|
||||
|
||||
static struct object_array pending;
|
||||
|
@ -138,17 +153,18 @@ static int mark_object(struct object *obj, int type, void *data, struct fsck_opt
|
|||
*/
|
||||
if (!obj) {
|
||||
/* ... these references to parent->fld are safe here */
|
||||
printf("broken link from %7s %s\n",
|
||||
printable_type(parent), describe_object(parent));
|
||||
printf("broken link from %7s %s\n",
|
||||
(type == OBJ_ANY ? "unknown" : type_name(type)), "unknown");
|
||||
printf_ln(_("broken link from %7s %s"),
|
||||
printable_type(parent), describe_object(parent));
|
||||
printf_ln(_("broken link from %7s %s"),
|
||||
(type == OBJ_ANY ? _("unknown") : type_name(type)),
|
||||
_("unknown"));
|
||||
errors_found |= ERROR_REACHABLE;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (type != OBJ_ANY && obj->type != type)
|
||||
/* ... and the reference to parent is safe here */
|
||||
objerror(parent, "wrong object type in link");
|
||||
objerror(parent, _("wrong object type in link"));
|
||||
|
||||
if (obj->flags & REACHABLE)
|
||||
return 0;
|
||||
|
@ -164,10 +180,12 @@ static int mark_object(struct object *obj, int type, void *data, struct fsck_opt
|
|||
|
||||
if (!(obj->flags & HAS_OBJ)) {
|
||||
if (parent && !has_object_file(&obj->oid)) {
|
||||
printf("broken link from %7s %s\n",
|
||||
printable_type(parent), describe_object(parent));
|
||||
printf(" to %7s %s\n",
|
||||
printable_type(obj), describe_object(obj));
|
||||
printf_ln(_("broken link from %7s %s\n"
|
||||
" to %7s %s"),
|
||||
printable_type(parent),
|
||||
describe_object(parent),
|
||||
printable_type(obj),
|
||||
describe_object(obj));
|
||||
errors_found |= ERROR_REACHABLE;
|
||||
}
|
||||
return 1;
|
||||
|
@ -231,8 +249,8 @@ static void check_reachable_object(struct object *obj)
|
|||
return;
|
||||
if (has_object_pack(&obj->oid))
|
||||
return; /* it is in pack - forget about it */
|
||||
printf("missing %s %s\n", printable_type(obj),
|
||||
describe_object(obj));
|
||||
printf_ln(_("missing %s %s"), printable_type(obj),
|
||||
describe_object(obj));
|
||||
errors_found |= ERROR_REACHABLE;
|
||||
return;
|
||||
}
|
||||
|
@ -257,8 +275,8 @@ static void check_unreachable_object(struct object *obj)
|
|||
* since this is something that is prunable.
|
||||
*/
|
||||
if (show_unreachable) {
|
||||
printf("unreachable %s %s\n", printable_type(obj),
|
||||
describe_object(obj));
|
||||
printf_ln(_("unreachable %s %s"), printable_type(obj),
|
||||
describe_object(obj));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -276,8 +294,8 @@ static void check_unreachable_object(struct object *obj)
|
|||
*/
|
||||
if (!(obj->flags & USED)) {
|
||||
if (show_dangling)
|
||||
printf("dangling %s %s\n", printable_type(obj),
|
||||
describe_object(obj));
|
||||
printf_ln(_("dangling %s %s"), printable_type(obj),
|
||||
describe_object(obj));
|
||||
if (write_lost_and_found) {
|
||||
char *filename = git_pathdup("lost-found/%s/%s",
|
||||
obj->type == OBJ_COMMIT ? "commit" : "other",
|
||||
|
@ -285,18 +303,18 @@ static void check_unreachable_object(struct object *obj)
|
|||
FILE *f;
|
||||
|
||||
if (safe_create_leading_directories_const(filename)) {
|
||||
error("Could not create lost-found");
|
||||
error(_("could not create lost-found"));
|
||||
free(filename);
|
||||
return;
|
||||
}
|
||||
f = xfopen(filename, "w");
|
||||
if (obj->type == OBJ_BLOB) {
|
||||
if (stream_blob_to_fd(fileno(f), &obj->oid, NULL, 1))
|
||||
die_errno("Could not write '%s'", filename);
|
||||
die_errno(_("could not write '%s'"), filename);
|
||||
} else
|
||||
fprintf(f, "%s\n", describe_object(obj));
|
||||
if (fclose(f))
|
||||
die_errno("Could not finish '%s'",
|
||||
die_errno(_("could not finish '%s'"),
|
||||
filename);
|
||||
free(filename);
|
||||
}
|
||||
|
@ -313,7 +331,7 @@ static void check_unreachable_object(struct object *obj)
|
|||
static void check_object(struct object *obj)
|
||||
{
|
||||
if (verbose)
|
||||
fprintf(stderr, "Checking %s\n", describe_object(obj));
|
||||
fprintf_ln(stderr, _("Checking %s"), describe_object(obj));
|
||||
|
||||
if (obj->flags & REACHABLE)
|
||||
check_reachable_object(obj);
|
||||
|
@ -331,7 +349,7 @@ static void check_connectivity(void)
|
|||
/* Look up all the requirements, warn about missing objects.. */
|
||||
max = get_max_object_index();
|
||||
if (verbose)
|
||||
fprintf(stderr, "Checking connectivity (%d objects)\n", max);
|
||||
fprintf_ln(stderr, _("Checking connectivity (%d objects)"), max);
|
||||
|
||||
for (i = 0; i < max; i++) {
|
||||
struct object *obj = get_indexed_object(i);
|
||||
|
@ -350,11 +368,11 @@ static int fsck_obj(struct object *obj, void *buffer, unsigned long size)
|
|||
obj->flags |= SEEN;
|
||||
|
||||
if (verbose)
|
||||
fprintf(stderr, "Checking %s %s\n",
|
||||
printable_type(obj), describe_object(obj));
|
||||
fprintf_ln(stderr, _("Checking %s %s"),
|
||||
printable_type(obj), describe_object(obj));
|
||||
|
||||
if (fsck_walk(obj, NULL, &fsck_obj_options))
|
||||
objerror(obj, "broken links");
|
||||
objerror(obj, _("broken links"));
|
||||
err = fsck_object(obj, buffer, size, &fsck_obj_options);
|
||||
if (err)
|
||||
goto out;
|
||||
|
@ -363,17 +381,19 @@ static int fsck_obj(struct object *obj, void *buffer, unsigned long size)
|
|||
struct commit *commit = (struct commit *) obj;
|
||||
|
||||
if (!commit->parents && show_root)
|
||||
printf("root %s\n", describe_object(&commit->object));
|
||||
printf_ln(_("root %s"),
|
||||
describe_object(&commit->object));
|
||||
}
|
||||
|
||||
if (obj->type == OBJ_TAG) {
|
||||
struct tag *tag = (struct tag *) obj;
|
||||
|
||||
if (show_tags && tag->tagged) {
|
||||
printf("tagged %s %s", printable_type(tag->tagged),
|
||||
describe_object(tag->tagged));
|
||||
printf(" (%s) in %s\n", tag->tag,
|
||||
describe_object(&tag->object));
|
||||
printf_ln(_("tagged %s %s (%s) in %s"),
|
||||
printable_type(tag->tagged),
|
||||
describe_object(tag->tagged),
|
||||
tag->tag,
|
||||
describe_object(&tag->object));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -397,7 +417,8 @@ static int fsck_obj_buffer(const struct object_id *oid, enum object_type type,
|
|||
eaten);
|
||||
if (!obj) {
|
||||
errors_found |= ERROR_OBJECT;
|
||||
return error("%s: object corrupt or missing", oid_to_hex(oid));
|
||||
return error(_("%s: object corrupt or missing"),
|
||||
oid_to_hex(oid));
|
||||
}
|
||||
obj->flags &= ~(REACHABLE | SEEN);
|
||||
obj->flags |= HAS_OBJ;
|
||||
|
@ -421,7 +442,8 @@ static void fsck_handle_reflog_oid(const char *refname, struct object_id *oid,
|
|||
obj->flags |= USED;
|
||||
mark_object_reachable(obj);
|
||||
} else if (!is_promisor_object(oid)) {
|
||||
error("%s: invalid reflog entry %s", refname, oid_to_hex(oid));
|
||||
error(_("%s: invalid reflog entry %s"),
|
||||
refname, oid_to_hex(oid));
|
||||
errors_found |= ERROR_REACHABLE;
|
||||
}
|
||||
}
|
||||
|
@ -434,8 +456,8 @@ static int fsck_handle_reflog_ent(struct object_id *ooid, struct object_id *noid
|
|||
const char *refname = cb_data;
|
||||
|
||||
if (verbose)
|
||||
fprintf(stderr, "Checking reflog %s->%s\n",
|
||||
oid_to_hex(ooid), oid_to_hex(noid));
|
||||
fprintf_ln(stderr, _("Checking reflog %s->%s"),
|
||||
oid_to_hex(ooid), oid_to_hex(noid));
|
||||
|
||||
fsck_handle_reflog_oid(refname, ooid, 0);
|
||||
fsck_handle_reflog_oid(refname, noid, timestamp);
|
||||
|
@ -468,13 +490,14 @@ static int fsck_handle_ref(const char *refname, const struct object_id *oid,
|
|||
default_refs++;
|
||||
return 0;
|
||||
}
|
||||
error("%s: invalid sha1 pointer %s", refname, oid_to_hex(oid));
|
||||
error(_("%s: invalid sha1 pointer %s"),
|
||||
refname, oid_to_hex(oid));
|
||||
errors_found |= ERROR_REACHABLE;
|
||||
/* We'll continue with the rest despite the error.. */
|
||||
return 0;
|
||||
}
|
||||
if (obj->type != OBJ_COMMIT && is_branch(refname)) {
|
||||
error("%s: not a commit", refname);
|
||||
error(_("%s: not a commit"), refname);
|
||||
errors_found |= ERROR_REFS;
|
||||
}
|
||||
default_refs++;
|
||||
|
@ -529,7 +552,7 @@ static void get_default_heads(void)
|
|||
* "show_unreachable" flag.
|
||||
*/
|
||||
if (!default_refs) {
|
||||
fprintf(stderr, "notice: No default references\n");
|
||||
fprintf_ln(stderr, _("notice: No default references"));
|
||||
show_unreachable = 0;
|
||||
}
|
||||
}
|
||||
|
@ -544,7 +567,7 @@ static int fsck_loose(const struct object_id *oid, const char *path, void *data)
|
|||
|
||||
if (read_loose_object(path, oid, &type, &size, &contents) < 0) {
|
||||
errors_found |= ERROR_OBJECT;
|
||||
error("%s: object corrupt or missing: %s",
|
||||
error(_("%s: object corrupt or missing: %s"),
|
||||
oid_to_hex(oid), path);
|
||||
return 0; /* keep checking other objects */
|
||||
}
|
||||
|
@ -557,7 +580,7 @@ static int fsck_loose(const struct object_id *oid, const char *path, void *data)
|
|||
|
||||
if (!obj) {
|
||||
errors_found |= ERROR_OBJECT;
|
||||
error("%s: object could not be parsed: %s",
|
||||
error(_("%s: object could not be parsed: %s"),
|
||||
oid_to_hex(oid), path);
|
||||
if (!eaten)
|
||||
free(contents);
|
||||
|
@ -577,7 +600,7 @@ static int fsck_loose(const struct object_id *oid, const char *path, void *data)
|
|||
static int fsck_cruft(const char *basename, const char *path, void *data)
|
||||
{
|
||||
if (!starts_with(basename, "tmp_obj_"))
|
||||
fprintf(stderr, "bad sha1 file: %s\n", path);
|
||||
fprintf_ln(stderr, _("bad sha1 file: %s"), path);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -592,7 +615,7 @@ static void fsck_object_dir(const char *path)
|
|||
struct progress *progress = NULL;
|
||||
|
||||
if (verbose)
|
||||
fprintf(stderr, "Checking object directory\n");
|
||||
fprintf_ln(stderr, _("Checking object directory"));
|
||||
|
||||
if (show_progress)
|
||||
progress = start_progress(_("Checking object directories"), 256);
|
||||
|
@ -610,29 +633,30 @@ static int fsck_head_link(const char *head_ref_name,
|
|||
int null_is_error = 0;
|
||||
|
||||
if (verbose)
|
||||
fprintf(stderr, "Checking %s link\n", head_ref_name);
|
||||
fprintf_ln(stderr, _("Checking %s link"), head_ref_name);
|
||||
|
||||
*head_points_at = resolve_ref_unsafe(head_ref_name, 0, head_oid, NULL);
|
||||
if (!*head_points_at) {
|
||||
errors_found |= ERROR_REFS;
|
||||
return error("Invalid %s", head_ref_name);
|
||||
return error(_("invalid %s"), head_ref_name);
|
||||
}
|
||||
if (!strcmp(*head_points_at, head_ref_name))
|
||||
/* detached HEAD */
|
||||
null_is_error = 1;
|
||||
else if (!starts_with(*head_points_at, "refs/heads/")) {
|
||||
errors_found |= ERROR_REFS;
|
||||
return error("%s points to something strange (%s)",
|
||||
return error(_("%s points to something strange (%s)"),
|
||||
head_ref_name, *head_points_at);
|
||||
}
|
||||
if (is_null_oid(head_oid)) {
|
||||
if (null_is_error) {
|
||||
errors_found |= ERROR_REFS;
|
||||
return error("%s: detached HEAD points at nothing",
|
||||
return error(_("%s: detached HEAD points at nothing"),
|
||||
head_ref_name);
|
||||
}
|
||||
fprintf(stderr, "notice: %s points to an unborn branch (%s)\n",
|
||||
head_ref_name, *head_points_at + 11);
|
||||
fprintf_ln(stderr,
|
||||
_("notice: %s points to an unborn branch (%s)"),
|
||||
head_ref_name, *head_points_at + 11);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -643,12 +667,12 @@ static int fsck_cache_tree(struct cache_tree *it)
|
|||
int err = 0;
|
||||
|
||||
if (verbose)
|
||||
fprintf(stderr, "Checking cache tree\n");
|
||||
fprintf_ln(stderr, _("Checking cache tree"));
|
||||
|
||||
if (0 <= it->entry_count) {
|
||||
struct object *obj = parse_object(the_repository, &it->oid);
|
||||
if (!obj) {
|
||||
error("%s: invalid sha1 pointer in cache-tree",
|
||||
error(_("%s: invalid sha1 pointer in cache-tree"),
|
||||
oid_to_hex(&it->oid));
|
||||
errors_found |= ERROR_REFS;
|
||||
return 1;
|
||||
|
@ -659,7 +683,7 @@ static int fsck_cache_tree(struct cache_tree *it)
|
|||
obj, xstrdup(":"));
|
||||
mark_object_reachable(obj);
|
||||
if (obj->type != OBJ_TREE)
|
||||
err |= objerror(obj, "non-tree in cache-tree");
|
||||
err |= objerror(obj, _("non-tree in cache-tree"));
|
||||
}
|
||||
for (i = 0; i < it->subtree_nr; i++)
|
||||
err |= fsck_cache_tree(it->down[i]->cache_tree);
|
||||
|
@ -800,7 +824,7 @@ int cmd_fsck(int argc, const char **argv, const char *prefix)
|
|||
if (!obj || !(obj->flags & HAS_OBJ)) {
|
||||
if (is_promisor_object(&oid))
|
||||
continue;
|
||||
error("%s: object missing", oid_to_hex(&oid));
|
||||
error(_("%s: object missing"), oid_to_hex(&oid));
|
||||
errors_found |= ERROR_OBJECT;
|
||||
continue;
|
||||
}
|
||||
|
@ -812,7 +836,7 @@ int cmd_fsck(int argc, const char **argv, const char *prefix)
|
|||
mark_object_reachable(obj);
|
||||
continue;
|
||||
}
|
||||
error("invalid parameter: expected sha1, got '%s'", arg);
|
||||
error(_("invalid parameter: expected sha1, got '%s'"), arg);
|
||||
errors_found |= ERROR_OBJECT;
|
||||
}
|
||||
|
||||
|
|
|
@ -128,7 +128,7 @@ static int option_read_message(struct parse_opt_ctx_t *ctx,
|
|||
ctx->argc--;
|
||||
arg = *++ctx->argv;
|
||||
} else
|
||||
return opterror(opt, "requires a value", 0);
|
||||
return error(_("option `%s' requires a value"), opt->long_name);
|
||||
|
||||
if (buf->len)
|
||||
strbuf_addch(buf, '\n');
|
||||
|
@ -578,7 +578,7 @@ static void parse_branch_merge_options(char *bmo)
|
|||
argc = split_cmdline(bmo, &argv);
|
||||
if (argc < 0)
|
||||
die(_("Bad branch.%s.mergeoptions string: %s"), branch,
|
||||
split_cmdline_strerror(argc));
|
||||
_(split_cmdline_strerror(argc)));
|
||||
REALLOC_ARRAY(argv, argc + 2);
|
||||
MOVE_ARRAY(argv + 1, argv, argc + 1);
|
||||
argc++;
|
||||
|
|
|
@ -14,11 +14,15 @@
|
|||
|
||||
/* NEEDSWORK: switch to using parse_options */
|
||||
static const char reflog_expire_usage[] =
|
||||
"git reflog expire [--expire=<time>] [--expire-unreachable=<time>] [--rewrite] [--updateref] [--stale-fix] [--dry-run | -n] [--verbose] [--all] <refs>...";
|
||||
N_("git reflog expire [--expire=<time>] "
|
||||
"[--expire-unreachable=<time>] "
|
||||
"[--rewrite] [--updateref] [--stale-fix] [--dry-run | -n] "
|
||||
"[--verbose] [--all] <refs>...");
|
||||
static const char reflog_delete_usage[] =
|
||||
"git reflog delete [--rewrite] [--updateref] [--dry-run | -n] [--verbose] <refs>...";
|
||||
N_("git reflog delete [--rewrite] [--updateref] "
|
||||
"[--dry-run | -n] [--verbose] <refs>...");
|
||||
static const char reflog_exists_usage[] =
|
||||
"git reflog exists <ref>";
|
||||
N_("git reflog exists <ref>");
|
||||
|
||||
static timestamp_t default_reflog_expire;
|
||||
static timestamp_t default_reflog_expire_unreachable;
|
||||
|
@ -585,7 +589,7 @@ static int cmd_reflog_expire(int argc, const char **argv, const char *prefix)
|
|||
break;
|
||||
}
|
||||
else if (arg[0] == '-')
|
||||
usage(reflog_expire_usage);
|
||||
usage(_(reflog_expire_usage));
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
@ -598,7 +602,7 @@ static int cmd_reflog_expire(int argc, const char **argv, const char *prefix)
|
|||
if (cb.cmd.stalefix) {
|
||||
repo_init_revisions(the_repository, &cb.cmd.revs, prefix);
|
||||
if (flags & EXPIRE_REFLOGS_VERBOSE)
|
||||
printf("Marking reachable objects...");
|
||||
printf(_("Marking reachable objects..."));
|
||||
mark_reachable_objects(&cb.cmd.revs, 0, 0, NULL);
|
||||
if (flags & EXPIRE_REFLOGS_VERBOSE)
|
||||
putchar('\n');
|
||||
|
@ -636,7 +640,7 @@ static int cmd_reflog_expire(int argc, const char **argv, const char *prefix)
|
|||
char *ref;
|
||||
struct object_id oid;
|
||||
if (!dwim_log(argv[i], strlen(argv[i]), &oid, &ref)) {
|
||||
status |= error("%s points nowhere!", argv[i]);
|
||||
status |= error(_("%s points nowhere!"), argv[i]);
|
||||
continue;
|
||||
}
|
||||
set_reflog_expiry_param(&cb.cmd, explicit_expiry, ref);
|
||||
|
@ -682,13 +686,13 @@ static int cmd_reflog_delete(int argc, const char **argv, const char *prefix)
|
|||
break;
|
||||
}
|
||||
else if (arg[0] == '-')
|
||||
usage(reflog_delete_usage);
|
||||
usage(_(reflog_delete_usage));
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
if (argc - i < 1)
|
||||
return error("Nothing to delete?");
|
||||
return error(_("no reflog specified to delete"));
|
||||
|
||||
for ( ; i < argc; i++) {
|
||||
const char *spec = strstr(argv[i], "@{");
|
||||
|
@ -697,12 +701,12 @@ static int cmd_reflog_delete(int argc, const char **argv, const char *prefix)
|
|||
int recno;
|
||||
|
||||
if (!spec) {
|
||||
status |= error("Not a reflog: %s", argv[i]);
|
||||
status |= error(_("not a reflog: %s"), argv[i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!dwim_log(argv[i], spec - argv[i], &oid, &ref)) {
|
||||
status |= error("no reflog for '%s'", argv[i]);
|
||||
status |= error(_("no reflog for '%s'"), argv[i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -737,7 +741,7 @@ static int cmd_reflog_exists(int argc, const char **argv, const char *prefix)
|
|||
break;
|
||||
}
|
||||
else if (arg[0] == '-')
|
||||
usage(reflog_exists_usage);
|
||||
usage(_(reflog_exists_usage));
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
@ -745,10 +749,10 @@ static int cmd_reflog_exists(int argc, const char **argv, const char *prefix)
|
|||
start = i;
|
||||
|
||||
if (argc - start != 1)
|
||||
usage(reflog_exists_usage);
|
||||
usage(_(reflog_exists_usage));
|
||||
|
||||
if (check_refname_format(argv[start], REFNAME_ALLOW_ONELEVEL))
|
||||
die("invalid ref format: %s", argv[start]);
|
||||
die(_("invalid ref format: %s"), argv[start]);
|
||||
return !reflog_exists(argv[start]);
|
||||
}
|
||||
|
||||
|
@ -757,12 +761,12 @@ static int cmd_reflog_exists(int argc, const char **argv, const char *prefix)
|
|||
*/
|
||||
|
||||
static const char reflog_usage[] =
|
||||
"git reflog [ show | expire | delete | exists ]";
|
||||
N_("git reflog [ show | expire | delete | exists ]");
|
||||
|
||||
int cmd_reflog(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
if (argc > 1 && !strcmp(argv[1], "-h"))
|
||||
usage(reflog_usage);
|
||||
usage(_(reflog_usage));
|
||||
|
||||
/* With no command, we default to showing it. */
|
||||
if (argc < 2 || *argv[1] == '-')
|
||||
|
|
|
@ -197,7 +197,7 @@ static int write_oid(const struct object_id *oid, struct packed_git *pack,
|
|||
|
||||
if (cmd->in == -1) {
|
||||
if (start_command(cmd))
|
||||
die("Could not start pack-objects to repack promisor objects");
|
||||
die(_("could not start pack-objects to repack promisor objects"));
|
||||
}
|
||||
|
||||
xwrite(cmd->in, oid_to_hex(oid), GIT_SHA1_HEXSZ);
|
||||
|
@ -236,7 +236,7 @@ static void repack_promisor_objects(const struct pack_objects_args *args,
|
|||
char *promisor_name;
|
||||
int fd;
|
||||
if (line.len != the_hash_algo->hexsz)
|
||||
die("repack: Expecting full hex object ID lines only from pack-objects.");
|
||||
die(_("repack: Expecting full hex object ID lines only from pack-objects."));
|
||||
string_list_append(names, line.buf);
|
||||
|
||||
/*
|
||||
|
@ -247,13 +247,13 @@ static void repack_promisor_objects(const struct pack_objects_args *args,
|
|||
line.buf);
|
||||
fd = open(promisor_name, O_CREAT|O_EXCL|O_WRONLY, 0600);
|
||||
if (fd < 0)
|
||||
die_errno("unable to create '%s'", promisor_name);
|
||||
die_errno(_("unable to create '%s'"), promisor_name);
|
||||
close(fd);
|
||||
free(promisor_name);
|
||||
}
|
||||
fclose(out);
|
||||
if (finish_command(&cmd))
|
||||
die("Could not finish pack-objects to repack promisor objects");
|
||||
die(_("could not finish pack-objects to repack promisor objects"));
|
||||
}
|
||||
|
||||
#define ALL_INTO_ONE 1
|
||||
|
@ -408,7 +408,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
|
|||
out = xfdopen(cmd.out, "r");
|
||||
while (strbuf_getline_lf(&line, out) != EOF) {
|
||||
if (line.len != the_hash_algo->hexsz)
|
||||
die("repack: Expecting full hex object ID lines only from pack-objects.");
|
||||
die(_("repack: Expecting full hex object ID lines only from pack-objects."));
|
||||
string_list_append(&names, line.buf);
|
||||
}
|
||||
fclose(out);
|
||||
|
@ -417,7 +417,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
|
|||
return ret;
|
||||
|
||||
if (!names.nr && !po_args.quiet)
|
||||
printf("Nothing new to pack.\n");
|
||||
printf_ln(_("Nothing new to pack."));
|
||||
|
||||
/*
|
||||
* Ok we have prepared all new packfiles.
|
||||
|
@ -476,13 +476,13 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
|
|||
if (rollback_failure.nr) {
|
||||
int i;
|
||||
fprintf(stderr,
|
||||
"WARNING: Some packs in use have been renamed by\n"
|
||||
"WARNING: prefixing old- to their name, in order to\n"
|
||||
"WARNING: replace them with the new version of the\n"
|
||||
"WARNING: file. But the operation failed, and the\n"
|
||||
"WARNING: attempt to rename them back to their\n"
|
||||
"WARNING: original names also failed.\n"
|
||||
"WARNING: Please rename them in %s manually:\n", packdir);
|
||||
_("WARNING: Some packs in use have been renamed by\n"
|
||||
"WARNING: prefixing old- to their name, in order to\n"
|
||||
"WARNING: replace them with the new version of the\n"
|
||||
"WARNING: file. But the operation failed, and the\n"
|
||||
"WARNING: attempt to rename them back to their\n"
|
||||
"WARNING: original names also failed.\n"
|
||||
"WARNING: Please rename them in %s manually:\n"), packdir);
|
||||
for (i = 0; i < rollback_failure.nr; i++)
|
||||
fprintf(stderr, "WARNING: old-%s -> %s\n",
|
||||
rollback_failure.items[i].string,
|
||||
|
|
|
@ -69,7 +69,8 @@ static int option_parse_m(const struct option *opt,
|
|||
|
||||
replay->mainline = strtol(arg, &end, 10);
|
||||
if (*end || replay->mainline <= 0)
|
||||
return opterror(opt, "expects a number greater than zero", 0);
|
||||
return error(_("option `%s' expects a number greater than zero"),
|
||||
opt->long_name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
32
git.c
32
git.c
|
@ -338,27 +338,27 @@ static int handle_alias(int *argcp, const char ***argv)
|
|||
if (ret >= 0) /* normal exit */
|
||||
exit(ret);
|
||||
|
||||
die_errno("while expanding alias '%s': '%s'",
|
||||
alias_command, alias_string + 1);
|
||||
die_errno(_("while expanding alias '%s': '%s'"),
|
||||
alias_command, alias_string + 1);
|
||||
}
|
||||
count = split_cmdline(alias_string, &new_argv);
|
||||
if (count < 0)
|
||||
die("Bad alias.%s string: %s", alias_command,
|
||||
split_cmdline_strerror(count));
|
||||
die(_("bad alias.%s string: %s"), alias_command,
|
||||
_(split_cmdline_strerror(count)));
|
||||
option_count = handle_options(&new_argv, &count, &envchanged);
|
||||
if (envchanged)
|
||||
die("alias '%s' changes environment variables.\n"
|
||||
"You can use '!git' in the alias to do this",
|
||||
alias_command);
|
||||
die(_("alias '%s' changes environment variables.\n"
|
||||
"You can use '!git' in the alias to do this"),
|
||||
alias_command);
|
||||
memmove(new_argv - option_count, new_argv,
|
||||
count * sizeof(char *));
|
||||
new_argv -= option_count;
|
||||
|
||||
if (count < 1)
|
||||
die("empty alias for %s", alias_command);
|
||||
die(_("empty alias for %s"), alias_command);
|
||||
|
||||
if (!strcmp(alias_command, new_argv[0]))
|
||||
die("recursive alias: %s", alias_command);
|
||||
die(_("recursive alias: %s"), alias_command);
|
||||
|
||||
trace_argv_printf(new_argv,
|
||||
"trace: alias expansion: %s =>",
|
||||
|
@ -409,7 +409,7 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
|
|||
|
||||
if (!help && get_super_prefix()) {
|
||||
if (!(p->option & SUPPORT_SUPER_PREFIX))
|
||||
die("%s doesn't support --super-prefix", p->cmd);
|
||||
die(_("%s doesn't support --super-prefix"), p->cmd);
|
||||
}
|
||||
|
||||
if (!help && p->option & NEED_WORK_TREE)
|
||||
|
@ -433,11 +433,11 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
|
|||
|
||||
/* Check for ENOSPC and EIO errors.. */
|
||||
if (fflush(stdout))
|
||||
die_errno("write failure on standard output");
|
||||
die_errno(_("write failure on standard output"));
|
||||
if (ferror(stdout))
|
||||
die("unknown write failure on standard output");
|
||||
die(_("unknown write failure on standard output"));
|
||||
if (fclose(stdout))
|
||||
die_errno("close failed on standard output");
|
||||
die_errno(_("close failed on standard output"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -654,7 +654,7 @@ static void execv_dashed_external(const char **argv)
|
|||
int status;
|
||||
|
||||
if (get_super_prefix())
|
||||
die("%s doesn't support --super-prefix", argv[0]);
|
||||
die(_("%s doesn't support --super-prefix"), argv[0]);
|
||||
|
||||
if (use_pager == -1 && !is_builtin(argv[0]))
|
||||
use_pager = check_pager_config(argv[0]);
|
||||
|
@ -766,7 +766,7 @@ int cmd_main(int argc, const char **argv)
|
|||
if (skip_prefix(cmd, "git-", &cmd)) {
|
||||
argv[0] = cmd;
|
||||
handle_builtin(argc, argv);
|
||||
die("cannot handle %s as a builtin", cmd);
|
||||
die(_("cannot handle %s as a builtin"), cmd);
|
||||
}
|
||||
|
||||
/* Look for flags.. */
|
||||
|
@ -779,7 +779,7 @@ int cmd_main(int argc, const char **argv)
|
|||
} else {
|
||||
/* The user didn't specify a command; give them help */
|
||||
commit_pager_choice();
|
||||
printf("usage: %s\n\n", git_usage_string);
|
||||
printf(_("usage: %s\n\n"), git_usage_string);
|
||||
list_common_cmds_help();
|
||||
printf("\n%s\n", _(git_more_info_string));
|
||||
exit(1);
|
||||
|
|
|
@ -18,7 +18,8 @@ int parse_opt_abbrev_cb(const struct option *opt, const char *arg, int unset)
|
|||
} else {
|
||||
v = strtol(arg, (char **)&arg, 10);
|
||||
if (*arg)
|
||||
return opterror(opt, "expects a numerical value", 0);
|
||||
return error(_("option `%s' expects a numerical value"),
|
||||
opt->long_name);
|
||||
if (v && v < MINIMUM_ABBREV)
|
||||
v = MINIMUM_ABBREV;
|
||||
else if (v > 40)
|
||||
|
@ -47,8 +48,8 @@ int parse_opt_color_flag_cb(const struct option *opt, const char *arg,
|
|||
arg = unset ? "never" : (const char *)opt->defval;
|
||||
value = git_config_colorbool(NULL, arg);
|
||||
if (value < 0)
|
||||
return opterror(opt,
|
||||
"expects \"always\", \"auto\", or \"never\"", 0);
|
||||
return error(_("option `%s' expects \"always\", \"auto\", or \"never\""),
|
||||
opt->long_name);
|
||||
*(int *)opt->value = value;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ static int get_arg(struct parse_opt_ctx_t *p, const struct option *opt,
|
|||
p->argc--;
|
||||
*arg = *++p->argv;
|
||||
} else
|
||||
return opterror(opt, "requires a value", flags);
|
||||
return error(_("%s requires a value"), optname(opt, flags));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,6 @@ static int opt_command_mode_error(const struct option *opt,
|
|||
int flags)
|
||||
{
|
||||
const struct option *that;
|
||||
struct strbuf message = STRBUF_INIT;
|
||||
struct strbuf that_name = STRBUF_INIT;
|
||||
|
||||
/*
|
||||
|
@ -67,13 +66,13 @@ static int opt_command_mode_error(const struct option *opt,
|
|||
strbuf_addf(&that_name, "--%s", that->long_name);
|
||||
else
|
||||
strbuf_addf(&that_name, "-%c", that->short_name);
|
||||
strbuf_addf(&message, ": incompatible with %s", that_name.buf);
|
||||
error(_("%s is incompatible with %s"),
|
||||
optname(opt, flags), that_name.buf);
|
||||
strbuf_release(&that_name);
|
||||
opterror(opt, message.buf, flags);
|
||||
strbuf_release(&message);
|
||||
return -1;
|
||||
}
|
||||
return opterror(opt, ": incompatible with something else", flags);
|
||||
return error(_("%s : incompatible with something else"),
|
||||
optname(opt, flags));
|
||||
}
|
||||
|
||||
static int get_value(struct parse_opt_ctx_t *p,
|
||||
|
@ -86,11 +85,11 @@ static int get_value(struct parse_opt_ctx_t *p,
|
|||
int err;
|
||||
|
||||
if (unset && p->opt)
|
||||
return opterror(opt, "takes no value", flags);
|
||||
return error(_("%s takes no value"), optname(opt, flags));
|
||||
if (unset && (opt->flags & PARSE_OPT_NONEG))
|
||||
return opterror(opt, "isn't available", flags);
|
||||
return error(_("%s isn't available"), optname(opt, flags));
|
||||
if (!(flags & OPT_SHORT) && p->opt && (opt->flags & PARSE_OPT_NOARG))
|
||||
return opterror(opt, "takes no value", flags);
|
||||
return error(_("%s takes no value"), optname(opt, flags));
|
||||
|
||||
switch (opt->type) {
|
||||
case OPTION_LOWLEVEL_CALLBACK:
|
||||
|
@ -176,7 +175,8 @@ static int get_value(struct parse_opt_ctx_t *p,
|
|||
return -1;
|
||||
*(int *)opt->value = strtol(arg, (char **)&s, 10);
|
||||
if (*s)
|
||||
return opterror(opt, "expects a numerical value", flags);
|
||||
return error(_("%s expects a numerical value"),
|
||||
optname(opt, flags));
|
||||
return 0;
|
||||
|
||||
case OPTION_MAGNITUDE:
|
||||
|
@ -191,13 +191,13 @@ static int get_value(struct parse_opt_ctx_t *p,
|
|||
if (get_arg(p, opt, flags, &arg))
|
||||
return -1;
|
||||
if (!git_parse_ulong(arg, opt->value))
|
||||
return opterror(opt,
|
||||
"expects a non-negative integer value with an optional k/m/g suffix",
|
||||
flags);
|
||||
return error(_("%s expects a non-negative integer value"
|
||||
" with an optional k/m/g suffix"),
|
||||
optname(opt, flags));
|
||||
return 0;
|
||||
|
||||
default:
|
||||
die("should not happen, someone must be hit on the forehead");
|
||||
BUG("opt->type %d should not happen", opt->type);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -257,7 +257,8 @@ again:
|
|||
if (!rest)
|
||||
continue;
|
||||
if (*rest == '=')
|
||||
return opterror(options, "takes no value", flags);
|
||||
return error(_("%s takes no value"),
|
||||
optname(options, flags));
|
||||
if (*rest)
|
||||
continue;
|
||||
p->out[p->cpidx++] = arg - 2;
|
||||
|
@ -318,8 +319,8 @@ is_abbreviated:
|
|||
}
|
||||
|
||||
if (ambiguous_option) {
|
||||
error("Ambiguous option: %s "
|
||||
"(could be --%s%s or --%s%s)",
|
||||
error(_("ambiguous option: %s "
|
||||
"(could be --%s%s or --%s%s)"),
|
||||
arg,
|
||||
(ambiguous_flags & OPT_UNSET) ? "no-" : "",
|
||||
ambiguous_option->long_name,
|
||||
|
@ -352,7 +353,7 @@ static void check_typos(const char *arg, const struct option *options)
|
|||
return;
|
||||
|
||||
if (starts_with(arg, "no-")) {
|
||||
error ("did you mean `--%s` (with two dashes ?)", arg);
|
||||
error(_("did you mean `--%s` (with two dashes ?)"), arg);
|
||||
exit(129);
|
||||
}
|
||||
|
||||
|
@ -360,7 +361,7 @@ static void check_typos(const char *arg, const struct option *options)
|
|||
if (!options->long_name)
|
||||
continue;
|
||||
if (starts_with(options->long_name, arg)) {
|
||||
error ("did you mean `--%s` (with two dashes ?)", arg);
|
||||
error(_("did you mean `--%s` (with two dashes ?)"), arg);
|
||||
exit(129);
|
||||
}
|
||||
}
|
||||
|
@ -423,7 +424,7 @@ void parse_options_start(struct parse_opt_ctx_t *ctx,
|
|||
ctx->flags = flags;
|
||||
if ((flags & PARSE_OPT_KEEP_UNKNOWN) &&
|
||||
(flags & PARSE_OPT_STOP_AT_NON_OPTION))
|
||||
die("STOP_AT_NON_OPTION and KEEP_UNKNOWN don't go together");
|
||||
BUG("STOP_AT_NON_OPTION and KEEP_UNKNOWN don't go together");
|
||||
parse_options_check(options);
|
||||
}
|
||||
|
||||
|
@ -645,11 +646,11 @@ int parse_options(int argc, const char **argv, const char *prefix,
|
|||
break;
|
||||
default: /* PARSE_OPT_UNKNOWN */
|
||||
if (ctx.argv[0][1] == '-') {
|
||||
error("unknown option `%s'", ctx.argv[0] + 2);
|
||||
error(_("unknown option `%s'"), ctx.argv[0] + 2);
|
||||
} else if (isascii(*ctx.opt)) {
|
||||
error("unknown switch `%c'", *ctx.opt);
|
||||
error(_("unknown switch `%c'"), *ctx.opt);
|
||||
} else {
|
||||
error("unknown non-ascii option in string: `%s'",
|
||||
error(_("unknown non-ascii option in string: `%s'"),
|
||||
ctx.argv[0]);
|
||||
}
|
||||
usage_with_options(usagestr, options);
|
||||
|
@ -775,12 +776,17 @@ void NORETURN usage_msg_opt(const char *msg,
|
|||
usage_with_options(usagestr, options);
|
||||
}
|
||||
|
||||
#undef opterror
|
||||
int opterror(const struct option *opt, const char *reason, int flags)
|
||||
const char *optname(const struct option *opt, int flags)
|
||||
{
|
||||
static struct strbuf sb = STRBUF_INIT;
|
||||
|
||||
strbuf_reset(&sb);
|
||||
if (flags & OPT_SHORT)
|
||||
return error("switch `%c' %s", opt->short_name, reason);
|
||||
if (flags & OPT_UNSET)
|
||||
return error("option `no-%s' %s", opt->long_name, reason);
|
||||
return error("option `%s' %s", opt->long_name, reason);
|
||||
strbuf_addf(&sb, "switch `%c'", opt->short_name);
|
||||
else if (flags & OPT_UNSET)
|
||||
strbuf_addf(&sb, "option `no-%s'", opt->long_name);
|
||||
else
|
||||
strbuf_addf(&sb, "option `%s'", opt->long_name);
|
||||
|
||||
return sb.buf;
|
||||
}
|
||||
|
|
|
@ -186,10 +186,7 @@ extern NORETURN void usage_msg_opt(const char *msg,
|
|||
const struct option *options);
|
||||
|
||||
extern int optbug(const struct option *opt, const char *reason);
|
||||
extern int opterror(const struct option *opt, const char *reason, int flags);
|
||||
#if defined(__GNUC__)
|
||||
#define opterror(o,r,f) (opterror((o),(r),(f)), const_error())
|
||||
#endif
|
||||
const char *optname(const struct option *opt, int flags);
|
||||
|
||||
/*
|
||||
* Use these assertions for callbacks that expect to be called with NONEG and
|
||||
|
|
73
read-cache.c
73
read-cache.c
|
@ -316,7 +316,7 @@ static int ce_match_stat_basic(const struct cache_entry *ce, struct stat *st)
|
|||
changed |= DATA_CHANGED;
|
||||
return changed;
|
||||
default:
|
||||
die("internal error: ce_mode is %o", ce->ce_mode);
|
||||
BUG("unsupported ce_mode: %o", ce->ce_mode);
|
||||
}
|
||||
|
||||
changed |= match_stat_data(&ce->ce_stat_data, st);
|
||||
|
@ -672,7 +672,8 @@ static struct cache_entry *create_alias_ce(struct index_state *istate,
|
|||
struct cache_entry *new_entry;
|
||||
|
||||
if (alias->ce_flags & CE_ADDED)
|
||||
die("Will not add file alias '%s' ('%s' already exists in index)", ce->name, alias->name);
|
||||
die(_("will not add file alias '%s' ('%s' already exists in index)"),
|
||||
ce->name, alias->name);
|
||||
|
||||
/* Ok, create the new entry using the name of the existing alias */
|
||||
len = ce_namelen(alias);
|
||||
|
@ -687,7 +688,7 @@ void set_object_name_for_intent_to_add_entry(struct cache_entry *ce)
|
|||
{
|
||||
struct object_id oid;
|
||||
if (write_object_file("", 0, blob_type, &oid))
|
||||
die("cannot create an empty blob in the object database");
|
||||
die(_("cannot create an empty blob in the object database"));
|
||||
oidcpy(&ce->oid, &oid);
|
||||
}
|
||||
|
||||
|
@ -708,7 +709,7 @@ int add_to_index(struct index_state *istate, const char *path, struct stat *st,
|
|||
newflags |= HASH_RENORMALIZE;
|
||||
|
||||
if (!S_ISREG(st_mode) && !S_ISLNK(st_mode) && !S_ISDIR(st_mode))
|
||||
return error("%s: can only add regular files, symbolic links or git-directories", path);
|
||||
return error(_("%s: can only add regular files, symbolic links or git-directories"), path);
|
||||
|
||||
namelen = strlen(path);
|
||||
if (S_ISDIR(st_mode)) {
|
||||
|
@ -763,7 +764,7 @@ int add_to_index(struct index_state *istate, const char *path, struct stat *st,
|
|||
if (!intent_only) {
|
||||
if (index_path(istate, &ce->oid, path, st, newflags)) {
|
||||
discard_cache_entry(ce);
|
||||
return error("unable to index file %s", path);
|
||||
return error(_("unable to index file '%s'"), path);
|
||||
}
|
||||
} else
|
||||
set_object_name_for_intent_to_add_entry(ce);
|
||||
|
@ -782,7 +783,7 @@ int add_to_index(struct index_state *istate, const char *path, struct stat *st,
|
|||
discard_cache_entry(ce);
|
||||
else if (add_index_entry(istate, ce, add_option)) {
|
||||
discard_cache_entry(ce);
|
||||
return error("unable to add %s to index", path);
|
||||
return error(_("unable to add '%s' to index"), path);
|
||||
}
|
||||
if (verbose && !was_same)
|
||||
printf("add '%s'\n", path);
|
||||
|
@ -793,7 +794,7 @@ int add_file_to_index(struct index_state *istate, const char *path, int flags)
|
|||
{
|
||||
struct stat st;
|
||||
if (lstat(path, &st))
|
||||
die_errno("unable to stat '%s'", path);
|
||||
die_errno(_("unable to stat '%s'"), path);
|
||||
return add_to_index(istate, path, &st, flags);
|
||||
}
|
||||
|
||||
|
@ -818,7 +819,7 @@ struct cache_entry *make_cache_entry(struct index_state *istate,
|
|||
int len;
|
||||
|
||||
if (!verify_path(path, mode)) {
|
||||
error("Invalid path '%s'", path);
|
||||
error(_("invalid path '%s'"), path);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -844,7 +845,7 @@ struct cache_entry *make_transient_cache_entry(unsigned int mode, const struct o
|
|||
int len;
|
||||
|
||||
if (!verify_path(path, mode)) {
|
||||
error("Invalid path '%s'", path);
|
||||
error(_("invalid path '%s'"), path);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -1297,12 +1298,12 @@ static int add_index_entry_with_check(struct index_state *istate, struct cache_e
|
|||
if (!ok_to_add)
|
||||
return -1;
|
||||
if (!verify_path(ce->name, ce->ce_mode))
|
||||
return error("Invalid path '%s'", ce->name);
|
||||
return error(_("invalid path '%s'"), ce->name);
|
||||
|
||||
if (!skip_df_check &&
|
||||
check_file_directory_conflict(istate, ce, pos, ok_to_replace)) {
|
||||
if (!ok_to_replace)
|
||||
return error("'%s' appears as both a file and as a directory",
|
||||
return error(_("'%s' appears as both a file and as a directory"),
|
||||
ce->name);
|
||||
pos = index_name_stage_pos(istate, ce->name, ce_namelen(ce), ce_stage(ce));
|
||||
pos = -pos-1;
|
||||
|
@ -1491,11 +1492,11 @@ int refresh_index(struct index_state *istate, unsigned int flags,
|
|||
istate->cache_nr);
|
||||
|
||||
trace_performance_enter();
|
||||
modified_fmt = (in_porcelain ? "M\t%s\n" : "%s: needs update\n");
|
||||
deleted_fmt = (in_porcelain ? "D\t%s\n" : "%s: needs update\n");
|
||||
typechange_fmt = (in_porcelain ? "T\t%s\n" : "%s needs update\n");
|
||||
added_fmt = (in_porcelain ? "A\t%s\n" : "%s needs update\n");
|
||||
unmerged_fmt = (in_porcelain ? "U\t%s\n" : "%s: needs merge\n");
|
||||
modified_fmt = in_porcelain ? "M\t%s\n" : "%s: needs update\n";
|
||||
deleted_fmt = in_porcelain ? "D\t%s\n" : "%s: needs update\n";
|
||||
typechange_fmt = in_porcelain ? "T\t%s\n" : "%s: needs update\n";
|
||||
added_fmt = in_porcelain ? "A\t%s\n" : "%s: needs update\n";
|
||||
unmerged_fmt = in_porcelain ? "U\t%s\n" : "%s: needs merge\n";
|
||||
/*
|
||||
* Use the multi-threaded preload_index() to refresh most of the
|
||||
* cache entries quickly then in the single threaded loop below,
|
||||
|
@ -1682,10 +1683,10 @@ static int verify_hdr(const struct cache_header *hdr, unsigned long size)
|
|||
int hdr_version;
|
||||
|
||||
if (hdr->hdr_signature != htonl(CACHE_SIGNATURE))
|
||||
return error("bad signature");
|
||||
return error(_("bad signature 0x%08x"), hdr->hdr_signature);
|
||||
hdr_version = ntohl(hdr->hdr_version);
|
||||
if (hdr_version < INDEX_FORMAT_LB || INDEX_FORMAT_UB < hdr_version)
|
||||
return error("bad index version %d", hdr_version);
|
||||
return error(_("bad index version %d"), hdr_version);
|
||||
|
||||
if (!verify_index_checksum)
|
||||
return 0;
|
||||
|
@ -1694,7 +1695,7 @@ static int verify_hdr(const struct cache_header *hdr, unsigned long size)
|
|||
the_hash_algo->update_fn(&c, hdr, size - the_hash_algo->rawsz);
|
||||
the_hash_algo->final_fn(hash, &c);
|
||||
if (!hasheq(hash, (unsigned char *)hdr + size - the_hash_algo->rawsz))
|
||||
return error("bad index file sha1 signature");
|
||||
return error(_("bad index file sha1 signature"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1724,9 +1725,9 @@ static int read_index_extension(struct index_state *istate,
|
|||
break;
|
||||
default:
|
||||
if (*ext < 'A' || 'Z' < *ext)
|
||||
return error("index uses %.4s extension, which we do not understand",
|
||||
return error(_("index uses %.4s extension, which we do not understand"),
|
||||
ext);
|
||||
fprintf(stderr, "ignoring %.4s extension\n", ext);
|
||||
fprintf_ln(stderr, _("ignoring %.4s extension"), ext);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
|
@ -1773,7 +1774,7 @@ static struct cache_entry *create_from_disk(struct mem_pool *ce_mem_pool,
|
|||
extended_flags = get_be16(&ondisk2->flags2) << 16;
|
||||
/* We do not yet understand any bit out of CE_EXTENDED_FLAGS */
|
||||
if (extended_flags & ~CE_EXTENDED_FLAGS)
|
||||
die("Unknown index entry format %08x", extended_flags);
|
||||
die(_("unknown index entry format 0x%08x"), extended_flags);
|
||||
flags |= extended_flags;
|
||||
name = ondisk2->name;
|
||||
}
|
||||
|
@ -1844,13 +1845,13 @@ static void check_ce_order(struct index_state *istate)
|
|||
int name_compare = strcmp(ce->name, next_ce->name);
|
||||
|
||||
if (0 < name_compare)
|
||||
die("unordered stage entries in index");
|
||||
die(_("unordered stage entries in index"));
|
||||
if (!name_compare) {
|
||||
if (!ce_stage(ce))
|
||||
die("multiple stage entries for merged file '%s'",
|
||||
die(_("multiple stage entries for merged file '%s'"),
|
||||
ce->name);
|
||||
if (ce_stage(ce) > ce_stage(next_ce))
|
||||
die("unordered stage entries for '%s'",
|
||||
die(_("unordered stage entries for '%s'"),
|
||||
ce->name);
|
||||
}
|
||||
}
|
||||
|
@ -2144,19 +2145,19 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist)
|
|||
if (fd < 0) {
|
||||
if (!must_exist && errno == ENOENT)
|
||||
return 0;
|
||||
die_errno("%s: index file open failed", path);
|
||||
die_errno(_("%s: index file open failed"), path);
|
||||
}
|
||||
|
||||
if (fstat(fd, &st))
|
||||
die_errno("cannot stat the open index");
|
||||
die_errno(_("%s: cannot stat the open index"), path);
|
||||
|
||||
mmap_size = xsize_t(st.st_size);
|
||||
if (mmap_size < sizeof(struct cache_header) + the_hash_algo->rawsz)
|
||||
die("index file smaller than expected");
|
||||
die(_("%s: index file smaller than expected"), path);
|
||||
|
||||
mmap = xmmap(NULL, mmap_size, PROT_READ, MAP_PRIVATE, fd, 0);
|
||||
if (mmap == MAP_FAILED)
|
||||
die_errno("unable to map index file");
|
||||
die_errno(_("%s: unable to map index file"), path);
|
||||
close(fd);
|
||||
|
||||
hdr = (const struct cache_header *)mmap;
|
||||
|
@ -2235,7 +2236,7 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist)
|
|||
|
||||
unmap:
|
||||
munmap((void *)mmap, mmap_size);
|
||||
die("index file corrupt");
|
||||
die(_("index file corrupt"));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2247,7 +2248,7 @@ unmap:
|
|||
static void freshen_shared_index(const char *shared_index, int warn)
|
||||
{
|
||||
if (!check_and_freshen_file(shared_index, 1) && warn)
|
||||
warning("could not freshen shared index '%s'", shared_index);
|
||||
warning(_("could not freshen shared index '%s'"), shared_index);
|
||||
}
|
||||
|
||||
int read_index_from(struct index_state *istate, const char *path,
|
||||
|
@ -2282,7 +2283,7 @@ int read_index_from(struct index_state *istate, const char *path,
|
|||
base_path = xstrfmt("%s/sharedindex.%s", gitdir, base_oid_hex);
|
||||
ret = do_read_index(split_index->base, base_path, 1);
|
||||
if (!oideq(&split_index->base_oid, &split_index->base->oid))
|
||||
die("broken index, expect %s in %s, got %s",
|
||||
die(_("broken index, expect %s in %s, got %s"),
|
||||
base_oid_hex, base_path,
|
||||
oid_to_hex(&split_index->base->oid));
|
||||
|
||||
|
@ -2348,14 +2349,14 @@ void validate_cache_entries(const struct index_state *istate)
|
|||
|
||||
for (i = 0; i < istate->cache_nr; i++) {
|
||||
if (!istate) {
|
||||
die("internal error: cache entry is not allocated from expected memory pool");
|
||||
BUG("cache entry is not allocated from expected memory pool");
|
||||
} else if (!istate->ce_mem_pool ||
|
||||
!mem_pool_contains(istate->ce_mem_pool, istate->cache[i])) {
|
||||
if (!istate->split_index ||
|
||||
!istate->split_index->base ||
|
||||
!istate->split_index->base->ce_mem_pool ||
|
||||
!mem_pool_contains(istate->split_index->base->ce_mem_pool, istate->cache[i])) {
|
||||
die("internal error: cache entry is not allocated from expected memory pool");
|
||||
BUG("cache entry is not allocated from expected memory pool");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3096,7 +3097,7 @@ static int write_shared_index(struct index_state *istate,
|
|||
return ret;
|
||||
ret = adjust_shared_perm(get_tempfile_path(*temp));
|
||||
if (ret) {
|
||||
error("cannot fix permission bits on %s", get_tempfile_path(*temp));
|
||||
error(_("cannot fix permission bits on '%s'"), get_tempfile_path(*temp));
|
||||
return ret;
|
||||
}
|
||||
ret = rename_tempfile(temp,
|
||||
|
@ -3243,7 +3244,7 @@ int read_index_unmerged(struct index_state *istate)
|
|||
new_ce->ce_namelen = len;
|
||||
new_ce->ce_mode = ce->ce_mode;
|
||||
if (add_index_entry(istate, new_ce, ADD_CACHE_SKIP_DFCHECK))
|
||||
return error("%s: cannot drop to stage #0",
|
||||
return error(_("%s: cannot drop to stage #0"),
|
||||
new_ce->name);
|
||||
}
|
||||
return unmerged;
|
||||
|
|
|
@ -2324,9 +2324,11 @@ int parse_opt_merge_filter(const struct option *opt, const char *arg, int unset)
|
|||
|
||||
if (rf->merge) {
|
||||
if (no_merged) {
|
||||
return opterror(opt, "is incompatible with --merged", 0);
|
||||
return error(_("option `%s' is incompatible with --merged"),
|
||||
opt->long_name);
|
||||
} else {
|
||||
return opterror(opt, "is incompatible with --no-merged", 0);
|
||||
return error(_("option `%s' is incompatible with --no-merged"),
|
||||
opt->long_name);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2340,7 +2342,7 @@ int parse_opt_merge_filter(const struct option *opt, const char *arg, int unset)
|
|||
rf->merge_commit = lookup_commit_reference_gently(the_repository,
|
||||
&oid, 0);
|
||||
if (!rf->merge_commit)
|
||||
return opterror(opt, "must point to a commit", 0);
|
||||
return error(_("option `%s' must point to a commit"), opt->long_name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
49
remote.c
49
remote.c
|
@ -359,7 +359,7 @@ static int handle_config(const char *key, const char *value, void *cb)
|
|||
return 0;
|
||||
/* Handle remote.<name>.* variables */
|
||||
if (*name == '/') {
|
||||
warning("Config remote shorthand cannot begin with '/': %s",
|
||||
warning(_("config remote shorthand cannot begin with '/': %s"),
|
||||
name);
|
||||
return 0;
|
||||
}
|
||||
|
@ -406,7 +406,7 @@ static int handle_config(const char *key, const char *value, void *cb)
|
|||
if (!remote->receivepack)
|
||||
remote->receivepack = v;
|
||||
else
|
||||
error("more than one receivepack given, using the first");
|
||||
error(_("more than one receivepack given, using the first"));
|
||||
} else if (!strcmp(subkey, "uploadpack")) {
|
||||
const char *v;
|
||||
if (git_config_string(&v, key, value))
|
||||
|
@ -414,7 +414,7 @@ static int handle_config(const char *key, const char *value, void *cb)
|
|||
if (!remote->uploadpack)
|
||||
remote->uploadpack = v;
|
||||
else
|
||||
error("more than one uploadpack given, using the first");
|
||||
error(_("more than one uploadpack given, using the first"));
|
||||
} else if (!strcmp(subkey, "tagopt")) {
|
||||
if (!strcmp(value, "--no-tags"))
|
||||
remote->fetch_tags = -1;
|
||||
|
@ -620,7 +620,7 @@ static void handle_duplicate(struct ref *ref1, struct ref *ref2)
|
|||
* FETCH_HEAD_IGNORE entries always appear at
|
||||
* the end of the list.
|
||||
*/
|
||||
die(_("Internal error"));
|
||||
BUG("Internal error");
|
||||
}
|
||||
}
|
||||
free(ref2->peer_ref);
|
||||
|
@ -680,7 +680,7 @@ static int match_name_with_pattern(const char *key, const char *name,
|
|||
size_t namelen;
|
||||
int ret;
|
||||
if (!kstar)
|
||||
die("Key '%s' of pattern had no '*'", key);
|
||||
die(_("key '%s' of pattern had no '*'"), key);
|
||||
klen = kstar - key;
|
||||
ksuffixlen = strlen(kstar + 1);
|
||||
namelen = strlen(name);
|
||||
|
@ -690,7 +690,7 @@ static int match_name_with_pattern(const char *key, const char *name,
|
|||
struct strbuf sb = STRBUF_INIT;
|
||||
const char *vstar = strchr(value, '*');
|
||||
if (!vstar)
|
||||
die("Value '%s' of pattern has no '*'", value);
|
||||
die(_("value '%s' of pattern has no '*'"), value);
|
||||
strbuf_add(&sb, value, vstar - value);
|
||||
strbuf_add(&sb, name + klen, namelen - klen - ksuffixlen);
|
||||
strbuf_addstr(&sb, vstar + 1);
|
||||
|
@ -707,7 +707,7 @@ static void query_refspecs_multiple(struct refspec *rs,
|
|||
int find_src = !query->src;
|
||||
|
||||
if (find_src && !query->dst)
|
||||
error("query_refspecs_multiple: need either src or dst");
|
||||
BUG("query_refspecs_multiple: need either src or dst");
|
||||
|
||||
for (i = 0; i < rs->nr; i++) {
|
||||
struct refspec_item *refspec = &rs->items[i];
|
||||
|
@ -735,7 +735,7 @@ int query_refspecs(struct refspec *rs, struct refspec_item *query)
|
|||
char **result = find_src ? &query->src : &query->dst;
|
||||
|
||||
if (find_src && !query->dst)
|
||||
return error("query_refspecs: need either src or dst");
|
||||
BUG("query_refspecs: need either src or dst");
|
||||
|
||||
for (i = 0; i < rs->nr; i++) {
|
||||
struct refspec_item *refspec = &rs->items[i];
|
||||
|
@ -995,12 +995,12 @@ static int match_explicit_lhs(struct ref *src,
|
|||
* way to delete 'other' ref at the remote end.
|
||||
*/
|
||||
if (try_explicit_object_name(rs->src, match) < 0)
|
||||
return error("src refspec %s does not match any.", rs->src);
|
||||
return error(_("src refspec %s does not match any"), rs->src);
|
||||
if (allocated_match)
|
||||
*allocated_match = 1;
|
||||
return 0;
|
||||
default:
|
||||
return error("src refspec %s matches more than one.", rs->src);
|
||||
return error(_("src refspec %s matches more than one"), rs->src);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1030,7 +1030,7 @@ static int match_explicit(struct ref *src, struct ref *dst,
|
|||
if (!dst_value ||
|
||||
((flag & REF_ISSYMREF) &&
|
||||
!starts_with(dst_value, "refs/heads/")))
|
||||
die("%s cannot be resolved to branch.",
|
||||
die(_("%s cannot be resolved to branch"),
|
||||
matched_src->name);
|
||||
}
|
||||
|
||||
|
@ -1041,30 +1041,30 @@ static int match_explicit(struct ref *src, struct ref *dst,
|
|||
if (starts_with(dst_value, "refs/"))
|
||||
matched_dst = make_linked_ref(dst_value, dst_tail);
|
||||
else if (is_null_oid(&matched_src->new_oid))
|
||||
error("unable to delete '%s': remote ref does not exist",
|
||||
error(_("unable to delete '%s': remote ref does not exist"),
|
||||
dst_value);
|
||||
else if ((dst_guess = guess_ref(dst_value, matched_src))) {
|
||||
matched_dst = make_linked_ref(dst_guess, dst_tail);
|
||||
free(dst_guess);
|
||||
} else
|
||||
error("unable to push to unqualified destination: %s\n"
|
||||
"The destination refspec neither matches an "
|
||||
"existing ref on the remote nor\n"
|
||||
"begins with refs/, and we are unable to "
|
||||
"guess a prefix based on the source ref.",
|
||||
error(_("unable to push to unqualified destination: %s\n"
|
||||
"The destination refspec neither matches an "
|
||||
"existing ref on the remote nor\n"
|
||||
"begins with refs/, and we are unable to "
|
||||
"guess a prefix based on the source ref."),
|
||||
dst_value);
|
||||
break;
|
||||
default:
|
||||
matched_dst = NULL;
|
||||
error("dst refspec %s matches more than one.",
|
||||
error(_("dst refspec %s matches more than one"),
|
||||
dst_value);
|
||||
break;
|
||||
}
|
||||
if (!matched_dst)
|
||||
return -1;
|
||||
if (matched_dst->peer_ref)
|
||||
return error("dst ref %s receives from more than one src.",
|
||||
matched_dst->name);
|
||||
return error(_("dst ref %s receives from more than one src"),
|
||||
matched_dst->name);
|
||||
else {
|
||||
matched_dst->peer_ref = allocated_src ?
|
||||
matched_src :
|
||||
|
@ -1782,7 +1782,7 @@ int get_fetch_map(const struct ref *remote_refs,
|
|||
ref_map = get_remote_ref(remote_refs, name);
|
||||
}
|
||||
if (!missing_ok && !ref_map)
|
||||
die("Couldn't find remote ref %s", name);
|
||||
die(_("couldn't find remote ref %s"), name);
|
||||
if (ref_map) {
|
||||
ref_map->peer_ref = get_local_ref(refspec->dst);
|
||||
if (ref_map->peer_ref && refspec->force)
|
||||
|
@ -1795,7 +1795,7 @@ int get_fetch_map(const struct ref *remote_refs,
|
|||
if (!starts_with((*rmp)->peer_ref->name, "refs/") ||
|
||||
check_refname_format((*rmp)->peer_ref->name, 0)) {
|
||||
struct ref *ignore = *rmp;
|
||||
error("* Ignoring funny ref '%s' locally",
|
||||
error(_("* Ignoring funny ref '%s' locally"),
|
||||
(*rmp)->peer_ref->name);
|
||||
*rmp = (*rmp)->next;
|
||||
free(ignore->peer_ref);
|
||||
|
@ -1890,7 +1890,7 @@ int stat_tracking_info(struct branch *branch, int *num_ours, int *num_theirs,
|
|||
repo_init_revisions(the_repository, &revs, NULL);
|
||||
setup_revisions(argv.argc, argv.argv, &revs, NULL);
|
||||
if (prepare_revision_walk(&revs))
|
||||
die("revision walk setup failed");
|
||||
die(_("revision walk setup failed"));
|
||||
|
||||
/* ... and count the commits on each side. */
|
||||
while (1) {
|
||||
|
@ -2163,7 +2163,8 @@ static int parse_push_cas_option(struct push_cas_option *cas, const char *arg, i
|
|||
else if (!colon[1])
|
||||
oidclr(&entry->expect);
|
||||
else if (get_oid(colon + 1, &entry->expect))
|
||||
return error("cannot parse expected object name '%s'", colon + 1);
|
||||
return error(_("cannot parse expected object name '%s'"),
|
||||
colon + 1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -227,7 +227,7 @@ EOF
|
|||
test_expect_success 'detect possible typos' '
|
||||
test_must_fail test-tool parse-options -boolean >output 2>output.err &&
|
||||
test_must_be_empty output &&
|
||||
test_cmp typo.err output.err
|
||||
test_i18ncmp typo.err output.err
|
||||
'
|
||||
|
||||
cat >typo.err <<\EOF
|
||||
|
@ -237,7 +237,7 @@ EOF
|
|||
test_expect_success 'detect possible typos' '
|
||||
test_must_fail test-tool parse-options -ambiguous >output 2>output.err &&
|
||||
test_must_be_empty output &&
|
||||
test_cmp typo.err output.err
|
||||
test_i18ncmp typo.err output.err
|
||||
'
|
||||
|
||||
test_expect_success 'keep some options as arguments' '
|
||||
|
|
|
@ -20,12 +20,12 @@ check_have () {
|
|||
}
|
||||
|
||||
check_fsck () {
|
||||
output=$(git fsck --full)
|
||||
git fsck --full >fsck.output
|
||||
case "$1" in
|
||||
'')
|
||||
test -z "$output" ;;
|
||||
test_must_be_empty fsck.output ;;
|
||||
*)
|
||||
echo "$output" | grep "$1" ;;
|
||||
test_i18ngrep "$1" fsck.output ;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ test_expect_success 'object with bad sha1' '
|
|||
|
||||
test_must_fail git fsck 2>out &&
|
||||
cat out &&
|
||||
grep "$sha.*corrupt" out
|
||||
test_i18ngrep "$sha.*corrupt" out
|
||||
'
|
||||
|
||||
test_expect_success 'branch pointing to non-commit' '
|
||||
|
@ -78,7 +78,7 @@ test_expect_success 'branch pointing to non-commit' '
|
|||
test_when_finished "git update-ref -d refs/heads/invalid" &&
|
||||
test_must_fail git fsck 2>out &&
|
||||
cat out &&
|
||||
grep "not a commit" out
|
||||
test_i18ngrep "not a commit" out
|
||||
'
|
||||
|
||||
test_expect_success 'HEAD link pointing at a funny object' '
|
||||
|
@ -88,7 +88,7 @@ test_expect_success 'HEAD link pointing at a funny object' '
|
|||
# avoid corrupt/broken HEAD from interfering with repo discovery
|
||||
test_must_fail env GIT_DIR=.git git fsck 2>out &&
|
||||
cat out &&
|
||||
grep "detached HEAD points" out
|
||||
test_i18ngrep "detached HEAD points" out
|
||||
'
|
||||
|
||||
test_expect_success 'HEAD link pointing at a funny place' '
|
||||
|
@ -98,7 +98,7 @@ test_expect_success 'HEAD link pointing at a funny place' '
|
|||
# avoid corrupt/broken HEAD from interfering with repo discovery
|
||||
test_must_fail env GIT_DIR=.git git fsck 2>out &&
|
||||
cat out &&
|
||||
grep "HEAD points to something strange" out
|
||||
test_i18ngrep "HEAD points to something strange" out
|
||||
'
|
||||
|
||||
test_expect_success 'HEAD link pointing at a funny object (from different wt)' '
|
||||
|
@ -109,7 +109,7 @@ test_expect_success 'HEAD link pointing at a funny object (from different wt)' '
|
|||
echo $ZERO_OID >.git/HEAD &&
|
||||
# avoid corrupt/broken HEAD from interfering with repo discovery
|
||||
test_must_fail git -C wt fsck 2>out &&
|
||||
grep "main-worktree/HEAD: detached HEAD points" out
|
||||
test_i18ngrep "main-worktree/HEAD: detached HEAD points" out
|
||||
'
|
||||
|
||||
test_expect_success 'other worktree HEAD link pointing at a funny object' '
|
||||
|
@ -117,7 +117,7 @@ test_expect_success 'other worktree HEAD link pointing at a funny object' '
|
|||
git worktree add other &&
|
||||
echo $ZERO_OID >.git/worktrees/other/HEAD &&
|
||||
test_must_fail git fsck 2>out &&
|
||||
grep "worktrees/other/HEAD: detached HEAD points" out
|
||||
test_i18ngrep "worktrees/other/HEAD: detached HEAD points" out
|
||||
'
|
||||
|
||||
test_expect_success 'other worktree HEAD link pointing at missing object' '
|
||||
|
@ -125,7 +125,7 @@ test_expect_success 'other worktree HEAD link pointing at missing object' '
|
|||
git worktree add other &&
|
||||
echo "Contents missing from repo" | git hash-object --stdin >.git/worktrees/other/HEAD &&
|
||||
test_must_fail git fsck 2>out &&
|
||||
grep "worktrees/other/HEAD: invalid sha1 pointer" out
|
||||
test_i18ngrep "worktrees/other/HEAD: invalid sha1 pointer" out
|
||||
'
|
||||
|
||||
test_expect_success 'other worktree HEAD link pointing at a funny place' '
|
||||
|
@ -133,7 +133,7 @@ test_expect_success 'other worktree HEAD link pointing at a funny place' '
|
|||
git worktree add other &&
|
||||
echo "ref: refs/funny/place" >.git/worktrees/other/HEAD &&
|
||||
test_must_fail git fsck 2>out &&
|
||||
grep "worktrees/other/HEAD points to something strange" out
|
||||
test_i18ngrep "worktrees/other/HEAD points to something strange" out
|
||||
'
|
||||
|
||||
test_expect_success 'email without @ is okay' '
|
||||
|
@ -157,7 +157,7 @@ test_expect_success 'email with embedded > is not okay' '
|
|||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||
test_must_fail git fsck 2>out &&
|
||||
cat out &&
|
||||
grep "error in commit $new" out
|
||||
test_i18ngrep "error in commit $new" out
|
||||
'
|
||||
|
||||
test_expect_success 'missing < email delimiter is reported nicely' '
|
||||
|
@ -169,7 +169,7 @@ test_expect_success 'missing < email delimiter is reported nicely' '
|
|||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||
test_must_fail git fsck 2>out &&
|
||||
cat out &&
|
||||
grep "error in commit $new.* - bad name" out
|
||||
test_i18ngrep "error in commit $new.* - bad name" out
|
||||
'
|
||||
|
||||
test_expect_success 'missing email is reported nicely' '
|
||||
|
@ -181,7 +181,7 @@ test_expect_success 'missing email is reported nicely' '
|
|||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||
test_must_fail git fsck 2>out &&
|
||||
cat out &&
|
||||
grep "error in commit $new.* - missing email" out
|
||||
test_i18ngrep "error in commit $new.* - missing email" out
|
||||
'
|
||||
|
||||
test_expect_success '> in name is reported' '
|
||||
|
@ -193,7 +193,7 @@ test_expect_success '> in name is reported' '
|
|||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||
test_must_fail git fsck 2>out &&
|
||||
cat out &&
|
||||
grep "error in commit $new" out
|
||||
test_i18ngrep "error in commit $new" out
|
||||
'
|
||||
|
||||
# date is 2^64 + 1
|
||||
|
@ -207,7 +207,7 @@ test_expect_success 'integer overflow in timestamps is reported' '
|
|||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||
test_must_fail git fsck 2>out &&
|
||||
cat out &&
|
||||
grep "error in commit $new.*integer overflow" out
|
||||
test_i18ngrep "error in commit $new.*integer overflow" out
|
||||
'
|
||||
|
||||
test_expect_success 'commit with NUL in header' '
|
||||
|
@ -219,7 +219,7 @@ test_expect_success 'commit with NUL in header' '
|
|||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||
test_must_fail git fsck 2>out &&
|
||||
cat out &&
|
||||
grep "error in commit $new.*unterminated header: NUL at offset" out
|
||||
test_i18ngrep "error in commit $new.*unterminated header: NUL at offset" out
|
||||
'
|
||||
|
||||
test_expect_success 'tree object with duplicate entries' '
|
||||
|
@ -240,7 +240,7 @@ test_expect_success 'tree object with duplicate entries' '
|
|||
git hash-object -w -t tree --stdin
|
||||
) &&
|
||||
test_must_fail git fsck 2>out &&
|
||||
grep "error in tree .*contains duplicate file entries" out
|
||||
test_i18ngrep "error in tree .*contains duplicate file entries" out
|
||||
'
|
||||
|
||||
test_expect_success 'unparseable tree object' '
|
||||
|
@ -294,7 +294,7 @@ test_expect_success 'tag pointing to nonexistent' '
|
|||
test_when_finished "git update-ref -d refs/tags/invalid" &&
|
||||
test_must_fail git fsck --tags >out &&
|
||||
cat out &&
|
||||
grep "broken link" out
|
||||
test_i18ngrep "broken link" out
|
||||
'
|
||||
|
||||
test_expect_success 'tag pointing to something else than its type' '
|
||||
|
@ -336,7 +336,7 @@ test_expect_success 'tag with incorrect tag name & missing tagger' '
|
|||
warning in tag $tag: badTagName: invalid '\''tag'\'' name: wrong name format
|
||||
warning in tag $tag: missingTaggerEntry: invalid format - expected '\''tagger'\'' line
|
||||
EOF
|
||||
test_cmp expect out
|
||||
test_i18ncmp expect out
|
||||
'
|
||||
|
||||
test_expect_success 'tag with bad tagger' '
|
||||
|
@ -355,7 +355,7 @@ test_expect_success 'tag with bad tagger' '
|
|||
echo $tag >.git/refs/tags/wrong &&
|
||||
test_when_finished "git update-ref -d refs/tags/wrong" &&
|
||||
test_must_fail git fsck --tags 2>out &&
|
||||
grep "error in tag .*: invalid author/committer" out
|
||||
test_i18ngrep "error in tag .*: invalid author/committer" out
|
||||
'
|
||||
|
||||
test_expect_success 'tag with NUL in header' '
|
||||
|
@ -375,7 +375,7 @@ test_expect_success 'tag with NUL in header' '
|
|||
test_when_finished "git update-ref -d refs/tags/wrong" &&
|
||||
test_must_fail git fsck --tags 2>out &&
|
||||
cat out &&
|
||||
grep "error in tag $tag.*unterminated header: NUL at offset" out
|
||||
test_i18ngrep "error in tag $tag.*unterminated header: NUL at offset" out
|
||||
'
|
||||
|
||||
test_expect_success 'cleaned up' '
|
||||
|
@ -431,7 +431,7 @@ test_expect_success 'fsck notices blob entry pointing to null sha1' '
|
|||
git hash-object -w --stdin -t tree) &&
|
||||
git fsck 2>out &&
|
||||
cat out &&
|
||||
grep "warning.*null sha1" out
|
||||
test_i18ngrep "warning.*null sha1" out
|
||||
)
|
||||
'
|
||||
|
||||
|
@ -442,7 +442,7 @@ test_expect_success 'fsck notices submodule entry pointing to null sha1' '
|
|||
git hash-object -w --stdin -t tree) &&
|
||||
git fsck 2>out &&
|
||||
cat out &&
|
||||
grep "warning.*null sha1" out
|
||||
test_i18ngrep "warning.*null sha1" out
|
||||
)
|
||||
'
|
||||
|
||||
|
@ -463,7 +463,7 @@ while read name path pretty; do
|
|||
bad_tree=$(git mktree <bad) &&
|
||||
git fsck 2>out &&
|
||||
cat out &&
|
||||
grep "warning.*tree $bad_tree" out
|
||||
test_i18ngrep "warning.*tree $bad_tree" out
|
||||
)'
|
||||
done <<-\EOF
|
||||
100644 blob
|
||||
|
@ -509,9 +509,9 @@ test_expect_success 'NUL in commit' '
|
|||
git branch bad $(cat name) &&
|
||||
|
||||
test_must_fail git -c fsck.nulInCommit=error fsck 2>warn.1 &&
|
||||
grep nulInCommit warn.1 &&
|
||||
test_i18ngrep nulInCommit warn.1 &&
|
||||
git fsck 2>warn.2 &&
|
||||
grep nulInCommit warn.2
|
||||
test_i18ngrep nulInCommit warn.2
|
||||
)
|
||||
'
|
||||
|
||||
|
@ -629,7 +629,7 @@ test_expect_success 'fsck --name-objects' '
|
|||
remove_object $(git rev-parse julius:caesar.t) &&
|
||||
test_must_fail git fsck --name-objects >out &&
|
||||
tree=$(git rev-parse --verify julius:) &&
|
||||
egrep "$tree \((refs/heads/master|HEAD)@\{[0-9]*\}:" out
|
||||
test_i18ngrep -E "$tree \((refs/heads/master|HEAD)@\{[0-9]*\}:" out
|
||||
)
|
||||
'
|
||||
|
||||
|
@ -640,7 +640,7 @@ test_expect_success 'alternate objects are correctly blamed' '
|
|||
mkdir alt.git/objects/12 &&
|
||||
>alt.git/objects/12/34567890123456789012345678901234567890 &&
|
||||
test_must_fail git fsck >out 2>&1 &&
|
||||
grep alt.git out
|
||||
test_i18ngrep alt.git out
|
||||
'
|
||||
|
||||
test_expect_success 'fsck errors in packed objects' '
|
||||
|
@ -659,8 +659,8 @@ test_expect_success 'fsck errors in packed objects' '
|
|||
remove_object $one &&
|
||||
remove_object $two &&
|
||||
test_must_fail git fsck 2>out &&
|
||||
grep "error in commit $one.* - bad name" out &&
|
||||
grep "error in commit $two.* - bad name" out &&
|
||||
test_i18ngrep "error in commit $one.* - bad name" out &&
|
||||
test_i18ngrep "error in commit $two.* - bad name" out &&
|
||||
! grep corrupt out
|
||||
'
|
||||
|
||||
|
@ -760,7 +760,7 @@ test_expect_success 'fsck notices dangling objects' '
|
|||
git fsck >actual &&
|
||||
# the output order is non-deterministic, as it comes from a hash
|
||||
sort <actual >actual.sorted &&
|
||||
test_cmp expect actual.sorted
|
||||
test_i18ncmp expect actual.sorted
|
||||
)
|
||||
'
|
||||
|
||||
|
@ -808,7 +808,7 @@ test_expect_success 'detect corrupt index file in fsck' '
|
|||
test_when_finished "mv .git/index.backup .git/index" &&
|
||||
corrupt_index_checksum &&
|
||||
test_must_fail git fsck --cache 2>errors &&
|
||||
grep "bad index file" errors
|
||||
test_i18ngrep "bad index file" errors
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
|
@ -25,7 +25,7 @@ canned_test_failure () {
|
|||
test_bad_opts () {
|
||||
test_expect_success "invalid args: $1" "
|
||||
test_must_fail git log $1 2>errors &&
|
||||
grep '$2' errors
|
||||
test_i18ngrep '$2' errors
|
||||
"
|
||||
}
|
||||
|
||||
|
|
|
@ -281,7 +281,7 @@ test_expect_success 'upon cloning, check that all refs point to objects' '
|
|||
test_must_fail git -c protocol.version=2 clone \
|
||||
--filter=blob:none $HTTPD_URL/one_time_sed/server repo 2>err &&
|
||||
|
||||
grep "did not send all necessary objects" err &&
|
||||
test_i18ngrep "did not send all necessary objects" err &&
|
||||
|
||||
# Ensure that the one-time-sed script was used.
|
||||
! test -e "$HTTPD_ROOT_PATH/one-time-sed"
|
||||
|
|
|
@ -208,7 +208,7 @@ test_expect_success 'server is initially ahead - no ref in want' '
|
|||
cp -r "$LOCAL_PRISTINE" local &&
|
||||
inconsistency master 1234567890123456789012345678901234567890 &&
|
||||
test_must_fail git -C local fetch 2>err &&
|
||||
grep "ERR upload-pack: not our ref" err
|
||||
test_i18ngrep "ERR upload-pack: not our ref" err
|
||||
'
|
||||
|
||||
test_expect_success 'server is initially ahead - ref in want' '
|
||||
|
@ -254,7 +254,7 @@ test_expect_success 'server loses a ref - ref in want' '
|
|||
echo "s/master/raster/" >"$HTTPD_ROOT_PATH/one-time-sed" &&
|
||||
test_must_fail git -C local fetch 2>err &&
|
||||
|
||||
grep "ERR unknown ref refs/heads/raster" err
|
||||
test_i18ngrep "ERR unknown ref refs/heads/raster" err
|
||||
'
|
||||
|
||||
stop_httpd
|
||||
|
|
|
@ -133,8 +133,8 @@ test_expect_success 'tag replaced commit' '
|
|||
|
||||
test_expect_success '"git fsck" works' '
|
||||
git fsck master >fsck_master.out &&
|
||||
grep "dangling commit $R" fsck_master.out &&
|
||||
grep "dangling tag $(cat .git/refs/tags/mytag)" fsck_master.out &&
|
||||
test_i18ngrep "dangling commit $R" fsck_master.out &&
|
||||
test_i18ngrep "dangling tag $(cat .git/refs/tags/mytag)" fsck_master.out &&
|
||||
test -z "$(git fsck)"
|
||||
'
|
||||
|
||||
|
|
|
@ -154,7 +154,7 @@ test_expect_success 'fsck detects symlinked .gitmodules file' '
|
|||
# symlink detector; this grep string comes from the config
|
||||
# variable name and will not be translated.
|
||||
test_must_fail git fsck 2>output &&
|
||||
grep gitmodulesSymlink output
|
||||
test_i18ngrep gitmodulesSymlink output
|
||||
)
|
||||
'
|
||||
|
||||
|
@ -172,7 +172,7 @@ test_expect_success 'fsck detects non-blob .gitmodules' '
|
|||
git ls-tree HEAD | sed s/subdir/.gitmodules/ | git mktree &&
|
||||
|
||||
test_must_fail git fsck 2>output &&
|
||||
grep gitmodulesBlob output
|
||||
test_i18ngrep gitmodulesBlob output
|
||||
)
|
||||
'
|
||||
|
||||
|
@ -186,7 +186,7 @@ test_expect_success 'fsck detects corrupt .gitmodules' '
|
|||
git commit -m "broken gitmodules" &&
|
||||
|
||||
git fsck 2>output &&
|
||||
grep gitmodulesParse output &&
|
||||
test_i18ngrep gitmodulesParse output &&
|
||||
test_i18ngrep ! "bad config" output
|
||||
)
|
||||
'
|
||||
|
|
Загрузка…
Ссылка в новой задаче