fast-import: Hide the pack boundary commits by default.
Most users don't need the pack boundary information that fast-import was printing to standard output, especially if they were calling it with --quiet. Those users who do want this information probably want it captured so they can go back and use it to repack the imported repository. So dumping the boundary commits to a log file makes more sense then printing them to standard output. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
cc46a74398
commit
bdf1c06dc1
@ -64,6 +64,15 @@ OPTIONS
|
||||
Frontends can use this file to validate imports after they
|
||||
have been completed.
|
||||
|
||||
--export-pack-edges=<file>::
|
||||
After creating a packfile, print a line of data to
|
||||
<file> listing the filename of the packfile and the last
|
||||
commit on each branch that was written to that packfile.
|
||||
This information may be useful after importing projects
|
||||
whose total object set exceeds the 4 GiB packfile limit,
|
||||
as these commits can be used as edge points during calls
|
||||
to gitlink:git-pack-objects[1].
|
||||
|
||||
--quiet::
|
||||
Disable all non-fatal output, making fast-import silent when it
|
||||
is successful. This option disables the output shown by
|
||||
|
@ -261,6 +261,7 @@ static unsigned long object_count;
|
||||
static unsigned long branch_count;
|
||||
static unsigned long branch_load_count;
|
||||
static int failure;
|
||||
static FILE *pack_edges;
|
||||
|
||||
/* Memory pools */
|
||||
static size_t mem_pool_alloc = 2*1024*1024 - sizeof(struct mem_pool);
|
||||
@ -811,18 +812,21 @@ static void end_packfile(void)
|
||||
install_packed_git(new_p);
|
||||
|
||||
/* Print the boundary */
|
||||
fprintf(stdout, "%s:", new_p->pack_name);
|
||||
for (i = 0; i < branch_table_sz; i++) {
|
||||
for (b = branch_table[i]; b; b = b->table_next_branch) {
|
||||
if (b->pack_id == pack_id)
|
||||
fprintf(stdout, " %s", sha1_to_hex(b->sha1));
|
||||
if (pack_edges) {
|
||||
fprintf(pack_edges, "%s:", new_p->pack_name);
|
||||
for (i = 0; i < branch_table_sz; i++) {
|
||||
for (b = branch_table[i]; b; b = b->table_next_branch) {
|
||||
if (b->pack_id == pack_id)
|
||||
fprintf(pack_edges, " %s", sha1_to_hex(b->sha1));
|
||||
}
|
||||
}
|
||||
for (t = first_tag; t; t = t->next_tag) {
|
||||
if (t->pack_id == pack_id)
|
||||
fprintf(pack_edges, " %s", sha1_to_hex(t->sha1));
|
||||
}
|
||||
fputc('\n', pack_edges);
|
||||
fflush(pack_edges);
|
||||
}
|
||||
for (t = first_tag; t; t = t->next_tag) {
|
||||
if (t->pack_id == pack_id)
|
||||
fprintf(stdout, " %s", sha1_to_hex(t->sha1));
|
||||
}
|
||||
fputc('\n', stdout);
|
||||
|
||||
pack_id++;
|
||||
}
|
||||
@ -1988,7 +1992,13 @@ int main(int argc, const char **argv)
|
||||
max_active_branches = strtoul(a + 18, NULL, 0);
|
||||
else if (!strncmp(a, "--export-marks=", 15))
|
||||
mark_file = a + 15;
|
||||
else if (!strcmp(a, "--force"))
|
||||
else if (!strncmp(a, "--export-pack-edges=", 20)) {
|
||||
if (pack_edges)
|
||||
fclose(pack_edges);
|
||||
pack_edges = fopen(a + 20, "a");
|
||||
if (!pack_edges)
|
||||
die("Cannot open %s: %s", a + 20, strerror(errno));
|
||||
} else if (!strcmp(a, "--force"))
|
||||
force_update = 1;
|
||||
else if (!strcmp(a, "--quiet"))
|
||||
show_stats = 0;
|
||||
@ -2033,6 +2043,9 @@ int main(int argc, const char **argv)
|
||||
unkeep_all_packs();
|
||||
dump_marks();
|
||||
|
||||
if (pack_edges)
|
||||
fclose(pack_edges);
|
||||
|
||||
if (show_stats) {
|
||||
uintmax_t total_count = 0, duplicate_count = 0;
|
||||
for (i = 0; i < ARRAY_SIZE(object_count_by_type); i++)
|
||||
|
@ -407,4 +407,30 @@ test_expect_success \
|
||||
'git-cat-file blob H:h/e/l/lo >actual &&
|
||||
diff -u expect actual'
|
||||
|
||||
###
|
||||
### series I
|
||||
###
|
||||
|
||||
cat >input <<INPUT_END
|
||||
commit refs/heads/export-boundary
|
||||
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
|
||||
data <<COMMIT
|
||||
we have a border. its only 40 characters wide.
|
||||
COMMIT
|
||||
|
||||
from refs/heads/branch
|
||||
|
||||
INPUT_END
|
||||
test_expect_success \
|
||||
'I: export-pack-edges' \
|
||||
'git-fast-import --export-pack-edges=edges.list <input'
|
||||
|
||||
cat >expect <<EOF
|
||||
.git/objects/pack/pack-.pack: `git-rev-parse --verify export-boundary`
|
||||
EOF
|
||||
test_expect_success \
|
||||
'I: verify edge list' \
|
||||
'sed -e s/pack-.*pack/pack-.pack/ edges.list >actual &&
|
||||
diff -u expect actual'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user