t / t9302-fast-import-unpack-limit.shon commit Merge branch 'rs/path-name-safety-cleanup' (3bf7d37)
   1#!/bin/sh
   2test_description='test git fast-import unpack limit'
   3. ./test-lib.sh
   4
   5test_expect_success 'create loose objects on import' '
   6        test_tick &&
   7        cat >input <<-INPUT_END &&
   8        commit refs/heads/master
   9        committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
  10        data <<COMMIT
  11        initial
  12        COMMIT
  13
  14        done
  15        INPUT_END
  16
  17        git -c fastimport.unpackLimit=2 fast-import --done <input &&
  18        git fsck --no-progress &&
  19        test $(find .git/objects/?? -type f | wc -l) -eq 2 &&
  20        test $(find .git/objects/pack -type f | wc -l) -eq 0
  21'
  22
  23test_expect_success 'bigger packs are preserved' '
  24        test_tick &&
  25        cat >input <<-INPUT_END &&
  26        commit refs/heads/master
  27        committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
  28        data <<COMMIT
  29        incremental should create a pack
  30        COMMIT
  31        from refs/heads/master^0
  32
  33        commit refs/heads/branch
  34        committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
  35        data <<COMMIT
  36        branch
  37        COMMIT
  38
  39        done
  40        INPUT_END
  41
  42        git -c fastimport.unpackLimit=2 fast-import --done <input &&
  43        git fsck --no-progress &&
  44        test $(find .git/objects/?? -type f | wc -l) -eq 2 &&
  45        test $(find .git/objects/pack -type f | wc -l) -eq 2
  46'
  47
  48test_expect_success 'lookups after checkpoint works' '
  49        hello_id=$(echo hello | git hash-object --stdin -t blob) &&
  50        id="$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE" &&
  51        before=$(git rev-parse refs/heads/master^0) &&
  52        (
  53                cat <<-INPUT_END &&
  54                blob
  55                mark :1
  56                data 6
  57                hello
  58
  59                commit refs/heads/master
  60                mark :2
  61                committer $id
  62                data <<COMMIT
  63                checkpoint after this
  64                COMMIT
  65                from refs/heads/master^0
  66                M 100644 :1 hello
  67
  68                # pre-checkpoint
  69                cat-blob :1
  70                cat-blob $hello_id
  71                checkpoint
  72                # post-checkpoint
  73                cat-blob :1
  74                cat-blob $hello_id
  75                INPUT_END
  76
  77                n=0 &&
  78                from=$before &&
  79                while test x"$from" = x"$before"
  80                do
  81                        if test $n -gt 30
  82                        then
  83                                echo >&2 "checkpoint did not update branch"
  84                                exit 1
  85                        else
  86                                n=$(($n + 1))
  87                        fi &&
  88                        sleep 1 &&
  89                        from=$(git rev-parse refs/heads/master^0)
  90                done &&
  91                cat <<-INPUT_END &&
  92                commit refs/heads/master
  93                committer $id
  94                data <<COMMIT
  95                make sure from "unpacked sha1 reference" works, too
  96                COMMIT
  97                from $from
  98                INPUT_END
  99                echo done
 100        ) | git -c fastimport.unpackLimit=100 fast-import --done &&
 101        test $(find .git/objects/?? -type f | wc -l) -eq 6 &&
 102        test $(find .git/objects/pack -type f | wc -l) -eq 2
 103'
 104
 105test_done