Re: [PATCH v10 0/8] filter: support for excluding all trees and blobs
From: Matthew DeVore <hidden>
Date: 2018-10-03 23:08:21
On Wed, Oct 3, 2018 at 12:52 PM Matthew DeVore [off-list ref] wrote:
This is a minor change to the previous rollup. It moves positional arguments to the end of git-rev-list invocations. Here is an interdiff from v9:
... There is another problem with this patchset related to dropped exit codes and pipelines. In t6112, we run "git cat-file -t" on an object with was rm'd without being promised. It was printing an error and going undetected because it was upstream in a pipeline. The file was removed in the previous test. So I fixed the previous test to clone the repository before manipulating it, and I fixed the latter test to not mask Git exit codes :) (This is a really insidious pattern and I should have taken it more seriously.) Below is an interdiff. The two tests are added in different commits, so each commit had to be fixed up. I'll send a re-roll in two days or so if there are no more comments.
diff --git a/t/t6112-rev-list-filters-objects.shb/t/t6112-rev-list-filters-objects.sh index 5a61614b1..c8e3d87c4 100755
--- a/t/t6112-rev-list-filters-objects.sh
+++ b/t/t6112-rev-list-filters-objects.sh@@ -210,16 +210,21 @@ test_expect_success 'verify sparse:oid=oid-ishomits top-level files' '
test_expect_success 'rev-list W/ --missing=print and
--missing=allow-any for trees' '
TREE=$(git -C r3 rev-parse HEAD:dir1) &&
- rm r3/.git/objects/$(echo $TREE | sed "s|^..|&/|") &&
+ # Create a spare repo because we will be deleting objects
from this one.
+ git clone r3 r3.b &&
- git -C r3 rev-list --quiet --missing=print --objects HEADmissing_objs 2>rev_list_err &&
+ rm r3.b/.git/objects/$(echo $TREE | sed "s|^..|&/|") &&
+
+ git -C r3.b rev-list --quiet --missing=print --objects HEAD \
+ >missing_objs 2>rev_list_err &&
echo "?$TREE" >expected &&
test_cmp expected missing_objs &&
# do not complain when a missing tree cannot be parsed
test_must_be_empty rev_list_err &&
- git -C r3 rev-list --missing=allow-any --objects HEAD >objs
2>rev_list_err &&
+ git -C r3.b rev-list --missing=allow-any --objects HEAD \
+ >objs 2>rev_list_err &&
! grep $TREE objs &&
test_must_be_empty rev_list_err
'@@ -228,12 +233,13 @@ test_expect_success 'rev-list W/ --missing=printand --missing=allow-any for tre
test_expect_success 'verify tree:0 includes trees in "filtered" output' '
git -C r3 rev-list --quiet --objects --filter-print-omitted \
- --filter=tree:0 HEAD |
- awk -f print_1.awk |
+ --filter=tree:0 HEAD >revs &&
+
+ awk -f print_1.awk revs |
sed s/~// |
- xargs -n1 git -C r3 cat-file -t |
- sort -u >filtered_types &&
+ xargs -n1 git -C r3 cat-file -t >unsorted_filtered_types &&
+ sort -u unsorted_filtered_types >filtered_types &&
printf "blob\ntree\n" >expected &&
test_cmp expected filtered_types
'