221
trap 'cd ../..; rm -rf "$tempdir"' 0
222
223
# Make sure refs/original is empty
224
-git for-each-ref > "$tempdir"/backup-refs
224
+git for-each-ref > "$tempdir"/backup-refs || exit
225
while read sha1 type name
226
do
227
case "$force,$name" in
241
export GIT_DIR GIT_WORK_TREE
242
243
# The refs should be updated if their heads were rewritten
244
-git rev-parse --no-flags --revs-only --symbolic-full-name --default HEAD "$@" |
245
-sed -e '/^^/d' >"$tempdir"/heads
244
+git rev-parse --no-flags --revs-only --symbolic-full-name \
245
+ --default HEAD "$@" > "$tempdir"/raw-heads || exit
246
+sed -e '/^^/d' "$tempdir"/raw-heads >"$tempdir"/heads
247
248
test -s "$tempdir"/heads ||
249
die "Which ref do you want to rewrite?"
252
export GIT_INDEX_FILE
253
git read-tree || die "Could not seed the index"
254
254
-ret=0
255
-
255
# map old->new commit ids for rewriting parents
256
mkdir ../map || die "Could not create map/ directory"
257
314
die "tree filter failed: $filter_tree"
315
316
(
318
- git diff-index -r --name-only $commit
317
+ git diff-index -r --name-only $commit &&
318
git ls-files --others
320
- ) |
321
- git update-index --add --replace --remove --stdin
319
+ ) > "$tempdir"/tree-state || exit
320
+ git update-index --add --replace --remove --stdin \
321
+ < "$tempdir"/tree-state || exit
322
fi
323
324
eval "$filter_index" < /dev/null ||
339
eval "$filter_msg" > ../message ||
340
die "msg filter failed: $filter_msg"
341
@SHELL_PATH@ -c "$filter_commit" "git commit-tree" \
342
- $(git write-tree) $parentstr < ../message > ../map/$commit
342
+ $(git write-tree) $parentstr < ../message > ../map/$commit ||
343
+ die "could not write rewritten commit"
344
done <../revs
345
346
# In case of a subdirectory filter, it is possible that a specified head
408
die "Could not rewrite $ref"
409
;;
410
esac
410
- git update-ref -m "filter-branch: backup" "$orig_namespace$ref" $sha1
411
+ git update-ref -m "filter-branch: backup" "$orig_namespace$ref" $sha1 ||
412
+ exit
413
done < "$tempdir"/heads
414
415
# TODO: This should possibly go, with the semantics that all positive given
485
}
486
487
if [ "$(is_bare_repository)" = false ]; then
486
- git read-tree -u -m HEAD
488
+ git read-tree -u -m HEAD || exit
489
fi
490
489
-exit $ret
491
+exit 0