Skip to content

Commit d4a682d

Browse files
committed
Merge branch 'ls/filter-process' into maint
Doc update. * ls/filter-process: t0021: fix flaky test docs: warn about possible '=' in clean/smudge filter process values
2 parents ef6e815 + 7eeda8b commit d4a682d

File tree

4 files changed

+24
-29
lines changed

4 files changed

+24
-29
lines changed

Documentation/gitattributes.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,9 @@ to filter relative to the repository root. Right after the flush packet
435435
Git sends the content split in zero or more pkt-line packets and a
436436
flush packet to terminate content. Please note, that the filter
437437
must not send any response before it received the content and the
438-
final flush packet.
438+
final flush packet. Also note that the "value" of a "key=value" pair
439+
can contain the "=" character whereas the key would never contain
440+
that character.
439441
------------------------
440442
packet: git> command=smudge
441443
packet: git> pathname=path/testfile.dat

contrib/long-running-filter/example.pl

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,12 @@ sub packet_flush {
8181
packet_flush();
8282

8383
while (1) {
84-
my ($command) = packet_txt_read() =~ /^command=([^=]+)$/;
85-
my ($pathname) = packet_txt_read() =~ /^pathname=([^=]+)$/;
84+
my ($command) = packet_txt_read() =~ /^command=(.+)$/;
85+
my ($pathname) = packet_txt_read() =~ /^pathname=(.+)$/;
86+
87+
if ( $pathname eq "" ) {
88+
die "bad pathname '$pathname'";
89+
}
8690

8791
packet_bin_read();
8892

t/t0021-conversion.sh

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ test_expect_success setup '
9393
git checkout -- test test.t test.i &&
9494
9595
echo "content-test2" >test2.o &&
96-
echo "content-test3 - filename with special characters" >"test3 '\''sq'\'',\$x.o"
96+
echo "content-test3 - filename with special characters" >"test3 '\''sq'\'',\$x=.o"
9797
'
9898

9999
script='s/^\$Id: \([0-9a-f]*\) \$/\1/p'
@@ -358,12 +358,12 @@ test_expect_success PERL 'required process filter should filter data' '
358358
cp "$TEST_ROOT/test.o" test.r &&
359359
cp "$TEST_ROOT/test2.o" test2.r &&
360360
mkdir testsubdir &&
361-
cp "$TEST_ROOT/test3 '\''sq'\'',\$x.o" "testsubdir/test3 '\''sq'\'',\$x.r" &&
361+
cp "$TEST_ROOT/test3 '\''sq'\'',\$x=.o" "testsubdir/test3 '\''sq'\'',\$x=.r" &&
362362
>test4-empty.r &&
363363
364364
S=$(file_size test.r) &&
365365
S2=$(file_size test2.r) &&
366-
S3=$(file_size "testsubdir/test3 '\''sq'\'',\$x.r") &&
366+
S3=$(file_size "testsubdir/test3 '\''sq'\'',\$x=.r") &&
367367
368368
filter_git add . &&
369369
cat >expected.log <<-EOF &&
@@ -372,35 +372,20 @@ test_expect_success PERL 'required process filter should filter data' '
372372
IN: clean test.r $S [OK] -- OUT: $S . [OK]
373373
IN: clean test2.r $S2 [OK] -- OUT: $S2 . [OK]
374374
IN: clean test4-empty.r 0 [OK] -- OUT: 0 [OK]
375-
IN: clean testsubdir/test3 '\''sq'\'',\$x.r $S3 [OK] -- OUT: $S3 . [OK]
375+
IN: clean testsubdir/test3 '\''sq'\'',\$x=.r $S3 [OK] -- OUT: $S3 . [OK]
376376
STOP
377377
EOF
378378
test_cmp_count expected.log rot13-filter.log &&
379379
380-
filter_git commit -m "test commit 2" &&
381-
cat >expected.log <<-EOF &&
382-
START
383-
init handshake complete
384-
IN: clean test.r $S [OK] -- OUT: $S . [OK]
385-
IN: clean test2.r $S2 [OK] -- OUT: $S2 . [OK]
386-
IN: clean test4-empty.r 0 [OK] -- OUT: 0 [OK]
387-
IN: clean testsubdir/test3 '\''sq'\'',\$x.r $S3 [OK] -- OUT: $S3 . [OK]
388-
IN: clean test.r $S [OK] -- OUT: $S . [OK]
389-
IN: clean test2.r $S2 [OK] -- OUT: $S2 . [OK]
390-
IN: clean test4-empty.r 0 [OK] -- OUT: 0 [OK]
391-
IN: clean testsubdir/test3 '\''sq'\'',\$x.r $S3 [OK] -- OUT: $S3 . [OK]
392-
STOP
393-
EOF
394-
test_cmp_count expected.log rot13-filter.log &&
395-
396-
rm -f test2.r "testsubdir/test3 '\''sq'\'',\$x.r" &&
380+
git commit -m "test commit 2" &&
381+
rm -f test2.r "testsubdir/test3 '\''sq'\'',\$x=.r" &&
397382
398383
filter_git checkout --quiet --no-progress . &&
399384
cat >expected.log <<-EOF &&
400385
START
401386
init handshake complete
402387
IN: smudge test2.r $S2 [OK] -- OUT: $S2 . [OK]
403-
IN: smudge testsubdir/test3 '\''sq'\'',\$x.r $S3 [OK] -- OUT: $S3 . [OK]
388+
IN: smudge testsubdir/test3 '\''sq'\'',\$x=.r $S3 [OK] -- OUT: $S3 . [OK]
404389
STOP
405390
EOF
406391
test_cmp_exclude_clean expected.log rot13-filter.log &&
@@ -421,14 +406,14 @@ test_expect_success PERL 'required process filter should filter data' '
421406
IN: smudge test.r $S [OK] -- OUT: $S . [OK]
422407
IN: smudge test2.r $S2 [OK] -- OUT: $S2 . [OK]
423408
IN: smudge test4-empty.r 0 [OK] -- OUT: 0 [OK]
424-
IN: smudge testsubdir/test3 '\''sq'\'',\$x.r $S3 [OK] -- OUT: $S3 . [OK]
409+
IN: smudge testsubdir/test3 '\''sq'\'',\$x=.r $S3 [OK] -- OUT: $S3 . [OK]
425410
STOP
426411
EOF
427412
test_cmp_exclude_clean expected.log rot13-filter.log &&
428413
429414
test_cmp_committed_rot13 "$TEST_ROOT/test.o" test.r &&
430415
test_cmp_committed_rot13 "$TEST_ROOT/test2.o" test2.r &&
431-
test_cmp_committed_rot13 "$TEST_ROOT/test3 '\''sq'\'',\$x.o" "testsubdir/test3 '\''sq'\'',\$x.r"
416+
test_cmp_committed_rot13 "$TEST_ROOT/test3 '\''sq'\'',\$x=.o" "testsubdir/test3 '\''sq'\'',\$x=.r"
432417
)
433418
'
434419

t/t0021/rot13-filter.pl

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,14 +109,18 @@ sub packet_flush {
109109
$debug->flush();
110110

111111
while (1) {
112-
my ($command) = packet_txt_read() =~ /^command=([^=]+)$/;
112+
my ($command) = packet_txt_read() =~ /^command=(.+)$/;
113113
print $debug "IN: $command";
114114
$debug->flush();
115115

116-
my ($pathname) = packet_txt_read() =~ /^pathname=([^=]+)$/;
116+
my ($pathname) = packet_txt_read() =~ /^pathname=(.+)$/;
117117
print $debug " $pathname";
118118
$debug->flush();
119119

120+
if ( $pathname eq "" ) {
121+
die "bad pathname '$pathname'";
122+
}
123+
120124
# Flush
121125
packet_bin_read();
122126

0 commit comments

Comments
 (0)