#!/bin/bash set -e url="$1" bundle_file="$2" shift 2 declare -a git_args rm -rf /tmp/build mkdir -p /tmp/build if [[ -e $bundle_file ]]; then git clone --mirror --bare "$bundle_file" "/tmp/build/base.git" git_args+=( --reference "/tmp/build/base.git" ) ls -l "$bundle_file" fi git clone --mirror --bare "${git_args[@]}" "$url" "/tmp/build/repo.git" GIT_DIR="/tmp/build/repo.git" git bundle create "/tmp/build/new-bundle.git" --all ls -l "/tmp/build/new-bundle.git" cp -a "/tmp/build/new-bundle.git" "$bundle_file.tmp" if [[ -e $bundle_file ]]; then chown --reference "$bundle_file" "$bundle_file.tmp" chmod --reference "$bundle_file" "$bundle_file.tmp" fi mv "$bundle_file.tmp" "$bundle_file" rm -rf /tmp/build