]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t/lib-pack: support SHA-256
authorbrian m. carlson <sandals@crustytoothpaste.net>
Fri, 7 Feb 2020 00:52:34 +0000 (00:52 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 7 Feb 2020 19:07:29 +0000 (11:07 -0800)
Update the support routines for generating packs to support both SHA-1
and SHA-256.  Compute the trailing pack checksum and its length
correctly depending on the algorithm, and look up the object names based
on the algorithm as well.  Ensure we initialize the algorithm facts so
that our callers need not do so.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/lib-pack.sh

index c4d907a450a7863ff0fe32fe9aed7ef5c100dd3e..f3463170b39fee8befa08ee3f3e460426f731498 100644 (file)
@@ -35,9 +35,11 @@ pack_header () {
 # have hardcoded some well-known objects. See the case statements below for the
 # complete list.
 pack_obj () {
+       test_oid_init
+
        case "$1" in
        # empty blob
-       e69de29bb2d1d6434b8b29ae775ad8c2e48c5391)
+       $EMPTY_BLOB)
                case "$2" in
                '')
                        printf '\060\170\234\003\0\0\0\0\1'
@@ -47,7 +49,7 @@ pack_obj () {
                ;;
 
        # blob containing "\7\76"
-       e68fe8129b546b101aee9510c5328e7f21ca1d18)
+       $(test_oid packlib_7_76))
                case "$2" in
                '')
                        printf '\062\170\234\143\267\3\0\0\116\0\106'
@@ -59,11 +61,18 @@ pack_obj () {
                        printf '\234\143\142\142\142\267\003\0\0\151\0\114'
                        return
                        ;;
+               37c8e2c15bb22b912e59b43fd51a4f7e9465ed0b5084c5a1411d991cbe630683)
+                       printf '\165\67\310\342\301\133\262\53\221\56\131' &&
+                       printf '\264\77\325\32\117\176\224\145\355\13\120' &&
+                       printf '\204\305\241\101\35\231\34\276\143\6\203\170' &&
+                       printf '\234\143\142\142\142\267\003\0\0\151\0\114'
+                       return
+                       ;;
                esac
                ;;
 
        # blob containing "\7\0"
-       01d7713666f4de822776c7622c10f1b07de280dc)
+       $(test_oid packlib_7_0))
                case "$2" in
                '')
                        printf '\062\170\234\143\147\0\0\0\20\0\10'
@@ -75,6 +84,13 @@ pack_obj () {
                        printf '\143\142\142\142\147\0\0\0\53\0\16'
                        return
                        ;;
+               5d8e6fc40f2dab00e6983a48523fe57e621f46434cb58dbd4422fba03380d886)
+                       printf '\165\135\216\157\304\17\55\253\0\346\230\72' &&
+                       printf '\110\122\77\345\176\142\37\106\103\114\265' &&
+                       printf '\215\275\104\42\373\240\63\200\330\206\170\234' &&
+                       printf '\143\142\142\142\147\0\0\0\53\0\16'
+                       return
+                       ;;
                esac
                ;;
        esac
@@ -86,7 +102,7 @@ pack_obj () {
        then
                echo "$1" | git pack-objects --stdout >pack_obj.tmp &&
                size=$(wc -c <pack_obj.tmp) &&
-               dd if=pack_obj.tmp bs=1 count=$((size - 20 - 12)) skip=12 &&
+               dd if=pack_obj.tmp bs=1 count=$((size - $(test_oid rawsz) - 12)) skip=12 &&
                rm -f pack_obj.tmp
                return
        fi
@@ -97,7 +113,8 @@ pack_obj () {
 
 # Compute and append pack trailer to "$1"
 pack_trailer () {
-       test-tool sha1 -b <"$1" >trailer.tmp &&
+       test_oid_init &&
+       test-tool $(test_oid algo) -b <"$1" >trailer.tmp &&
        cat trailer.tmp >>"$1" &&
        rm -f trailer.tmp
 }
@@ -108,3 +125,11 @@ pack_trailer () {
 clear_packs () {
        rm -f .git/objects/pack/*
 }
+
+test_oid_cache <<-EOF
+packlib_7_0 sha1:01d7713666f4de822776c7622c10f1b07de280dc
+packlib_7_0 sha256:37c8e2c15bb22b912e59b43fd51a4f7e9465ed0b5084c5a1411d991cbe630683
+
+packlib_7_76 sha1:e68fe8129b546b101aee9510c5328e7f21ca1d18
+packlib_7_76 sha256:5d8e6fc40f2dab00e6983a48523fe57e621f46434cb58dbd4422fba03380d886
+EOF