summaryrefslogtreecommitdiff
path: root/t/lib-pack.sh
diff options
context:
space:
mode:
Diffstat (limited to 't/lib-pack.sh')
-rw-r--r--t/lib-pack.sh12
1 files changed, 12 insertions, 0 deletions
diff --git a/t/lib-pack.sh b/t/lib-pack.sh
index 7509846..4674899 100644
--- a/t/lib-pack.sh
+++ b/t/lib-pack.sh
@@ -79,6 +79,18 @@ pack_obj () {
;;
esac
+ # If it's not a delta, we can convince pack-objects to generate a pack
+ # with just our entry, and then strip off the header (12 bytes) and
+ # trailer (20 bytes).
+ if test -z "$2"
+ 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 &&
+ rm -f pack_obj.tmp
+ return
+ fi
+
echo >&2 "BUG: don't know how to print $1${2:+ (from $2)}"
return 1
}