Merge branch 'master' of git://repo.or.cz/git/fastimport

* 'master' of git://repo.or.cz/git/fastimport:
  bash: Hide git-fast-import.
  fast-import: Add tip about importing renames.
  fast-import: Hide the pack boundary commits by default.
This commit is contained in:
Junio C Hamano 2007-02-11 20:34:57 -08:00
commit b578e509d3
4 changed files with 67 additions and 11 deletions

View file

@ -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
@ -706,6 +715,13 @@ The branch LRU builtin to fast-import tends to behave very well, and the
cost of activating an inactive branch is so low that bouncing around
between branches has virtually no impact on import performance.
Handling Renames
~~~~~~~~~~~~~~~~
When importing a renamed file or directory, simply delete the old
name(s) and modify the new name(s) during the corresponding commit.
Git performs rename detection after-the-fact, rather than explicitly
during a commit.
Use Tag Fixup Branches
~~~~~~~~~~~~~~~~~~~~~~
Some other SCM systems let the user create a tag from multiple

View file

@ -270,6 +270,7 @@ __git_commands ()
cvsserver) : daemon;;
daemon) : daemon;;
diff-stages) : nobody uses it;;
fast-import) : import;;
fsck-objects) : plumbing;;
fetch-pack) : plumbing;;
fmt-merge-msg) : plumbing;;

View file

@ -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++)

View file

@ -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