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:
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_BAD_ENDING 1
|
||||||
#define SPLIT_CMDLINE_UNCLOSED_QUOTE 2
|
#define SPLIT_CMDLINE_UNCLOSED_QUOTE 2
|
||||||
static const char *split_cmdline_errors[] = {
|
static const char *split_cmdline_errors[] = {
|
||||||
"cmdline ends with \\",
|
N_("cmdline ends with \\"),
|
||||||
"unclosed quote"
|
N_("unclosed quote")
|
||||||
};
|
};
|
||||||
|
|
||||||
int split_cmdline(char *cmdline, const char ***argv)
|
int split_cmdline(char *cmdline, const char ***argv)
|
||||||
|
|||||||
@@ -391,12 +391,12 @@ static void parse_treeish_arg(const char **argv,
|
|||||||
int refnamelen = colon - name;
|
int refnamelen = colon - name;
|
||||||
|
|
||||||
if (!dwim_ref(name, refnamelen, &oid, &ref))
|
if (!dwim_ref(name, refnamelen, &oid, &ref))
|
||||||
die("no such ref: %.*s", refnamelen, name);
|
die(_("no such ref: %.*s"), refnamelen, name);
|
||||||
free(ref);
|
free(ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (get_oid(name, &oid))
|
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);
|
commit = lookup_commit_reference_gently(ar_args->repo, &oid, 1);
|
||||||
if (commit) {
|
if (commit) {
|
||||||
@@ -409,7 +409,7 @@ static void parse_treeish_arg(const char **argv,
|
|||||||
|
|
||||||
tree = parse_tree_indirect(&oid);
|
tree = parse_tree_indirect(&oid);
|
||||||
if (tree == NULL)
|
if (tree == NULL)
|
||||||
die("not a tree object");
|
die(_("not a tree object: %s"), oid_to_hex(&oid));
|
||||||
|
|
||||||
if (prefix) {
|
if (prefix) {
|
||||||
struct object_id tree_oid;
|
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,
|
err = get_tree_entry(&tree->object.oid, prefix, &tree_oid,
|
||||||
&mode);
|
&mode);
|
||||||
if (err || !S_ISDIR(mode))
|
if (err || !S_ISDIR(mode))
|
||||||
die("current working directory is untracked");
|
die(_("current working directory is untracked"));
|
||||||
|
|
||||||
tree = parse_tree_indirect(&tree_oid);
|
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 &&
|
if (strlen(ATTRIBUTE_MACRO_PREFIX) < namelen &&
|
||||||
starts_with(name, ATTRIBUTE_MACRO_PREFIX)) {
|
starts_with(name, ATTRIBUTE_MACRO_PREFIX)) {
|
||||||
if (!macro_ok) {
|
if (!macro_ok) {
|
||||||
fprintf(stderr, "%s not allowed: %s:%d\n",
|
fprintf_ln(stderr, _("%s not allowed: %s:%d"),
|
||||||
name, src, lineno);
|
name, src, lineno);
|
||||||
goto fail_return;
|
goto fail_return;
|
||||||
}
|
}
|
||||||
is_macro = 1;
|
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 const char *describe_object(struct object *obj)
|
||||||
{
|
{
|
||||||
static struct strbuf buf = STRBUF_INIT;
|
static struct strbuf bufs[] = {
|
||||||
char *name = name_objects ?
|
STRBUF_INIT, STRBUF_INIT, STRBUF_INIT, STRBUF_INIT
|
||||||
lookup_decoration(fsck_walk_options.object_names, obj) : NULL;
|
};
|
||||||
|
static int b = 0;
|
||||||
|
struct strbuf *buf;
|
||||||
|
char *name = NULL;
|
||||||
|
|
||||||
strbuf_reset(&buf);
|
if (name_objects)
|
||||||
strbuf_addstr(&buf, oid_to_hex(&obj->oid));
|
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)
|
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)
|
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);
|
ret = type_name(obj->type);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
ret = "unknown";
|
ret = _("unknown");
|
||||||
|
|
||||||
return ret;
|
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);
|
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)
|
static int objerror(struct object *obj, const char *err)
|
||||||
{
|
{
|
||||||
errors_found |= ERROR_OBJECT;
|
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;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fsck_error_func(struct fsck_options *o,
|
static int fsck_error_func(struct fsck_options *o,
|
||||||
struct object *obj, int type, const char *message)
|
struct object *obj, int type, const char *message)
|
||||||
{
|
{
|
||||||
objreport(obj, (type == FSCK_WARN) ? "warning" : "error", message);
|
switch (type) {
|
||||||
return (type == FSCK_WARN) ? 0 : 1;
|
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;
|
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) {
|
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;
|
||||||
@@ -164,10 +180,12 @@ 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("broken link from %7s %s\n",
|
printf_ln(_("broken link from %7s %s\n"
|
||||||
printable_type(parent), describe_object(parent));
|
" to %7s %s"),
|
||||||
printf(" to %7s %s\n",
|
printable_type(parent),
|
||||||
printable_type(obj), describe_object(obj));
|
describe_object(parent),
|
||||||
|
printable_type(obj),
|
||||||
|
describe_object(obj));
|
||||||
errors_found |= ERROR_REACHABLE;
|
errors_found |= ERROR_REACHABLE;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
@@ -231,8 +249,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;
|
||||||
}
|
}
|
||||||
@@ -257,8 +275,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -276,8 +294,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",
|
||||||
@@ -285,18 +303,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);
|
||||||
}
|
}
|
||||||
@@ -313,7 +331,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);
|
||||||
@@ -331,7 +349,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);
|
||||||
@@ -350,11 +368,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;
|
||||||
@@ -363,17 +381,19 @@ 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("tagged %s %s", printable_type(tag->tagged),
|
printf_ln(_("tagged %s %s (%s) in %s"),
|
||||||
describe_object(tag->tagged));
|
printable_type(tag->tagged),
|
||||||
printf(" (%s) in %s\n", tag->tag,
|
describe_object(tag->tagged),
|
||||||
describe_object(&tag->object));
|
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);
|
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;
|
||||||
@@ -421,7 +442,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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -434,8 +456,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);
|
||||||
@@ -468,13 +490,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++;
|
||||||
@@ -529,7 +552,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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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) {
|
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 */
|
||||||
}
|
}
|
||||||
@@ -557,7 +580,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);
|
||||||
@@ -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)
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -592,7 +615,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);
|
||||||
@@ -610,29 +633,30 @@ static int fsck_head_link(const char *head_ref_name,
|
|||||||
int null_is_error = 0;
|
int null_is_error = 0;
|
||||||
|
|
||||||
if (verbose)
|
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);
|
*head_points_at = resolve_ref_unsafe(head_ref_name, 0, head_oid, NULL);
|
||||||
if (!*head_points_at) {
|
if (!*head_points_at) {
|
||||||
errors_found |= ERROR_REFS;
|
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))
|
if (!strcmp(*head_points_at, head_ref_name))
|
||||||
/* 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("%s points to something strange (%s)",
|
return error(_("%s points to something strange (%s)"),
|
||||||
head_ref_name, *head_points_at);
|
head_ref_name, *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("%s: detached HEAD points at nothing",
|
return error(_("%s: detached HEAD points at nothing"),
|
||||||
head_ref_name);
|
head_ref_name);
|
||||||
}
|
}
|
||||||
fprintf(stderr, "notice: %s points to an unborn branch (%s)\n",
|
fprintf_ln(stderr,
|
||||||
head_ref_name, *head_points_at + 11);
|
_("notice: %s points to an unborn branch (%s)"),
|
||||||
|
head_ref_name, *head_points_at + 11);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -643,12 +667,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;
|
||||||
@@ -659,7 +683,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);
|
||||||
@@ -800,7 +824,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;
|
||||||
}
|
}
|
||||||
@@ -812,7 +836,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ static int option_read_message(struct parse_opt_ctx_t *ctx,
|
|||||||
ctx->argc--;
|
ctx->argc--;
|
||||||
arg = *++ctx->argv;
|
arg = *++ctx->argv;
|
||||||
} else
|
} else
|
||||||
return opterror(opt, "requires a value", 0);
|
return error(_("option `%s' requires a value"), opt->long_name);
|
||||||
|
|
||||||
if (buf->len)
|
if (buf->len)
|
||||||
strbuf_addch(buf, '\n');
|
strbuf_addch(buf, '\n');
|
||||||
@@ -578,7 +578,7 @@ static void parse_branch_merge_options(char *bmo)
|
|||||||
argc = split_cmdline(bmo, &argv);
|
argc = split_cmdline(bmo, &argv);
|
||||||
if (argc < 0)
|
if (argc < 0)
|
||||||
die(_("Bad branch.%s.mergeoptions string: %s"), branch,
|
die(_("Bad branch.%s.mergeoptions string: %s"), branch,
|
||||||
split_cmdline_strerror(argc));
|
_(split_cmdline_strerror(argc)));
|
||||||
REALLOC_ARRAY(argv, argc + 2);
|
REALLOC_ARRAY(argv, argc + 2);
|
||||||
MOVE_ARRAY(argv + 1, argv, argc + 1);
|
MOVE_ARRAY(argv + 1, argv, argc + 1);
|
||||||
argc++;
|
argc++;
|
||||||
|
|||||||
@@ -14,11 +14,15 @@
|
|||||||
|
|
||||||
/* NEEDSWORK: switch to using parse_options */
|
/* NEEDSWORK: switch to using parse_options */
|
||||||
static const char reflog_expire_usage[] =
|
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[] =
|
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[] =
|
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;
|
||||||
static timestamp_t default_reflog_expire_unreachable;
|
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;
|
break;
|
||||||
}
|
}
|
||||||
else if (arg[0] == '-')
|
else if (arg[0] == '-')
|
||||||
usage(reflog_expire_usage);
|
usage(_(reflog_expire_usage));
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -598,7 +602,7 @@ static int cmd_reflog_expire(int argc, const char **argv, const char *prefix)
|
|||||||
if (cb.cmd.stalefix) {
|
if (cb.cmd.stalefix) {
|
||||||
repo_init_revisions(the_repository, &cb.cmd.revs, prefix);
|
repo_init_revisions(the_repository, &cb.cmd.revs, prefix);
|
||||||
if (flags & EXPIRE_REFLOGS_VERBOSE)
|
if (flags & EXPIRE_REFLOGS_VERBOSE)
|
||||||
printf("Marking reachable objects...");
|
printf(_("Marking reachable objects..."));
|
||||||
mark_reachable_objects(&cb.cmd.revs, 0, 0, NULL);
|
mark_reachable_objects(&cb.cmd.revs, 0, 0, NULL);
|
||||||
if (flags & EXPIRE_REFLOGS_VERBOSE)
|
if (flags & EXPIRE_REFLOGS_VERBOSE)
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
@@ -636,7 +640,7 @@ static int cmd_reflog_expire(int argc, const char **argv, const char *prefix)
|
|||||||
char *ref;
|
char *ref;
|
||||||
struct object_id oid;
|
struct object_id oid;
|
||||||
if (!dwim_log(argv[i], strlen(argv[i]), &oid, &ref)) {
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
set_reflog_expiry_param(&cb.cmd, explicit_expiry, ref);
|
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;
|
break;
|
||||||
}
|
}
|
||||||
else if (arg[0] == '-')
|
else if (arg[0] == '-')
|
||||||
usage(reflog_delete_usage);
|
usage(_(reflog_delete_usage));
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc - i < 1)
|
if (argc - i < 1)
|
||||||
return error("Nothing to delete?");
|
return error(_("no reflog specified to delete"));
|
||||||
|
|
||||||
for ( ; i < argc; i++) {
|
for ( ; i < argc; i++) {
|
||||||
const char *spec = strstr(argv[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;
|
int recno;
|
||||||
|
|
||||||
if (!spec) {
|
if (!spec) {
|
||||||
status |= error("Not a reflog: %s", argv[i]);
|
status |= error(_("not a reflog: %s"), argv[i]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!dwim_log(argv[i], spec - argv[i], &oid, &ref)) {
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -737,7 +741,7 @@ static int cmd_reflog_exists(int argc, const char **argv, const char *prefix)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if (arg[0] == '-')
|
else if (arg[0] == '-')
|
||||||
usage(reflog_exists_usage);
|
usage(_(reflog_exists_usage));
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -745,10 +749,10 @@ static int cmd_reflog_exists(int argc, const char **argv, const char *prefix)
|
|||||||
start = i;
|
start = i;
|
||||||
|
|
||||||
if (argc - start != 1)
|
if (argc - start != 1)
|
||||||
usage(reflog_exists_usage);
|
usage(_(reflog_exists_usage));
|
||||||
|
|
||||||
if (check_refname_format(argv[start], REFNAME_ALLOW_ONELEVEL))
|
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]);
|
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[] =
|
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)
|
int cmd_reflog(int argc, const char **argv, const char *prefix)
|
||||||
{
|
{
|
||||||
if (argc > 1 && !strcmp(argv[1], "-h"))
|
if (argc > 1 && !strcmp(argv[1], "-h"))
|
||||||
usage(reflog_usage);
|
usage(_(reflog_usage));
|
||||||
|
|
||||||
/* With no command, we default to showing it. */
|
/* With no command, we default to showing it. */
|
||||||
if (argc < 2 || *argv[1] == '-')
|
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 (cmd->in == -1) {
|
||||||
if (start_command(cmd))
|
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);
|
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;
|
char *promisor_name;
|
||||||
int fd;
|
int fd;
|
||||||
if (line.len != the_hash_algo->hexsz)
|
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);
|
string_list_append(names, line.buf);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -247,13 +247,13 @@ static void repack_promisor_objects(const struct pack_objects_args *args,
|
|||||||
line.buf);
|
line.buf);
|
||||||
fd = open(promisor_name, O_CREAT|O_EXCL|O_WRONLY, 0600);
|
fd = open(promisor_name, O_CREAT|O_EXCL|O_WRONLY, 0600);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
die_errno("unable to create '%s'", promisor_name);
|
die_errno(_("unable to create '%s'"), promisor_name);
|
||||||
close(fd);
|
close(fd);
|
||||||
free(promisor_name);
|
free(promisor_name);
|
||||||
}
|
}
|
||||||
fclose(out);
|
fclose(out);
|
||||||
if (finish_command(&cmd))
|
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
|
#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");
|
out = xfdopen(cmd.out, "r");
|
||||||
while (strbuf_getline_lf(&line, out) != EOF) {
|
while (strbuf_getline_lf(&line, out) != EOF) {
|
||||||
if (line.len != the_hash_algo->hexsz)
|
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);
|
string_list_append(&names, line.buf);
|
||||||
}
|
}
|
||||||
fclose(out);
|
fclose(out);
|
||||||
@@ -417,7 +417,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (!names.nr && !po_args.quiet)
|
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.
|
* 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) {
|
if (rollback_failure.nr) {
|
||||||
int i;
|
int i;
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"WARNING: Some packs in use have been renamed by\n"
|
_("WARNING: Some packs in use have been renamed by\n"
|
||||||
"WARNING: prefixing old- to their name, in order to\n"
|
"WARNING: prefixing old- to their name, in order to\n"
|
||||||
"WARNING: replace them with the new version of the\n"
|
"WARNING: replace them with the new version of the\n"
|
||||||
"WARNING: file. But the operation failed, and the\n"
|
"WARNING: file. But the operation failed, and the\n"
|
||||||
"WARNING: attempt to rename them back to their\n"
|
"WARNING: attempt to rename them back to their\n"
|
||||||
"WARNING: original names also failed.\n"
|
"WARNING: original names also failed.\n"
|
||||||
"WARNING: Please rename them in %s manually:\n", packdir);
|
"WARNING: Please rename them in %s manually:\n"), packdir);
|
||||||
for (i = 0; i < rollback_failure.nr; i++)
|
for (i = 0; i < rollback_failure.nr; i++)
|
||||||
fprintf(stderr, "WARNING: old-%s -> %s\n",
|
fprintf(stderr, "WARNING: old-%s -> %s\n",
|
||||||
rollback_failure.items[i].string,
|
rollback_failure.items[i].string,
|
||||||
|
|||||||
@@ -69,7 +69,8 @@ static int option_parse_m(const struct option *opt,
|
|||||||
|
|
||||||
replay->mainline = strtol(arg, &end, 10);
|
replay->mainline = strtol(arg, &end, 10);
|
||||||
if (*end || replay->mainline <= 0)
|
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;
|
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 */
|
if (ret >= 0) /* normal exit */
|
||||||
exit(ret);
|
exit(ret);
|
||||||
|
|
||||||
die_errno("while expanding alias '%s': '%s'",
|
die_errno(_("while expanding alias '%s': '%s'"),
|
||||||
alias_command, alias_string + 1);
|
alias_command, alias_string + 1);
|
||||||
}
|
}
|
||||||
count = split_cmdline(alias_string, &new_argv);
|
count = split_cmdline(alias_string, &new_argv);
|
||||||
if (count < 0)
|
if (count < 0)
|
||||||
die("Bad alias.%s string: %s", alias_command,
|
die(_("bad alias.%s string: %s"), alias_command,
|
||||||
split_cmdline_strerror(count));
|
_(split_cmdline_strerror(count)));
|
||||||
option_count = handle_options(&new_argv, &count, &envchanged);
|
option_count = handle_options(&new_argv, &count, &envchanged);
|
||||||
if (envchanged)
|
if (envchanged)
|
||||||
die("alias '%s' changes environment variables.\n"
|
die(_("alias '%s' changes environment variables.\n"
|
||||||
"You can use '!git' in the alias to do this",
|
"You can use '!git' in the alias to do this"),
|
||||||
alias_command);
|
alias_command);
|
||||||
memmove(new_argv - option_count, new_argv,
|
memmove(new_argv - option_count, new_argv,
|
||||||
count * sizeof(char *));
|
count * sizeof(char *));
|
||||||
new_argv -= option_count;
|
new_argv -= option_count;
|
||||||
|
|
||||||
if (count < 1)
|
if (count < 1)
|
||||||
die("empty alias for %s", alias_command);
|
die(_("empty alias for %s"), alias_command);
|
||||||
|
|
||||||
if (!strcmp(alias_command, new_argv[0]))
|
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_argv_printf(new_argv,
|
||||||
"trace: alias expansion: %s =>",
|
"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 (!help && get_super_prefix()) {
|
||||||
if (!(p->option & SUPPORT_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)
|
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.. */
|
/* Check for ENOSPC and EIO errors.. */
|
||||||
if (fflush(stdout))
|
if (fflush(stdout))
|
||||||
die_errno("write failure on standard output");
|
die_errno(_("write failure on standard output"));
|
||||||
if (ferror(stdout))
|
if (ferror(stdout))
|
||||||
die("unknown write failure on standard output");
|
die(_("unknown write failure on standard output"));
|
||||||
if (fclose(stdout))
|
if (fclose(stdout))
|
||||||
die_errno("close failed on standard output");
|
die_errno(_("close failed on standard output"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -654,7 +654,7 @@ static void execv_dashed_external(const char **argv)
|
|||||||
int status;
|
int status;
|
||||||
|
|
||||||
if (get_super_prefix())
|
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]))
|
if (use_pager == -1 && !is_builtin(argv[0]))
|
||||||
use_pager = check_pager_config(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)) {
|
if (skip_prefix(cmd, "git-", &cmd)) {
|
||||||
argv[0] = cmd;
|
argv[0] = cmd;
|
||||||
handle_builtin(argc, argv);
|
handle_builtin(argc, argv);
|
||||||
die("cannot handle %s as a builtin", cmd);
|
die(_("cannot handle %s as a builtin"), cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Look for flags.. */
|
/* Look for flags.. */
|
||||||
@@ -779,7 +779,7 @@ int cmd_main(int argc, const char **argv)
|
|||||||
} else {
|
} else {
|
||||||
/* The user didn't specify a command; give them help */
|
/* The user didn't specify a command; give them help */
|
||||||
commit_pager_choice();
|
commit_pager_choice();
|
||||||
printf("usage: %s\n\n", git_usage_string);
|
printf(_("usage: %s\n\n"), git_usage_string);
|
||||||
list_common_cmds_help();
|
list_common_cmds_help();
|
||||||
printf("\n%s\n", _(git_more_info_string));
|
printf("\n%s\n", _(git_more_info_string));
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ int parse_opt_abbrev_cb(const struct option *opt, const char *arg, int unset)
|
|||||||
} else {
|
} else {
|
||||||
v = strtol(arg, (char **)&arg, 10);
|
v = strtol(arg, (char **)&arg, 10);
|
||||||
if (*arg)
|
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)
|
if (v && v < MINIMUM_ABBREV)
|
||||||
v = MINIMUM_ABBREV;
|
v = MINIMUM_ABBREV;
|
||||||
else if (v > 40)
|
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;
|
arg = unset ? "never" : (const char *)opt->defval;
|
||||||
value = git_config_colorbool(NULL, arg);
|
value = git_config_colorbool(NULL, arg);
|
||||||
if (value < 0)
|
if (value < 0)
|
||||||
return opterror(opt,
|
return error(_("option `%s' expects \"always\", \"auto\", or \"never\""),
|
||||||
"expects \"always\", \"auto\", or \"never\"", 0);
|
opt->long_name);
|
||||||
*(int *)opt->value = value;
|
*(int *)opt->value = value;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ static int get_arg(struct parse_opt_ctx_t *p, const struct option *opt,
|
|||||||
p->argc--;
|
p->argc--;
|
||||||
*arg = *++p->argv;
|
*arg = *++p->argv;
|
||||||
} else
|
} else
|
||||||
return opterror(opt, "requires a value", flags);
|
return error(_("%s requires a value"), optname(opt, flags));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,7 +49,6 @@ static int opt_command_mode_error(const struct option *opt,
|
|||||||
int flags)
|
int flags)
|
||||||
{
|
{
|
||||||
const struct option *that;
|
const struct option *that;
|
||||||
struct strbuf message = STRBUF_INIT;
|
|
||||||
struct strbuf that_name = 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);
|
strbuf_addf(&that_name, "--%s", that->long_name);
|
||||||
else
|
else
|
||||||
strbuf_addf(&that_name, "-%c", that->short_name);
|
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);
|
strbuf_release(&that_name);
|
||||||
opterror(opt, message.buf, flags);
|
|
||||||
strbuf_release(&message);
|
|
||||||
return -1;
|
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,
|
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;
|
int err;
|
||||||
|
|
||||||
if (unset && p->opt)
|
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))
|
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))
|
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) {
|
switch (opt->type) {
|
||||||
case OPTION_LOWLEVEL_CALLBACK:
|
case OPTION_LOWLEVEL_CALLBACK:
|
||||||
@@ -176,7 +175,8 @@ static int get_value(struct parse_opt_ctx_t *p,
|
|||||||
return -1;
|
return -1;
|
||||||
*(int *)opt->value = strtol(arg, (char **)&s, 10);
|
*(int *)opt->value = strtol(arg, (char **)&s, 10);
|
||||||
if (*s)
|
if (*s)
|
||||||
return opterror(opt, "expects a numerical value", flags);
|
return error(_("%s expects a numerical value"),
|
||||||
|
optname(opt, flags));
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case OPTION_MAGNITUDE:
|
case OPTION_MAGNITUDE:
|
||||||
@@ -191,13 +191,13 @@ static int get_value(struct parse_opt_ctx_t *p,
|
|||||||
if (get_arg(p, opt, flags, &arg))
|
if (get_arg(p, opt, flags, &arg))
|
||||||
return -1;
|
return -1;
|
||||||
if (!git_parse_ulong(arg, opt->value))
|
if (!git_parse_ulong(arg, opt->value))
|
||||||
return opterror(opt,
|
return error(_("%s expects a non-negative integer value"
|
||||||
"expects a non-negative integer value with an optional k/m/g suffix",
|
" with an optional k/m/g suffix"),
|
||||||
flags);
|
optname(opt, flags));
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
default:
|
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)
|
if (!rest)
|
||||||
continue;
|
continue;
|
||||||
if (*rest == '=')
|
if (*rest == '=')
|
||||||
return opterror(options, "takes no value", flags);
|
return error(_("%s takes no value"),
|
||||||
|
optname(options, flags));
|
||||||
if (*rest)
|
if (*rest)
|
||||||
continue;
|
continue;
|
||||||
p->out[p->cpidx++] = arg - 2;
|
p->out[p->cpidx++] = arg - 2;
|
||||||
@@ -318,8 +319,8 @@ is_abbreviated:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ambiguous_option) {
|
if (ambiguous_option) {
|
||||||
error("Ambiguous option: %s "
|
error(_("ambiguous option: %s "
|
||||||
"(could be --%s%s or --%s%s)",
|
"(could be --%s%s or --%s%s)"),
|
||||||
arg,
|
arg,
|
||||||
(ambiguous_flags & OPT_UNSET) ? "no-" : "",
|
(ambiguous_flags & OPT_UNSET) ? "no-" : "",
|
||||||
ambiguous_option->long_name,
|
ambiguous_option->long_name,
|
||||||
@@ -352,7 +353,7 @@ static void check_typos(const char *arg, const struct option *options)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (starts_with(arg, "no-")) {
|
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);
|
exit(129);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -360,7 +361,7 @@ static void check_typos(const char *arg, const struct option *options)
|
|||||||
if (!options->long_name)
|
if (!options->long_name)
|
||||||
continue;
|
continue;
|
||||||
if (starts_with(options->long_name, arg)) {
|
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);
|
exit(129);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -423,7 +424,7 @@ void parse_options_start(struct parse_opt_ctx_t *ctx,
|
|||||||
ctx->flags = flags;
|
ctx->flags = flags;
|
||||||
if ((flags & PARSE_OPT_KEEP_UNKNOWN) &&
|
if ((flags & PARSE_OPT_KEEP_UNKNOWN) &&
|
||||||
(flags & PARSE_OPT_STOP_AT_NON_OPTION))
|
(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);
|
parse_options_check(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -645,11 +646,11 @@ int parse_options(int argc, const char **argv, const char *prefix,
|
|||||||
break;
|
break;
|
||||||
default: /* PARSE_OPT_UNKNOWN */
|
default: /* PARSE_OPT_UNKNOWN */
|
||||||
if (ctx.argv[0][1] == '-') {
|
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)) {
|
} else if (isascii(*ctx.opt)) {
|
||||||
error("unknown switch `%c'", *ctx.opt);
|
error(_("unknown switch `%c'"), *ctx.opt);
|
||||||
} else {
|
} else {
|
||||||
error("unknown non-ascii option in string: `%s'",
|
error(_("unknown non-ascii option in string: `%s'"),
|
||||||
ctx.argv[0]);
|
ctx.argv[0]);
|
||||||
}
|
}
|
||||||
usage_with_options(usagestr, options);
|
usage_with_options(usagestr, options);
|
||||||
@@ -775,12 +776,17 @@ void NORETURN usage_msg_opt(const char *msg,
|
|||||||
usage_with_options(usagestr, options);
|
usage_with_options(usagestr, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef opterror
|
const char *optname(const struct option *opt, int flags)
|
||||||
int opterror(const struct option *opt, const char *reason, int flags)
|
|
||||||
{
|
{
|
||||||
|
static struct strbuf sb = STRBUF_INIT;
|
||||||
|
|
||||||
|
strbuf_reset(&sb);
|
||||||
if (flags & OPT_SHORT)
|
if (flags & OPT_SHORT)
|
||||||
return error("switch `%c' %s", opt->short_name, reason);
|
strbuf_addf(&sb, "switch `%c'", opt->short_name);
|
||||||
if (flags & OPT_UNSET)
|
else if (flags & OPT_UNSET)
|
||||||
return error("option `no-%s' %s", opt->long_name, reason);
|
strbuf_addf(&sb, "option `no-%s'", opt->long_name);
|
||||||
return error("option `%s' %s", opt->long_name, reason);
|
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);
|
const struct option *options);
|
||||||
|
|
||||||
extern int optbug(const struct option *opt, const char *reason);
|
extern int optbug(const struct option *opt, const char *reason);
|
||||||
extern int opterror(const struct option *opt, const char *reason, int flags);
|
const char *optname(const struct option *opt, int flags);
|
||||||
#if defined(__GNUC__)
|
|
||||||
#define opterror(o,r,f) (opterror((o),(r),(f)), const_error())
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Use these assertions for callbacks that expect to be called with NONEG and
|
* 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;
|
changed |= DATA_CHANGED;
|
||||||
return changed;
|
return changed;
|
||||||
default:
|
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);
|
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;
|
struct cache_entry *new_entry;
|
||||||
|
|
||||||
if (alias->ce_flags & CE_ADDED)
|
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 */
|
/* Ok, create the new entry using the name of the existing alias */
|
||||||
len = ce_namelen(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;
|
struct object_id oid;
|
||||||
if (write_object_file("", 0, blob_type, &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);
|
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;
|
newflags |= HASH_RENORMALIZE;
|
||||||
|
|
||||||
if (!S_ISREG(st_mode) && !S_ISLNK(st_mode) && !S_ISDIR(st_mode))
|
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);
|
namelen = strlen(path);
|
||||||
if (S_ISDIR(st_mode)) {
|
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 (!intent_only) {
|
||||||
if (index_path(istate, &ce->oid, path, st, newflags)) {
|
if (index_path(istate, &ce->oid, path, st, newflags)) {
|
||||||
discard_cache_entry(ce);
|
discard_cache_entry(ce);
|
||||||
return error("unable to index file %s", path);
|
return error(_("unable to index file '%s'"), path);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
set_object_name_for_intent_to_add_entry(ce);
|
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);
|
discard_cache_entry(ce);
|
||||||
else if (add_index_entry(istate, ce, add_option)) {
|
else if (add_index_entry(istate, ce, add_option)) {
|
||||||
discard_cache_entry(ce);
|
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)
|
if (verbose && !was_same)
|
||||||
printf("add '%s'\n", path);
|
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;
|
struct stat st;
|
||||||
if (lstat(path, &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);
|
return add_to_index(istate, path, &st, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -818,7 +819,7 @@ struct cache_entry *make_cache_entry(struct index_state *istate,
|
|||||||
int len;
|
int len;
|
||||||
|
|
||||||
if (!verify_path(path, mode)) {
|
if (!verify_path(path, mode)) {
|
||||||
error("Invalid path '%s'", path);
|
error(_("invalid path '%s'"), path);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -844,7 +845,7 @@ struct cache_entry *make_transient_cache_entry(unsigned int mode, const struct o
|
|||||||
int len;
|
int len;
|
||||||
|
|
||||||
if (!verify_path(path, mode)) {
|
if (!verify_path(path, mode)) {
|
||||||
error("Invalid path '%s'", path);
|
error(_("invalid path '%s'"), path);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1297,12 +1298,12 @@ static int add_index_entry_with_check(struct index_state *istate, struct cache_e
|
|||||||
if (!ok_to_add)
|
if (!ok_to_add)
|
||||||
return -1;
|
return -1;
|
||||||
if (!verify_path(ce->name, ce->ce_mode))
|
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 &&
|
if (!skip_df_check &&
|
||||||
check_file_directory_conflict(istate, ce, pos, ok_to_replace)) {
|
check_file_directory_conflict(istate, ce, pos, ok_to_replace)) {
|
||||||
if (!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);
|
ce->name);
|
||||||
pos = index_name_stage_pos(istate, ce->name, ce_namelen(ce), ce_stage(ce));
|
pos = index_name_stage_pos(istate, ce->name, ce_namelen(ce), ce_stage(ce));
|
||||||
pos = -pos-1;
|
pos = -pos-1;
|
||||||
@@ -1491,11 +1492,11 @@ int refresh_index(struct index_state *istate, unsigned int flags,
|
|||||||
istate->cache_nr);
|
istate->cache_nr);
|
||||||
|
|
||||||
trace_performance_enter();
|
trace_performance_enter();
|
||||||
modified_fmt = (in_porcelain ? "M\t%s\n" : "%s: needs update\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");
|
deleted_fmt = in_porcelain ? "D\t%s\n" : "%s: needs update\n";
|
||||||
typechange_fmt = (in_porcelain ? "T\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");
|
added_fmt = in_porcelain ? "A\t%s\n" : "%s: needs update\n";
|
||||||
unmerged_fmt = (in_porcelain ? "U\t%s\n" : "%s: needs merge\n");
|
unmerged_fmt = in_porcelain ? "U\t%s\n" : "%s: needs merge\n";
|
||||||
/*
|
/*
|
||||||
* Use the multi-threaded preload_index() to refresh most of the
|
* Use the multi-threaded preload_index() to refresh most of the
|
||||||
* cache entries quickly then in the single threaded loop below,
|
* 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;
|
int hdr_version;
|
||||||
|
|
||||||
if (hdr->hdr_signature != htonl(CACHE_SIGNATURE))
|
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);
|
hdr_version = ntohl(hdr->hdr_version);
|
||||||
if (hdr_version < INDEX_FORMAT_LB || INDEX_FORMAT_UB < 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)
|
if (!verify_index_checksum)
|
||||||
return 0;
|
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->update_fn(&c, hdr, size - the_hash_algo->rawsz);
|
||||||
the_hash_algo->final_fn(hash, &c);
|
the_hash_algo->final_fn(hash, &c);
|
||||||
if (!hasheq(hash, (unsigned char *)hdr + size - the_hash_algo->rawsz))
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1724,9 +1725,9 @@ static int read_index_extension(struct index_state *istate,
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (*ext < 'A' || 'Z' < *ext)
|
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);
|
ext);
|
||||||
fprintf(stderr, "ignoring %.4s extension\n", ext);
|
fprintf_ln(stderr, _("ignoring %.4s extension"), ext);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
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;
|
extended_flags = get_be16(&ondisk2->flags2) << 16;
|
||||||
/* We do not yet understand any bit out of CE_EXTENDED_FLAGS */
|
/* We do not yet understand any bit out of CE_EXTENDED_FLAGS */
|
||||||
if (extended_flags & ~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;
|
flags |= extended_flags;
|
||||||
name = ondisk2->name;
|
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);
|
int name_compare = strcmp(ce->name, next_ce->name);
|
||||||
|
|
||||||
if (0 < name_compare)
|
if (0 < name_compare)
|
||||||
die("unordered stage entries in index");
|
die(_("unordered stage entries in index"));
|
||||||
if (!name_compare) {
|
if (!name_compare) {
|
||||||
if (!ce_stage(ce))
|
if (!ce_stage(ce))
|
||||||
die("multiple stage entries for merged file '%s'",
|
die(_("multiple stage entries for merged file '%s'"),
|
||||||
ce->name);
|
ce->name);
|
||||||
if (ce_stage(ce) > ce_stage(next_ce))
|
if (ce_stage(ce) > ce_stage(next_ce))
|
||||||
die("unordered stage entries for '%s'",
|
die(_("unordered stage entries for '%s'"),
|
||||||
ce->name);
|
ce->name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2144,19 +2145,19 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist)
|
|||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
if (!must_exist && errno == ENOENT)
|
if (!must_exist && errno == ENOENT)
|
||||||
return 0;
|
return 0;
|
||||||
die_errno("%s: index file open failed", path);
|
die_errno(_("%s: index file open failed"), path);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fstat(fd, &st))
|
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);
|
mmap_size = xsize_t(st.st_size);
|
||||||
if (mmap_size < sizeof(struct cache_header) + the_hash_algo->rawsz)
|
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);
|
mmap = xmmap(NULL, mmap_size, PROT_READ, MAP_PRIVATE, fd, 0);
|
||||||
if (mmap == MAP_FAILED)
|
if (mmap == MAP_FAILED)
|
||||||
die_errno("unable to map index file");
|
die_errno(_("%s: unable to map index file"), path);
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
||||||
hdr = (const struct cache_header *)mmap;
|
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:
|
unmap:
|
||||||
munmap((void *)mmap, mmap_size);
|
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)
|
static void freshen_shared_index(const char *shared_index, int warn)
|
||||||
{
|
{
|
||||||
if (!check_and_freshen_file(shared_index, 1) && 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,
|
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);
|
base_path = xstrfmt("%s/sharedindex.%s", gitdir, base_oid_hex);
|
||||||
ret = do_read_index(split_index->base, base_path, 1);
|
ret = do_read_index(split_index->base, base_path, 1);
|
||||||
if (!oideq(&split_index->base_oid, &split_index->base->oid))
|
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,
|
base_oid_hex, base_path,
|
||||||
oid_to_hex(&split_index->base->oid));
|
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++) {
|
for (i = 0; i < istate->cache_nr; i++) {
|
||||||
if (!istate) {
|
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 ||
|
} else if (!istate->ce_mem_pool ||
|
||||||
!mem_pool_contains(istate->ce_mem_pool, istate->cache[i])) {
|
!mem_pool_contains(istate->ce_mem_pool, istate->cache[i])) {
|
||||||
if (!istate->split_index ||
|
if (!istate->split_index ||
|
||||||
!istate->split_index->base ||
|
!istate->split_index->base ||
|
||||||
!istate->split_index->base->ce_mem_pool ||
|
!istate->split_index->base->ce_mem_pool ||
|
||||||
!mem_pool_contains(istate->split_index->base->ce_mem_pool, istate->cache[i])) {
|
!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;
|
return ret;
|
||||||
ret = adjust_shared_perm(get_tempfile_path(*temp));
|
ret = adjust_shared_perm(get_tempfile_path(*temp));
|
||||||
if (ret) {
|
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;
|
return ret;
|
||||||
}
|
}
|
||||||
ret = rename_tempfile(temp,
|
ret = rename_tempfile(temp,
|
||||||
@@ -3243,7 +3244,7 @@ int read_index_unmerged(struct index_state *istate)
|
|||||||
new_ce->ce_namelen = len;
|
new_ce->ce_namelen = len;
|
||||||
new_ce->ce_mode = ce->ce_mode;
|
new_ce->ce_mode = ce->ce_mode;
|
||||||
if (add_index_entry(istate, new_ce, ADD_CACHE_SKIP_DFCHECK))
|
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);
|
new_ce->name);
|
||||||
}
|
}
|
||||||
return unmerged;
|
return unmerged;
|
||||||
|
|||||||
@@ -2324,9 +2324,11 @@ int parse_opt_merge_filter(const struct option *opt, const char *arg, int unset)
|
|||||||
|
|
||||||
if (rf->merge) {
|
if (rf->merge) {
|
||||||
if (no_merged) {
|
if (no_merged) {
|
||||||
return opterror(opt, "is incompatible with --merged", 0);
|
return error(_("option `%s' is incompatible with --merged"),
|
||||||
|
opt->long_name);
|
||||||
} else {
|
} 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,
|
rf->merge_commit = lookup_commit_reference_gently(the_repository,
|
||||||
&oid, 0);
|
&oid, 0);
|
||||||
if (!rf->merge_commit)
|
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;
|
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;
|
return 0;
|
||||||
/* Handle remote.<name>.* variables */
|
/* Handle remote.<name>.* variables */
|
||||||
if (*name == '/') {
|
if (*name == '/') {
|
||||||
warning("Config remote shorthand cannot begin with '/': %s",
|
warning(_("config remote shorthand cannot begin with '/': %s"),
|
||||||
name);
|
name);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -406,7 +406,7 @@ static int handle_config(const char *key, const char *value, void *cb)
|
|||||||
if (!remote->receivepack)
|
if (!remote->receivepack)
|
||||||
remote->receivepack = v;
|
remote->receivepack = v;
|
||||||
else
|
else
|
||||||
error("more than one receivepack given, using the first");
|
error(_("more than one receivepack given, using the first"));
|
||||||
} else if (!strcmp(subkey, "uploadpack")) {
|
} else if (!strcmp(subkey, "uploadpack")) {
|
||||||
const char *v;
|
const char *v;
|
||||||
if (git_config_string(&v, key, value))
|
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)
|
if (!remote->uploadpack)
|
||||||
remote->uploadpack = v;
|
remote->uploadpack = v;
|
||||||
else
|
else
|
||||||
error("more than one uploadpack given, using the first");
|
error(_("more than one uploadpack given, using the first"));
|
||||||
} else if (!strcmp(subkey, "tagopt")) {
|
} else if (!strcmp(subkey, "tagopt")) {
|
||||||
if (!strcmp(value, "--no-tags"))
|
if (!strcmp(value, "--no-tags"))
|
||||||
remote->fetch_tags = -1;
|
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
|
* FETCH_HEAD_IGNORE entries always appear at
|
||||||
* the end of the list.
|
* the end of the list.
|
||||||
*/
|
*/
|
||||||
die(_("Internal error"));
|
BUG("Internal error");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(ref2->peer_ref);
|
free(ref2->peer_ref);
|
||||||
@@ -680,7 +680,7 @@ static int match_name_with_pattern(const char *key, const char *name,
|
|||||||
size_t namelen;
|
size_t namelen;
|
||||||
int ret;
|
int ret;
|
||||||
if (!kstar)
|
if (!kstar)
|
||||||
die("Key '%s' of pattern had no '*'", key);
|
die(_("key '%s' of pattern had no '*'"), key);
|
||||||
klen = kstar - key;
|
klen = kstar - key;
|
||||||
ksuffixlen = strlen(kstar + 1);
|
ksuffixlen = strlen(kstar + 1);
|
||||||
namelen = strlen(name);
|
namelen = strlen(name);
|
||||||
@@ -690,7 +690,7 @@ static int match_name_with_pattern(const char *key, const char *name,
|
|||||||
struct strbuf sb = STRBUF_INIT;
|
struct strbuf sb = STRBUF_INIT;
|
||||||
const char *vstar = strchr(value, '*');
|
const char *vstar = strchr(value, '*');
|
||||||
if (!vstar)
|
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, value, vstar - value);
|
||||||
strbuf_add(&sb, name + klen, namelen - klen - ksuffixlen);
|
strbuf_add(&sb, name + klen, namelen - klen - ksuffixlen);
|
||||||
strbuf_addstr(&sb, vstar + 1);
|
strbuf_addstr(&sb, vstar + 1);
|
||||||
@@ -707,7 +707,7 @@ static void query_refspecs_multiple(struct refspec *rs,
|
|||||||
int find_src = !query->src;
|
int find_src = !query->src;
|
||||||
|
|
||||||
if (find_src && !query->dst)
|
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++) {
|
for (i = 0; i < rs->nr; i++) {
|
||||||
struct refspec_item *refspec = &rs->items[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;
|
char **result = find_src ? &query->src : &query->dst;
|
||||||
|
|
||||||
if (find_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++) {
|
for (i = 0; i < rs->nr; i++) {
|
||||||
struct refspec_item *refspec = &rs->items[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.
|
* way to delete 'other' ref at the remote end.
|
||||||
*/
|
*/
|
||||||
if (try_explicit_object_name(rs->src, match) < 0)
|
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)
|
if (allocated_match)
|
||||||
*allocated_match = 1;
|
*allocated_match = 1;
|
||||||
return 0;
|
return 0;
|
||||||
default:
|
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 ||
|
if (!dst_value ||
|
||||||
((flag & REF_ISSYMREF) &&
|
((flag & REF_ISSYMREF) &&
|
||||||
!starts_with(dst_value, "refs/heads/")))
|
!starts_with(dst_value, "refs/heads/")))
|
||||||
die("%s cannot be resolved to branch.",
|
die(_("%s cannot be resolved to branch"),
|
||||||
matched_src->name);
|
matched_src->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1041,30 +1041,30 @@ static int match_explicit(struct ref *src, struct ref *dst,
|
|||||||
if (starts_with(dst_value, "refs/"))
|
if (starts_with(dst_value, "refs/"))
|
||||||
matched_dst = make_linked_ref(dst_value, dst_tail);
|
matched_dst = make_linked_ref(dst_value, dst_tail);
|
||||||
else if (is_null_oid(&matched_src->new_oid))
|
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);
|
dst_value);
|
||||||
else if ((dst_guess = guess_ref(dst_value, matched_src))) {
|
else if ((dst_guess = guess_ref(dst_value, matched_src))) {
|
||||||
matched_dst = make_linked_ref(dst_guess, dst_tail);
|
matched_dst = make_linked_ref(dst_guess, dst_tail);
|
||||||
free(dst_guess);
|
free(dst_guess);
|
||||||
} else
|
} else
|
||||||
error("unable to push to unqualified destination: %s\n"
|
error(_("unable to push to unqualified destination: %s\n"
|
||||||
"The destination refspec neither matches an "
|
"The destination refspec neither matches an "
|
||||||
"existing ref on the remote nor\n"
|
"existing ref on the remote nor\n"
|
||||||
"begins with refs/, and we are unable to "
|
"begins with refs/, and we are unable to "
|
||||||
"guess a prefix based on the source ref.",
|
"guess a prefix based on the source ref."),
|
||||||
dst_value);
|
dst_value);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
matched_dst = NULL;
|
matched_dst = NULL;
|
||||||
error("dst refspec %s matches more than one.",
|
error(_("dst refspec %s matches more than one"),
|
||||||
dst_value);
|
dst_value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!matched_dst)
|
if (!matched_dst)
|
||||||
return -1;
|
return -1;
|
||||||
if (matched_dst->peer_ref)
|
if (matched_dst->peer_ref)
|
||||||
return error("dst ref %s receives from more than one src.",
|
return error(_("dst ref %s receives from more than one src"),
|
||||||
matched_dst->name);
|
matched_dst->name);
|
||||||
else {
|
else {
|
||||||
matched_dst->peer_ref = allocated_src ?
|
matched_dst->peer_ref = allocated_src ?
|
||||||
matched_src :
|
matched_src :
|
||||||
@@ -1782,7 +1782,7 @@ int get_fetch_map(const struct ref *remote_refs,
|
|||||||
ref_map = get_remote_ref(remote_refs, name);
|
ref_map = get_remote_ref(remote_refs, name);
|
||||||
}
|
}
|
||||||
if (!missing_ok && !ref_map)
|
if (!missing_ok && !ref_map)
|
||||||
die("Couldn't find remote ref %s", name);
|
die(_("couldn't find remote ref %s"), name);
|
||||||
if (ref_map) {
|
if (ref_map) {
|
||||||
ref_map->peer_ref = get_local_ref(refspec->dst);
|
ref_map->peer_ref = get_local_ref(refspec->dst);
|
||||||
if (ref_map->peer_ref && refspec->force)
|
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/") ||
|
if (!starts_with((*rmp)->peer_ref->name, "refs/") ||
|
||||||
check_refname_format((*rmp)->peer_ref->name, 0)) {
|
check_refname_format((*rmp)->peer_ref->name, 0)) {
|
||||||
struct ref *ignore = *rmp;
|
struct ref *ignore = *rmp;
|
||||||
error("* Ignoring funny ref '%s' locally",
|
error(_("* Ignoring funny ref '%s' locally"),
|
||||||
(*rmp)->peer_ref->name);
|
(*rmp)->peer_ref->name);
|
||||||
*rmp = (*rmp)->next;
|
*rmp = (*rmp)->next;
|
||||||
free(ignore->peer_ref);
|
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);
|
repo_init_revisions(the_repository, &revs, NULL);
|
||||||
setup_revisions(argv.argc, argv.argv, &revs, NULL);
|
setup_revisions(argv.argc, argv.argv, &revs, NULL);
|
||||||
if (prepare_revision_walk(&revs))
|
if (prepare_revision_walk(&revs))
|
||||||
die("revision walk setup failed");
|
die(_("revision walk setup failed"));
|
||||||
|
|
||||||
/* ... and count the commits on each side. */
|
/* ... and count the commits on each side. */
|
||||||
while (1) {
|
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])
|
else if (!colon[1])
|
||||||
oidclr(&entry->expect);
|
oidclr(&entry->expect);
|
||||||
else if (get_oid(colon + 1, &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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -227,7 +227,7 @@ EOF
|
|||||||
test_expect_success 'detect possible typos' '
|
test_expect_success 'detect possible typos' '
|
||||||
test_must_fail test-tool parse-options -boolean >output 2>output.err &&
|
test_must_fail test-tool parse-options -boolean >output 2>output.err &&
|
||||||
test_must_be_empty output &&
|
test_must_be_empty output &&
|
||||||
test_cmp typo.err output.err
|
test_i18ncmp typo.err output.err
|
||||||
'
|
'
|
||||||
|
|
||||||
cat >typo.err <<\EOF
|
cat >typo.err <<\EOF
|
||||||
@@ -237,7 +237,7 @@ EOF
|
|||||||
test_expect_success 'detect possible typos' '
|
test_expect_success 'detect possible typos' '
|
||||||
test_must_fail test-tool parse-options -ambiguous >output 2>output.err &&
|
test_must_fail test-tool parse-options -ambiguous >output 2>output.err &&
|
||||||
test_must_be_empty output &&
|
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' '
|
test_expect_success 'keep some options as arguments' '
|
||||||
|
|||||||
@@ -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 'HEAD link pointing at a funny object (from different wt)' '
|
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 &&
|
echo $ZERO_OID >.git/HEAD &&
|
||||||
# avoid corrupt/broken HEAD from interfering with repo discovery
|
# avoid corrupt/broken HEAD from interfering with repo discovery
|
||||||
test_must_fail git -C wt fsck 2>out &&
|
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' '
|
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 &&
|
git worktree add other &&
|
||||||
echo $ZERO_OID >.git/worktrees/other/HEAD &&
|
echo $ZERO_OID >.git/worktrees/other/HEAD &&
|
||||||
test_must_fail git fsck 2>out &&
|
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' '
|
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 &&
|
git worktree add other &&
|
||||||
echo "Contents missing from repo" | git hash-object --stdin >.git/worktrees/other/HEAD &&
|
echo "Contents missing from repo" | git hash-object --stdin >.git/worktrees/other/HEAD &&
|
||||||
test_must_fail git fsck 2>out &&
|
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' '
|
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 &&
|
git worktree add other &&
|
||||||
echo "ref: refs/funny/place" >.git/worktrees/other/HEAD &&
|
echo "ref: refs/funny/place" >.git/worktrees/other/HEAD &&
|
||||||
test_must_fail git fsck 2>out &&
|
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' '
|
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_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' '
|
||||||
@@ -169,7 +169,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' '
|
||||||
@@ -181,7 +181,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' '
|
||||||
@@ -193,7 +193,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
|
||||||
@@ -207,7 +207,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' '
|
||||||
@@ -219,7 +219,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' '
|
||||||
@@ -240,7 +240,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' '
|
||||||
@@ -294,7 +294,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' '
|
||||||
@@ -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: 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' '
|
||||||
@@ -355,7 +355,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' '
|
||||||
@@ -375,7 +375,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' '
|
||||||
@@ -431,7 +431,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
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
@@ -442,7 +442,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
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
@@ -463,7 +463,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
|
||||||
@@ -509,9 +509,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
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
@@ -629,7 +629,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
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
@@ -640,7 +640,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' '
|
||||||
@@ -659,8 +659,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
|
||||||
'
|
'
|
||||||
|
|
||||||
@@ -760,7 +760,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
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
@@ -808,7 +808,7 @@ test_expect_success 'detect corrupt index file in fsck' '
|
|||||||
test_when_finished "mv .git/index.backup .git/index" &&
|
test_when_finished "mv .git/index.backup .git/index" &&
|
||||||
corrupt_index_checksum &&
|
corrupt_index_checksum &&
|
||||||
test_must_fail git fsck --cache 2>errors &&
|
test_must_fail git fsck --cache 2>errors &&
|
||||||
grep "bad index file" errors
|
test_i18ngrep "bad index file" errors
|
||||||
'
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ canned_test_failure () {
|
|||||||
test_bad_opts () {
|
test_bad_opts () {
|
||||||
test_expect_success "invalid args: $1" "
|
test_expect_success "invalid args: $1" "
|
||||||
test_must_fail git log $1 2>errors &&
|
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 \
|
test_must_fail git -c protocol.version=2 clone \
|
||||||
--filter=blob:none $HTTPD_URL/one_time_sed/server repo 2>err &&
|
--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.
|
# Ensure that the one-time-sed script was used.
|
||||||
! test -e "$HTTPD_ROOT_PATH/one-time-sed"
|
! 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 &&
|
cp -r "$LOCAL_PRISTINE" local &&
|
||||||
inconsistency master 1234567890123456789012345678901234567890 &&
|
inconsistency master 1234567890123456789012345678901234567890 &&
|
||||||
test_must_fail git -C local fetch 2>err &&
|
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' '
|
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" &&
|
echo "s/master/raster/" >"$HTTPD_ROOT_PATH/one-time-sed" &&
|
||||||
test_must_fail git -C local fetch 2>err &&
|
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
|
stop_httpd
|
||||||
|
|||||||
@@ -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
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|||||||
Reference in New Issue
Block a user