diff --git a/git-repack.sh b/git-repack.sh
index e18eb3f5dcf42abfbd125594877ececf92c3d9b6..a0e06ed0768f65241b59cfdec7b0f6b833580c53 100755 (executable)
--- a/git-repack.sh
+++ b/git-repack.sh
-n) no_update_info=t ;;
-a) all_into_one=t ;;
-A) all_into_one=t
- keep_unreachable=--keep-unreachable ;;
+ keep_unreachable=t ;;
-d) remove_redundant=t ;;
-q) quiet=-q ;;
-f) no_reuse=--no-reuse-object ;;
if test -z "$args"
then
args='--unpacked --incremental'
- elif test -n "$keep_unreachable"
- then
- args="$args $keep_unreachable"
fi
;;
esac
do
case " $fullbases " in
*" $e "*) ;;
- *) rm -f "$e.pack" "$e.idx" "$e.keep" ;;
+ *)
+ rm -f "$e.idx" "$e.keep"
+ if test -n "$keep_unreachable" &&
+ test -f "$e.pack"
+ then
+ git unpack-objects < "$e.pack" || {
+ echo >&2 "Failed unpacking unreachable objects from redundant pack file $e.pack"
+ exit 1
+ }
+ fi
+ rm -f "$e.pack"
+ ;;
esac
done
)