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:
@ -64,6 +64,15 @@ 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.
|
||||||
|
|
||||||
|
--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::
|
--quiet::
|
||||||
Disable all non-fatal output, making fast-import silent when it
|
Disable all non-fatal output, making fast-import silent when it
|
||||||
is successful. This option disables the output shown by
|
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_count;
|
||||||
static unsigned long branch_load_count;
|
static unsigned long branch_load_count;
|
||||||
static int failure;
|
static int failure;
|
||||||
|
static FILE *pack_edges;
|
||||||
|
|
||||||
/* Memory pools */
|
/* Memory pools */
|
||||||
static size_t mem_pool_alloc = 2*1024*1024 - sizeof(struct mem_pool);
|
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);
|
install_packed_git(new_p);
|
||||||
|
|
||||||
/* Print the boundary */
|
/* Print the boundary */
|
||||||
fprintf(stdout, "%s:", new_p->pack_name);
|
if (pack_edges) {
|
||||||
for (i = 0; i < branch_table_sz; i++) {
|
fprintf(pack_edges, "%s:", new_p->pack_name);
|
||||||
for (b = branch_table[i]; b; b = b->table_next_branch) {
|
for (i = 0; i < branch_table_sz; i++) {
|
||||||
if (b->pack_id == pack_id)
|
for (b = branch_table[i]; b; b = b->table_next_branch) {
|
||||||
fprintf(stdout, " %s", sha1_to_hex(b->sha1));
|
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++;
|
pack_id++;
|
||||||
}
|
}
|
||||||
@ -1988,7 +1992,13 @@ int main(int argc, const char **argv)
|
|||||||
max_active_branches = strtoul(a + 18, NULL, 0);
|
max_active_branches = strtoul(a + 18, NULL, 0);
|
||||||
else if (!strncmp(a, "--export-marks=", 15))
|
else if (!strncmp(a, "--export-marks=", 15))
|
||||||
mark_file = a + 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;
|
force_update = 1;
|
||||||
else if (!strcmp(a, "--quiet"))
|
else if (!strcmp(a, "--quiet"))
|
||||||
show_stats = 0;
|
show_stats = 0;
|
||||||
@ -2033,6 +2043,9 @@ int main(int argc, const char **argv)
|
|||||||
unkeep_all_packs();
|
unkeep_all_packs();
|
||||||
dump_marks();
|
dump_marks();
|
||||||
|
|
||||||
|
if (pack_edges)
|
||||||
|
fclose(pack_edges);
|
||||||
|
|
||||||
if (show_stats) {
|
if (show_stats) {
|
||||||
uintmax_t total_count = 0, duplicate_count = 0;
|
uintmax_t total_count = 0, duplicate_count = 0;
|
||||||
for (i = 0; i < ARRAY_SIZE(object_count_by_type); i++)
|
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 &&
|
'git-cat-file blob H:h/e/l/lo >actual &&
|
||||||
diff -u expect 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
|
test_done
|
||||||
|
Reference in New Issue
Block a user