зеркало из https://github.com/microsoft/git.git
fsck: mark strings for translation
Two die() are updated to start with lowercase to be consistent with the rest. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
bbb15c5193
Коммит
674ba34038
106
builtin/fsck.c
106
builtin/fsck.c
|
@ -85,7 +85,7 @@ static const char *printable_type(struct object *obj)
|
||||||
|
|
||||||
ret = type_name(obj->type);
|
ret = type_name(obj->type);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
ret = "unknown";
|
ret = _("unknown");
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,8 @@ static int fsck_config(const char *var, const char *value, void *cb)
|
||||||
static int objerror(struct object *obj, const char *err)
|
static int objerror(struct object *obj, const char *err)
|
||||||
{
|
{
|
||||||
errors_found |= ERROR_OBJECT;
|
errors_found |= ERROR_OBJECT;
|
||||||
fprintf_ln(stderr, "error in %s %s: %s",
|
/* TRANSLATORS: e.g. error in tree 01bfda: <more explanation> */
|
||||||
|
fprintf_ln(stderr, _("error in %s %s: %s"),
|
||||||
printable_type(obj), describe_object(obj), err);
|
printable_type(obj), describe_object(obj), err);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -126,11 +127,13 @@ static int fsck_error_func(struct fsck_options *o,
|
||||||
{
|
{
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case FSCK_WARN:
|
case FSCK_WARN:
|
||||||
fprintf_ln(stderr, "warning in %s %s: %s",
|
/* TRANSLATORS: e.g. warning in tree 01bfda: <more explanation> */
|
||||||
|
fprintf_ln(stderr, _("warning in %s %s: %s"),
|
||||||
printable_type(obj), describe_object(obj), message);
|
printable_type(obj), describe_object(obj), message);
|
||||||
return 0;
|
return 0;
|
||||||
case FSCK_ERROR:
|
case FSCK_ERROR:
|
||||||
fprintf_ln(stderr, "error in %s %s: %s",
|
/* TRANSLATORS: e.g. error in tree 01bfda: <more explanation> */
|
||||||
|
fprintf_ln(stderr, _("error in %s %s: %s"),
|
||||||
printable_type(obj), describe_object(obj), message);
|
printable_type(obj), describe_object(obj), message);
|
||||||
return 1;
|
return 1;
|
||||||
default:
|
default:
|
||||||
|
@ -151,17 +154,18 @@ static int mark_object(struct object *obj, int type, void *data, struct fsck_opt
|
||||||
*/
|
*/
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
/* ... these references to parent->fld are safe here */
|
/* ... these references to parent->fld are safe here */
|
||||||
printf("broken link from %7s %s\n",
|
printf_ln(_("broken link from %7s %s"),
|
||||||
printable_type(parent), describe_object(parent));
|
printable_type(parent), describe_object(parent));
|
||||||
printf("broken link from %7s %s\n",
|
printf_ln(_("broken link from %7s %s"),
|
||||||
(type == OBJ_ANY ? "unknown" : type_name(type)), "unknown");
|
(type == OBJ_ANY ? _("unknown") : type_name(type)),
|
||||||
|
_("unknown"));
|
||||||
errors_found |= ERROR_REACHABLE;
|
errors_found |= ERROR_REACHABLE;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type != OBJ_ANY && obj->type != type)
|
if (type != OBJ_ANY && obj->type != type)
|
||||||
/* ... and the reference to parent is safe here */
|
/* ... 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)
|
if (obj->flags & REACHABLE)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -177,8 +181,8 @@ static int mark_object(struct object *obj, int type, void *data, struct fsck_opt
|
||||||
|
|
||||||
if (!(obj->flags & HAS_OBJ)) {
|
if (!(obj->flags & HAS_OBJ)) {
|
||||||
if (parent && !has_object_file(&obj->oid)) {
|
if (parent && !has_object_file(&obj->oid)) {
|
||||||
printf_ln("broken link from %7s %s\n"
|
printf_ln(_("broken link from %7s %s\n"
|
||||||
" to %7s %s",
|
" to %7s %s"),
|
||||||
printable_type(parent),
|
printable_type(parent),
|
||||||
describe_object(parent),
|
describe_object(parent),
|
||||||
printable_type(obj),
|
printable_type(obj),
|
||||||
|
@ -246,8 +250,8 @@ static void check_reachable_object(struct object *obj)
|
||||||
return;
|
return;
|
||||||
if (has_object_pack(&obj->oid))
|
if (has_object_pack(&obj->oid))
|
||||||
return; /* it is in pack - forget about it */
|
return; /* it is in pack - forget about it */
|
||||||
printf("missing %s %s\n", printable_type(obj),
|
printf_ln(_("missing %s %s"), printable_type(obj),
|
||||||
describe_object(obj));
|
describe_object(obj));
|
||||||
errors_found |= ERROR_REACHABLE;
|
errors_found |= ERROR_REACHABLE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -272,8 +276,8 @@ static void check_unreachable_object(struct object *obj)
|
||||||
* since this is something that is prunable.
|
* since this is something that is prunable.
|
||||||
*/
|
*/
|
||||||
if (show_unreachable) {
|
if (show_unreachable) {
|
||||||
printf("unreachable %s %s\n", printable_type(obj),
|
printf_ln(_("unreachable %s %s"), printable_type(obj),
|
||||||
describe_object(obj));
|
describe_object(obj));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -291,8 +295,8 @@ static void check_unreachable_object(struct object *obj)
|
||||||
*/
|
*/
|
||||||
if (!(obj->flags & USED)) {
|
if (!(obj->flags & USED)) {
|
||||||
if (show_dangling)
|
if (show_dangling)
|
||||||
printf("dangling %s %s\n", printable_type(obj),
|
printf_ln(_("dangling %s %s"), printable_type(obj),
|
||||||
describe_object(obj));
|
describe_object(obj));
|
||||||
if (write_lost_and_found) {
|
if (write_lost_and_found) {
|
||||||
char *filename = git_pathdup("lost-found/%s/%s",
|
char *filename = git_pathdup("lost-found/%s/%s",
|
||||||
obj->type == OBJ_COMMIT ? "commit" : "other",
|
obj->type == OBJ_COMMIT ? "commit" : "other",
|
||||||
|
@ -300,18 +304,18 @@ static void check_unreachable_object(struct object *obj)
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
|
||||||
if (safe_create_leading_directories_const(filename)) {
|
if (safe_create_leading_directories_const(filename)) {
|
||||||
error("Could not create lost-found");
|
error(_("could not create lost-found"));
|
||||||
free(filename);
|
free(filename);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
f = xfopen(filename, "w");
|
f = xfopen(filename, "w");
|
||||||
if (obj->type == OBJ_BLOB) {
|
if (obj->type == OBJ_BLOB) {
|
||||||
if (stream_blob_to_fd(fileno(f), &obj->oid, NULL, 1))
|
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
|
} else
|
||||||
fprintf(f, "%s\n", describe_object(obj));
|
fprintf(f, "%s\n", describe_object(obj));
|
||||||
if (fclose(f))
|
if (fclose(f))
|
||||||
die_errno("Could not finish '%s'",
|
die_errno(_("could not finish '%s'"),
|
||||||
filename);
|
filename);
|
||||||
free(filename);
|
free(filename);
|
||||||
}
|
}
|
||||||
|
@ -328,7 +332,7 @@ static void check_unreachable_object(struct object *obj)
|
||||||
static void check_object(struct object *obj)
|
static void check_object(struct object *obj)
|
||||||
{
|
{
|
||||||
if (verbose)
|
if (verbose)
|
||||||
fprintf(stderr, "Checking %s\n", describe_object(obj));
|
fprintf_ln(stderr, _("Checking %s"), describe_object(obj));
|
||||||
|
|
||||||
if (obj->flags & REACHABLE)
|
if (obj->flags & REACHABLE)
|
||||||
check_reachable_object(obj);
|
check_reachable_object(obj);
|
||||||
|
@ -346,7 +350,7 @@ static void check_connectivity(void)
|
||||||
/* Look up all the requirements, warn about missing objects.. */
|
/* Look up all the requirements, warn about missing objects.. */
|
||||||
max = get_max_object_index();
|
max = get_max_object_index();
|
||||||
if (verbose)
|
if (verbose)
|
||||||
fprintf(stderr, "Checking connectivity (%d objects)\n", max);
|
fprintf_ln(stderr, _("Checking connectivity (%d objects)"), max);
|
||||||
|
|
||||||
for (i = 0; i < max; i++) {
|
for (i = 0; i < max; i++) {
|
||||||
struct object *obj = get_indexed_object(i);
|
struct object *obj = get_indexed_object(i);
|
||||||
|
@ -365,11 +369,11 @@ static int fsck_obj(struct object *obj, void *buffer, unsigned long size)
|
||||||
obj->flags |= SEEN;
|
obj->flags |= SEEN;
|
||||||
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
fprintf(stderr, "Checking %s %s\n",
|
fprintf_ln(stderr, _("Checking %s %s"),
|
||||||
printable_type(obj), describe_object(obj));
|
printable_type(obj), describe_object(obj));
|
||||||
|
|
||||||
if (fsck_walk(obj, NULL, &fsck_obj_options))
|
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);
|
err = fsck_object(obj, buffer, size, &fsck_obj_options);
|
||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -378,14 +382,15 @@ static int fsck_obj(struct object *obj, void *buffer, unsigned long size)
|
||||||
struct commit *commit = (struct commit *) obj;
|
struct commit *commit = (struct commit *) obj;
|
||||||
|
|
||||||
if (!commit->parents && show_root)
|
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) {
|
if (obj->type == OBJ_TAG) {
|
||||||
struct tag *tag = (struct tag *) obj;
|
struct tag *tag = (struct tag *) obj;
|
||||||
|
|
||||||
if (show_tags && tag->tagged) {
|
if (show_tags && tag->tagged) {
|
||||||
printf_ln("tagged %s %s (%s) in %s",
|
printf_ln(_("tagged %s %s (%s) in %s"),
|
||||||
printable_type(tag->tagged),
|
printable_type(tag->tagged),
|
||||||
describe_object(tag->tagged),
|
describe_object(tag->tagged),
|
||||||
tag->tag,
|
tag->tag,
|
||||||
|
@ -413,7 +418,8 @@ static int fsck_obj_buffer(const struct object_id *oid, enum object_type type,
|
||||||
eaten);
|
eaten);
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
errors_found |= ERROR_OBJECT;
|
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 &= ~(REACHABLE | SEEN);
|
||||||
obj->flags |= HAS_OBJ;
|
obj->flags |= HAS_OBJ;
|
||||||
|
@ -437,7 +443,8 @@ static void fsck_handle_reflog_oid(const char *refname, struct object_id *oid,
|
||||||
obj->flags |= USED;
|
obj->flags |= USED;
|
||||||
mark_object_reachable(obj);
|
mark_object_reachable(obj);
|
||||||
} else if (!is_promisor_object(oid)) {
|
} 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;
|
errors_found |= ERROR_REACHABLE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -450,8 +457,8 @@ static int fsck_handle_reflog_ent(struct object_id *ooid, struct object_id *noid
|
||||||
const char *refname = cb_data;
|
const char *refname = cb_data;
|
||||||
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
fprintf(stderr, "Checking reflog %s->%s\n",
|
fprintf_ln(stderr, _("Checking reflog %s->%s"),
|
||||||
oid_to_hex(ooid), oid_to_hex(noid));
|
oid_to_hex(ooid), oid_to_hex(noid));
|
||||||
|
|
||||||
fsck_handle_reflog_oid(refname, ooid, 0);
|
fsck_handle_reflog_oid(refname, ooid, 0);
|
||||||
fsck_handle_reflog_oid(refname, noid, timestamp);
|
fsck_handle_reflog_oid(refname, noid, timestamp);
|
||||||
|
@ -480,13 +487,14 @@ static int fsck_handle_ref(const char *refname, const struct object_id *oid,
|
||||||
default_refs++;
|
default_refs++;
|
||||||
return 0;
|
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;
|
errors_found |= ERROR_REACHABLE;
|
||||||
/* We'll continue with the rest despite the error.. */
|
/* We'll continue with the rest despite the error.. */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (obj->type != OBJ_COMMIT && is_branch(refname)) {
|
if (obj->type != OBJ_COMMIT && is_branch(refname)) {
|
||||||
error("%s: not a commit", refname);
|
error(_("%s: not a commit"), refname);
|
||||||
errors_found |= ERROR_REFS;
|
errors_found |= ERROR_REFS;
|
||||||
}
|
}
|
||||||
default_refs++;
|
default_refs++;
|
||||||
|
@ -520,7 +528,7 @@ static void get_default_heads(void)
|
||||||
* "show_unreachable" flag.
|
* "show_unreachable" flag.
|
||||||
*/
|
*/
|
||||||
if (!default_refs) {
|
if (!default_refs) {
|
||||||
fprintf(stderr, "notice: No default references\n");
|
fprintf_ln(stderr, _("notice: No default references"));
|
||||||
show_unreachable = 0;
|
show_unreachable = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -535,7 +543,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) {
|
if (read_loose_object(path, oid, &type, &size, &contents) < 0) {
|
||||||
errors_found |= ERROR_OBJECT;
|
errors_found |= ERROR_OBJECT;
|
||||||
error("%s: object corrupt or missing: %s",
|
error(_("%s: object corrupt or missing: %s"),
|
||||||
oid_to_hex(oid), path);
|
oid_to_hex(oid), path);
|
||||||
return 0; /* keep checking other objects */
|
return 0; /* keep checking other objects */
|
||||||
}
|
}
|
||||||
|
@ -548,7 +556,7 @@ static int fsck_loose(const struct object_id *oid, const char *path, void *data)
|
||||||
|
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
errors_found |= ERROR_OBJECT;
|
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);
|
oid_to_hex(oid), path);
|
||||||
if (!eaten)
|
if (!eaten)
|
||||||
free(contents);
|
free(contents);
|
||||||
|
@ -568,7 +576,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)
|
static int fsck_cruft(const char *basename, const char *path, void *data)
|
||||||
{
|
{
|
||||||
if (!starts_with(basename, "tmp_obj_"))
|
if (!starts_with(basename, "tmp_obj_"))
|
||||||
fprintf(stderr, "bad sha1 file: %s\n", path);
|
fprintf_ln(stderr, _("bad sha1 file: %s"), path);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -583,7 +591,7 @@ static void fsck_object_dir(const char *path)
|
||||||
struct progress *progress = NULL;
|
struct progress *progress = NULL;
|
||||||
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
fprintf(stderr, "Checking object directory\n");
|
fprintf_ln(stderr, _("Checking object directory"));
|
||||||
|
|
||||||
if (show_progress)
|
if (show_progress)
|
||||||
progress = start_progress(_("Checking object directories"), 256);
|
progress = start_progress(_("Checking object directories"), 256);
|
||||||
|
@ -599,28 +607,28 @@ static int fsck_head_link(void)
|
||||||
int null_is_error = 0;
|
int null_is_error = 0;
|
||||||
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
fprintf(stderr, "Checking HEAD link\n");
|
fprintf_ln(stderr, _("Checking HEAD link"));
|
||||||
|
|
||||||
head_points_at = resolve_ref_unsafe("HEAD", 0, &head_oid, NULL);
|
head_points_at = resolve_ref_unsafe("HEAD", 0, &head_oid, NULL);
|
||||||
if (!head_points_at) {
|
if (!head_points_at) {
|
||||||
errors_found |= ERROR_REFS;
|
errors_found |= ERROR_REFS;
|
||||||
return error("Invalid HEAD");
|
return error(_("invalid HEAD"));
|
||||||
}
|
}
|
||||||
if (!strcmp(head_points_at, "HEAD"))
|
if (!strcmp(head_points_at, "HEAD"))
|
||||||
/* detached HEAD */
|
/* detached HEAD */
|
||||||
null_is_error = 1;
|
null_is_error = 1;
|
||||||
else if (!starts_with(head_points_at, "refs/heads/")) {
|
else if (!starts_with(head_points_at, "refs/heads/")) {
|
||||||
errors_found |= ERROR_REFS;
|
errors_found |= ERROR_REFS;
|
||||||
return error("HEAD points to something strange (%s)",
|
return error(_("HEAD points to something strange (%s)"),
|
||||||
head_points_at);
|
head_points_at);
|
||||||
}
|
}
|
||||||
if (is_null_oid(&head_oid)) {
|
if (is_null_oid(&head_oid)) {
|
||||||
if (null_is_error) {
|
if (null_is_error) {
|
||||||
errors_found |= ERROR_REFS;
|
errors_found |= ERROR_REFS;
|
||||||
return error("HEAD: detached HEAD points at nothing");
|
return error(_("HEAD: detached HEAD points at nothing"));
|
||||||
}
|
}
|
||||||
fprintf(stderr, "notice: HEAD points to an unborn branch (%s)\n",
|
fprintf_ln(stderr, _("notice: HEAD points to an unborn branch (%s)"),
|
||||||
head_points_at + 11);
|
head_points_at + 11);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -631,12 +639,12 @@ static int fsck_cache_tree(struct cache_tree *it)
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
fprintf(stderr, "Checking cache tree\n");
|
fprintf_ln(stderr, _("Checking cache tree"));
|
||||||
|
|
||||||
if (0 <= it->entry_count) {
|
if (0 <= it->entry_count) {
|
||||||
struct object *obj = parse_object(the_repository, &it->oid);
|
struct object *obj = parse_object(the_repository, &it->oid);
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
error("%s: invalid sha1 pointer in cache-tree",
|
error(_("%s: invalid sha1 pointer in cache-tree"),
|
||||||
oid_to_hex(&it->oid));
|
oid_to_hex(&it->oid));
|
||||||
errors_found |= ERROR_REFS;
|
errors_found |= ERROR_REFS;
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -647,7 +655,7 @@ static int fsck_cache_tree(struct cache_tree *it)
|
||||||
obj, xstrdup(":"));
|
obj, xstrdup(":"));
|
||||||
mark_object_reachable(obj);
|
mark_object_reachable(obj);
|
||||||
if (obj->type != OBJ_TREE)
|
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++)
|
for (i = 0; i < it->subtree_nr; i++)
|
||||||
err |= fsck_cache_tree(it->down[i]->cache_tree);
|
err |= fsck_cache_tree(it->down[i]->cache_tree);
|
||||||
|
@ -789,7 +797,7 @@ int cmd_fsck(int argc, const char **argv, const char *prefix)
|
||||||
if (!obj || !(obj->flags & HAS_OBJ)) {
|
if (!obj || !(obj->flags & HAS_OBJ)) {
|
||||||
if (is_promisor_object(&oid))
|
if (is_promisor_object(&oid))
|
||||||
continue;
|
continue;
|
||||||
error("%s: object missing", oid_to_hex(&oid));
|
error(_("%s: object missing"), oid_to_hex(&oid));
|
||||||
errors_found |= ERROR_OBJECT;
|
errors_found |= ERROR_OBJECT;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -801,7 +809,7 @@ int cmd_fsck(int argc, const char **argv, const char *prefix)
|
||||||
mark_object_reachable(obj);
|
mark_object_reachable(obj);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
error("invalid parameter: expected sha1, got '%s'", arg);
|
error(_("invalid parameter: expected sha1, got '%s'"), arg);
|
||||||
errors_found |= ERROR_OBJECT;
|
errors_found |= ERROR_OBJECT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,12 +20,12 @@ check_have () {
|
||||||
}
|
}
|
||||||
|
|
||||||
check_fsck () {
|
check_fsck () {
|
||||||
output=$(git fsck --full)
|
git fsck --full >fsck.output
|
||||||
case "$1" in
|
case "$1" in
|
||||||
'')
|
'')
|
||||||
test -z "$output" ;;
|
test_must_be_empty fsck.output ;;
|
||||||
*)
|
*)
|
||||||
echo "$output" | grep "$1" ;;
|
test_i18ngrep "$1" fsck.output ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ test_expect_success 'object with bad sha1' '
|
||||||
|
|
||||||
test_must_fail git fsck 2>out &&
|
test_must_fail git fsck 2>out &&
|
||||||
cat out &&
|
cat out &&
|
||||||
grep "$sha.*corrupt" out
|
test_i18ngrep "$sha.*corrupt" out
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'branch pointing to non-commit' '
|
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_when_finished "git update-ref -d refs/heads/invalid" &&
|
||||||
test_must_fail git fsck 2>out &&
|
test_must_fail git fsck 2>out &&
|
||||||
cat out &&
|
cat out &&
|
||||||
grep "not a commit" out
|
test_i18ngrep "not a commit" out
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'HEAD link pointing at a funny object' '
|
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
|
# avoid corrupt/broken HEAD from interfering with repo discovery
|
||||||
test_must_fail env GIT_DIR=.git git fsck 2>out &&
|
test_must_fail env GIT_DIR=.git git fsck 2>out &&
|
||||||
cat out &&
|
cat out &&
|
||||||
grep "detached HEAD points" out
|
test_i18ngrep "detached HEAD points" out
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'HEAD link pointing at a funny place' '
|
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
|
# avoid corrupt/broken HEAD from interfering with repo discovery
|
||||||
test_must_fail env GIT_DIR=.git git fsck 2>out &&
|
test_must_fail env GIT_DIR=.git git fsck 2>out &&
|
||||||
cat out &&
|
cat out &&
|
||||||
grep "HEAD points to something strange" out
|
test_i18ngrep "HEAD points to something strange" out
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'email without @ is okay' '
|
test_expect_success 'email without @ is okay' '
|
||||||
|
@ -122,7 +122,7 @@ test_expect_success 'email with embedded > is not okay' '
|
||||||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||||
test_must_fail git fsck 2>out &&
|
test_must_fail git fsck 2>out &&
|
||||||
cat 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' '
|
test_expect_success 'missing < email delimiter is reported nicely' '
|
||||||
|
@ -134,7 +134,7 @@ test_expect_success 'missing < email delimiter is reported nicely' '
|
||||||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||||
test_must_fail git fsck 2>out &&
|
test_must_fail git fsck 2>out &&
|
||||||
cat 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' '
|
test_expect_success 'missing email is reported nicely' '
|
||||||
|
@ -146,7 +146,7 @@ test_expect_success 'missing email is reported nicely' '
|
||||||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||||
test_must_fail git fsck 2>out &&
|
test_must_fail git fsck 2>out &&
|
||||||
cat 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' '
|
test_expect_success '> in name is reported' '
|
||||||
|
@ -158,7 +158,7 @@ test_expect_success '> in name is reported' '
|
||||||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||||
test_must_fail git fsck 2>out &&
|
test_must_fail git fsck 2>out &&
|
||||||
cat out &&
|
cat out &&
|
||||||
grep "error in commit $new" out
|
test_i18ngrep "error in commit $new" out
|
||||||
'
|
'
|
||||||
|
|
||||||
# date is 2^64 + 1
|
# date is 2^64 + 1
|
||||||
|
@ -172,7 +172,7 @@ test_expect_success 'integer overflow in timestamps is reported' '
|
||||||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||||
test_must_fail git fsck 2>out &&
|
test_must_fail git fsck 2>out &&
|
||||||
cat 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' '
|
test_expect_success 'commit with NUL in header' '
|
||||||
|
@ -184,7 +184,7 @@ test_expect_success 'commit with NUL in header' '
|
||||||
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
test_when_finished "git update-ref -d refs/heads/bogus" &&
|
||||||
test_must_fail git fsck 2>out &&
|
test_must_fail git fsck 2>out &&
|
||||||
cat 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' '
|
test_expect_success 'tree object with duplicate entries' '
|
||||||
|
@ -205,7 +205,7 @@ test_expect_success 'tree object with duplicate entries' '
|
||||||
git hash-object -w -t tree --stdin
|
git hash-object -w -t tree --stdin
|
||||||
) &&
|
) &&
|
||||||
test_must_fail git fsck 2>out &&
|
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' '
|
test_expect_success 'unparseable tree object' '
|
||||||
|
@ -259,7 +259,7 @@ test_expect_success 'tag pointing to nonexistent' '
|
||||||
test_when_finished "git update-ref -d refs/tags/invalid" &&
|
test_when_finished "git update-ref -d refs/tags/invalid" &&
|
||||||
test_must_fail git fsck --tags >out &&
|
test_must_fail git fsck --tags >out &&
|
||||||
cat out &&
|
cat out &&
|
||||||
grep "broken link" out
|
test_i18ngrep "broken link" out
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'tag pointing to something else than its type' '
|
test_expect_success 'tag pointing to something else than its type' '
|
||||||
|
@ -301,7 +301,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: badTagName: invalid '\''tag'\'' name: wrong name format
|
||||||
warning in tag $tag: missingTaggerEntry: invalid format - expected '\''tagger'\'' line
|
warning in tag $tag: missingTaggerEntry: invalid format - expected '\''tagger'\'' line
|
||||||
EOF
|
EOF
|
||||||
test_cmp expect out
|
test_i18ncmp expect out
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'tag with bad tagger' '
|
test_expect_success 'tag with bad tagger' '
|
||||||
|
@ -320,7 +320,7 @@ test_expect_success 'tag with bad tagger' '
|
||||||
echo $tag >.git/refs/tags/wrong &&
|
echo $tag >.git/refs/tags/wrong &&
|
||||||
test_when_finished "git update-ref -d refs/tags/wrong" &&
|
test_when_finished "git update-ref -d refs/tags/wrong" &&
|
||||||
test_must_fail git fsck --tags 2>out &&
|
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' '
|
test_expect_success 'tag with NUL in header' '
|
||||||
|
@ -340,7 +340,7 @@ test_expect_success 'tag with NUL in header' '
|
||||||
test_when_finished "git update-ref -d refs/tags/wrong" &&
|
test_when_finished "git update-ref -d refs/tags/wrong" &&
|
||||||
test_must_fail git fsck --tags 2>out &&
|
test_must_fail git fsck --tags 2>out &&
|
||||||
cat 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' '
|
test_expect_success 'cleaned up' '
|
||||||
|
@ -396,7 +396,7 @@ test_expect_success 'fsck notices blob entry pointing to null sha1' '
|
||||||
git hash-object -w --stdin -t tree) &&
|
git hash-object -w --stdin -t tree) &&
|
||||||
git fsck 2>out &&
|
git fsck 2>out &&
|
||||||
cat out &&
|
cat out &&
|
||||||
grep "warning.*null sha1" out
|
test_i18ngrep "warning.*null sha1" out
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -407,7 +407,7 @@ test_expect_success 'fsck notices submodule entry pointing to null sha1' '
|
||||||
git hash-object -w --stdin -t tree) &&
|
git hash-object -w --stdin -t tree) &&
|
||||||
git fsck 2>out &&
|
git fsck 2>out &&
|
||||||
cat out &&
|
cat out &&
|
||||||
grep "warning.*null sha1" out
|
test_i18ngrep "warning.*null sha1" out
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -428,7 +428,7 @@ while read name path pretty; do
|
||||||
bad_tree=$(git mktree <bad) &&
|
bad_tree=$(git mktree <bad) &&
|
||||||
git fsck 2>out &&
|
git fsck 2>out &&
|
||||||
cat out &&
|
cat out &&
|
||||||
grep "warning.*tree $bad_tree" out
|
test_i18ngrep "warning.*tree $bad_tree" out
|
||||||
)'
|
)'
|
||||||
done <<-\EOF
|
done <<-\EOF
|
||||||
100644 blob
|
100644 blob
|
||||||
|
@ -474,9 +474,9 @@ test_expect_success 'NUL in commit' '
|
||||||
git branch bad $(cat name) &&
|
git branch bad $(cat name) &&
|
||||||
|
|
||||||
test_must_fail git -c fsck.nulInCommit=error fsck 2>warn.1 &&
|
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 &&
|
git fsck 2>warn.2 &&
|
||||||
grep nulInCommit warn.2
|
test_i18ngrep nulInCommit warn.2
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -594,7 +594,7 @@ test_expect_success 'fsck --name-objects' '
|
||||||
remove_object $(git rev-parse julius:caesar.t) &&
|
remove_object $(git rev-parse julius:caesar.t) &&
|
||||||
test_must_fail git fsck --name-objects >out &&
|
test_must_fail git fsck --name-objects >out &&
|
||||||
tree=$(git rev-parse --verify julius:) &&
|
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
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -605,7 +605,7 @@ test_expect_success 'alternate objects are correctly blamed' '
|
||||||
mkdir alt.git/objects/12 &&
|
mkdir alt.git/objects/12 &&
|
||||||
>alt.git/objects/12/34567890123456789012345678901234567890 &&
|
>alt.git/objects/12/34567890123456789012345678901234567890 &&
|
||||||
test_must_fail git fsck >out 2>&1 &&
|
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' '
|
test_expect_success 'fsck errors in packed objects' '
|
||||||
|
@ -624,8 +624,8 @@ test_expect_success 'fsck errors in packed objects' '
|
||||||
remove_object $one &&
|
remove_object $one &&
|
||||||
remove_object $two &&
|
remove_object $two &&
|
||||||
test_must_fail git fsck 2>out &&
|
test_must_fail git fsck 2>out &&
|
||||||
grep "error in commit $one.* - bad name" out &&
|
test_i18ngrep "error in commit $one.* - bad name" out &&
|
||||||
grep "error in commit $two.* - bad name" out &&
|
test_i18ngrep "error in commit $two.* - bad name" out &&
|
||||||
! grep corrupt out
|
! grep corrupt out
|
||||||
'
|
'
|
||||||
|
|
||||||
|
@ -706,7 +706,7 @@ test_expect_success 'fsck notices dangling objects' '
|
||||||
git fsck >actual &&
|
git fsck >actual &&
|
||||||
# the output order is non-deterministic, as it comes from a hash
|
# the output order is non-deterministic, as it comes from a hash
|
||||||
sort <actual >actual.sorted &&
|
sort <actual >actual.sorted &&
|
||||||
test_cmp expect actual.sorted
|
test_i18ncmp expect actual.sorted
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
|
|
@ -133,8 +133,8 @@ test_expect_success 'tag replaced commit' '
|
||||||
|
|
||||||
test_expect_success '"git fsck" works' '
|
test_expect_success '"git fsck" works' '
|
||||||
git fsck master >fsck_master.out &&
|
git fsck master >fsck_master.out &&
|
||||||
grep "dangling commit $R" fsck_master.out &&
|
test_i18ngrep "dangling commit $R" fsck_master.out &&
|
||||||
grep "dangling tag $(cat .git/refs/tags/mytag)" fsck_master.out &&
|
test_i18ngrep "dangling tag $(cat .git/refs/tags/mytag)" fsck_master.out &&
|
||||||
test -z "$(git fsck)"
|
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
|
# symlink detector; this grep string comes from the config
|
||||||
# variable name and will not be translated.
|
# variable name and will not be translated.
|
||||||
test_must_fail git fsck 2>output &&
|
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 &&
|
git ls-tree HEAD | sed s/subdir/.gitmodules/ | git mktree &&
|
||||||
|
|
||||||
test_must_fail git fsck 2>output &&
|
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 commit -m "broken gitmodules" &&
|
||||||
|
|
||||||
git fsck 2>output &&
|
git fsck 2>output &&
|
||||||
grep gitmodulesParse output &&
|
test_i18ngrep gitmodulesParse output &&
|
||||||
test_i18ngrep ! "bad config" output
|
test_i18ngrep ! "bad config" output
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
Загрузка…
Ссылка в новой задаче