Teach fast-import how to sit quietly in the corner.
Often users will be running fast-import from within a larger frontend process, and this may be a frequent periodic tool such as a future edition of `git-svn fetch`. We don't want to bombard users with our large stats output if they won't be interested in it, so `--quiet` is now an option to make gfi be more silent. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
825769a8fe
commit
c499d76849
@ -64,6 +64,18 @@ OPTIONS
|
|||||||
Frontends can use this file to validate imports after they
|
Frontends can use this file to validate imports after they
|
||||||
have been completed.
|
have been completed.
|
||||||
|
|
||||||
|
--quiet::
|
||||||
|
Disable all non-fatal output, making gfi silent when it
|
||||||
|
is successful. This option disables the output shown by
|
||||||
|
\--stats.
|
||||||
|
|
||||||
|
--stats::
|
||||||
|
Display some basic statistics about the objects gfi has
|
||||||
|
created, the packfiles they were stored into, and the
|
||||||
|
memory used by gfi during this run. Showing this output
|
||||||
|
is currently the default, but can be disabled with \--quiet.
|
||||||
|
|
||||||
|
|
||||||
Performance
|
Performance
|
||||||
-----------
|
-----------
|
||||||
The design of gfi allows it to import large projects in a minimum
|
The design of gfi allows it to import large projects in a minimum
|
||||||
@ -106,8 +118,8 @@ fast-forward update, gfi will skip updating that ref and instead
|
|||||||
prints a warning message. gfi will always attempt to update all
|
prints a warning message. gfi will always attempt to update all
|
||||||
branch refs, and does not stop on the first failure.
|
branch refs, and does not stop on the first failure.
|
||||||
|
|
||||||
Branch updates can be forced with `--force`, but its recommended that
|
Branch updates can be forced with \--force, but its recommended that
|
||||||
this only be used on an otherwise quiet repository. Using `--force`
|
this only be used on an otherwise quiet repository. Using \--force
|
||||||
is not necessary for an initial import into an empty repository.
|
is not necessary for an initial import into an empty repository.
|
||||||
|
|
||||||
|
|
||||||
@ -148,11 +160,11 @@ Date Formats
|
|||||||
~~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
The following date formats are supported. A frontend should select
|
The following date formats are supported. A frontend should select
|
||||||
the format it will use for this import by passing the format name
|
the format it will use for this import by passing the format name
|
||||||
in the `--date-format=<fmt>` command line option.
|
in the \--date-format=<fmt> command line option.
|
||||||
|
|
||||||
`raw`::
|
`raw`::
|
||||||
This is the Git native format and is `<time> SP <offutc>`.
|
This is the Git native format and is `<time> SP <offutc>`.
|
||||||
It is also gfi's default format, if `--date-format` was
|
It is also gfi's default format, if \--date-format was
|
||||||
not specified.
|
not specified.
|
||||||
+
|
+
|
||||||
The time of the event is specified by `<time>` as the number of
|
The time of the event is specified by `<time>` as the number of
|
||||||
@ -321,7 +333,7 @@ the email address from the other fields in the line. Note that
|
|||||||
`LT` and `LF`. It is typically UTF-8 encoded.
|
`LT` and `LF`. It is typically UTF-8 encoded.
|
||||||
|
|
||||||
The time of the change is specified by `<when>` using the date format
|
The time of the change is specified by `<when>` using the date format
|
||||||
that was selected by the `--date-format=<fmt>` command line option.
|
that was selected by the \--date-format=<fmt> command line option.
|
||||||
See ``Date Formats'' above for the set of supported formats, and
|
See ``Date Formats'' above for the set of supported formats, and
|
||||||
their syntax.
|
their syntax.
|
||||||
|
|
||||||
@ -735,7 +747,7 @@ branch, their in-memory storage size can grow to a considerable size
|
|||||||
gfi automatically moves active branches to inactive status based on
|
gfi automatically moves active branches to inactive status based on
|
||||||
a simple least-recently-used algorithm. The LRU chain is updated on
|
a simple least-recently-used algorithm. The LRU chain is updated on
|
||||||
each `commit` command. The maximum number of active branches can be
|
each `commit` command. The maximum number of active branches can be
|
||||||
increased or decreased on the command line with `--active-branches=`.
|
increased or decreased on the command line with \--active-branches=.
|
||||||
|
|
||||||
per active tree
|
per active tree
|
||||||
~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~
|
||||||
|
@ -1950,8 +1950,7 @@ static const char fast_import_usage[] =
|
|||||||
|
|
||||||
int main(int argc, const char **argv)
|
int main(int argc, const char **argv)
|
||||||
{
|
{
|
||||||
int i;
|
int i, show_stats = 1;
|
||||||
uintmax_t total_count, duplicate_count;
|
|
||||||
|
|
||||||
git_config(git_default_config);
|
git_config(git_default_config);
|
||||||
|
|
||||||
@ -1981,6 +1980,10 @@ int main(int argc, const char **argv)
|
|||||||
mark_file = a + 15;
|
mark_file = a + 15;
|
||||||
else if (!strcmp(a, "--force"))
|
else if (!strcmp(a, "--force"))
|
||||||
force_update = 1;
|
force_update = 1;
|
||||||
|
else if (!strcmp(a, "--quiet"))
|
||||||
|
show_stats = 0;
|
||||||
|
else if (!strcmp(a, "--stats"))
|
||||||
|
show_stats = 1;
|
||||||
else
|
else
|
||||||
die("unknown option %s", a);
|
die("unknown option %s", a);
|
||||||
}
|
}
|
||||||
@ -2020,31 +2023,32 @@ int main(int argc, const char **argv)
|
|||||||
unkeep_all_packs();
|
unkeep_all_packs();
|
||||||
dump_marks();
|
dump_marks();
|
||||||
|
|
||||||
total_count = 0;
|
if (show_stats) {
|
||||||
for (i = 0; i < ARRAY_SIZE(object_count_by_type); i++)
|
uintmax_t total_count = 0, duplicate_count = 0;
|
||||||
total_count += object_count_by_type[i];
|
for (i = 0; i < ARRAY_SIZE(object_count_by_type); i++)
|
||||||
duplicate_count = 0;
|
total_count += object_count_by_type[i];
|
||||||
for (i = 0; i < ARRAY_SIZE(duplicate_count_by_type); i++)
|
for (i = 0; i < ARRAY_SIZE(duplicate_count_by_type); i++)
|
||||||
duplicate_count += duplicate_count_by_type[i];
|
duplicate_count += duplicate_count_by_type[i];
|
||||||
|
|
||||||
fprintf(stderr, "%s statistics:\n", argv[0]);
|
fprintf(stderr, "%s statistics:\n", argv[0]);
|
||||||
fprintf(stderr, "---------------------------------------------------------------------\n");
|
fprintf(stderr, "---------------------------------------------------------------------\n");
|
||||||
fprintf(stderr, "Alloc'd objects: %10ju\n", alloc_count);
|
fprintf(stderr, "Alloc'd objects: %10ju\n", alloc_count);
|
||||||
fprintf(stderr, "Total objects: %10ju (%10ju duplicates )\n", total_count, duplicate_count);
|
fprintf(stderr, "Total objects: %10ju (%10ju duplicates )\n", total_count, duplicate_count);
|
||||||
fprintf(stderr, " blobs : %10ju (%10ju duplicates %10ju deltas)\n", object_count_by_type[OBJ_BLOB], duplicate_count_by_type[OBJ_BLOB], delta_count_by_type[OBJ_BLOB]);
|
fprintf(stderr, " blobs : %10ju (%10ju duplicates %10ju deltas)\n", object_count_by_type[OBJ_BLOB], duplicate_count_by_type[OBJ_BLOB], delta_count_by_type[OBJ_BLOB]);
|
||||||
fprintf(stderr, " trees : %10ju (%10ju duplicates %10ju deltas)\n", object_count_by_type[OBJ_TREE], duplicate_count_by_type[OBJ_TREE], delta_count_by_type[OBJ_TREE]);
|
fprintf(stderr, " trees : %10ju (%10ju duplicates %10ju deltas)\n", object_count_by_type[OBJ_TREE], duplicate_count_by_type[OBJ_TREE], delta_count_by_type[OBJ_TREE]);
|
||||||
fprintf(stderr, " commits: %10ju (%10ju duplicates %10ju deltas)\n", object_count_by_type[OBJ_COMMIT], duplicate_count_by_type[OBJ_COMMIT], delta_count_by_type[OBJ_COMMIT]);
|
fprintf(stderr, " commits: %10ju (%10ju duplicates %10ju deltas)\n", object_count_by_type[OBJ_COMMIT], duplicate_count_by_type[OBJ_COMMIT], delta_count_by_type[OBJ_COMMIT]);
|
||||||
fprintf(stderr, " tags : %10ju (%10ju duplicates %10ju deltas)\n", object_count_by_type[OBJ_TAG], duplicate_count_by_type[OBJ_TAG], delta_count_by_type[OBJ_TAG]);
|
fprintf(stderr, " tags : %10ju (%10ju duplicates %10ju deltas)\n", object_count_by_type[OBJ_TAG], duplicate_count_by_type[OBJ_TAG], delta_count_by_type[OBJ_TAG]);
|
||||||
fprintf(stderr, "Total branches: %10lu (%10lu loads )\n", branch_count, branch_load_count);
|
fprintf(stderr, "Total branches: %10lu (%10lu loads )\n", branch_count, branch_load_count);
|
||||||
fprintf(stderr, " marks: %10ju (%10ju unique )\n", (((uintmax_t)1) << marks->shift) * 1024, marks_set_count);
|
fprintf(stderr, " marks: %10ju (%10ju unique )\n", (((uintmax_t)1) << marks->shift) * 1024, marks_set_count);
|
||||||
fprintf(stderr, " atoms: %10u\n", atom_cnt);
|
fprintf(stderr, " atoms: %10u\n", atom_cnt);
|
||||||
fprintf(stderr, "Memory total: %10ju KiB\n", (total_allocd + alloc_count*sizeof(struct object_entry))/1024);
|
fprintf(stderr, "Memory total: %10ju KiB\n", (total_allocd + alloc_count*sizeof(struct object_entry))/1024);
|
||||||
fprintf(stderr, " pools: %10lu KiB\n", total_allocd/1024);
|
fprintf(stderr, " pools: %10lu KiB\n", total_allocd/1024);
|
||||||
fprintf(stderr, " objects: %10ju KiB\n", (alloc_count*sizeof(struct object_entry))/1024);
|
fprintf(stderr, " objects: %10ju KiB\n", (alloc_count*sizeof(struct object_entry))/1024);
|
||||||
fprintf(stderr, "---------------------------------------------------------------------\n");
|
fprintf(stderr, "---------------------------------------------------------------------\n");
|
||||||
pack_report();
|
pack_report();
|
||||||
fprintf(stderr, "---------------------------------------------------------------------\n");
|
fprintf(stderr, "---------------------------------------------------------------------\n");
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
|
}
|
||||||
|
|
||||||
return failure ? 1 : 0;
|
return failure ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user