mirror of
https://github.com/git/git.git
synced 2026-03-26 16:40:14 +01:00
Merge branch 'jk/fast-import-marks-alloc-fix'
"git fast-import" wasted a lot of memory when many marks were in use. * jk/fast-import-marks-alloc-fix: fast-import: fix over-allocation of marks storage
This commit is contained in:
51
t/t9304-fast-import-marks.sh
Executable file
51
t/t9304-fast-import-marks.sh
Executable file
@@ -0,0 +1,51 @@
|
||||
#!/bin/sh
|
||||
|
||||
test_description='test exotic situations with marks'
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success 'setup dump of basic history' '
|
||||
test_commit one &&
|
||||
git fast-export --export-marks=marks HEAD >dump
|
||||
'
|
||||
|
||||
test_expect_success 'setup large marks file' '
|
||||
# normally a marks file would have a lot of useful, unique
|
||||
# marks. But for our purposes, just having a lot of nonsense
|
||||
# ones is fine. Start at 1024 to avoid clashing with marks
|
||||
# legitimately used in our tiny dump.
|
||||
blob=$(git rev-parse HEAD:one.t) &&
|
||||
for i in $(test_seq 1024 16384)
|
||||
do
|
||||
echo ":$i $blob"
|
||||
done >>marks
|
||||
'
|
||||
|
||||
test_expect_success 'import with large marks file' '
|
||||
git fast-import --import-marks=marks <dump
|
||||
'
|
||||
|
||||
test_expect_success 'setup dump with submodule' '
|
||||
git submodule add "$PWD" sub &&
|
||||
git commit -m "add submodule" &&
|
||||
git fast-export HEAD >dump
|
||||
'
|
||||
|
||||
test_expect_success 'setup submodule mapping with large id' '
|
||||
old=$(git rev-parse HEAD:sub) &&
|
||||
new=$(echo $old | sed s/./a/g) &&
|
||||
echo ":12345 $old" >from &&
|
||||
echo ":12345 $new" >to
|
||||
'
|
||||
|
||||
test_expect_success 'import with submodule mapping' '
|
||||
git init dst &&
|
||||
git -C dst fast-import \
|
||||
--rewrite-submodules-from=sub:../from \
|
||||
--rewrite-submodules-to=sub:../to \
|
||||
<dump &&
|
||||
git -C dst rev-parse HEAD:sub >actual &&
|
||||
echo "$new" >expect &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_done
|
||||
Reference in New Issue
Block a user