Browse Source

Merge branch 'ls/filter-process'

Doc update.

* ls/filter-process:
  t0021: fix flaky test
  docs: warn about possible '=' in clean/smudge filter process values
maint
Junio C Hamano 8 years ago
parent
commit
08721a056b
  1. 4
      Documentation/gitattributes.txt
  2. 8
      contrib/long-running-filter/example.pl
  3. 33
      t/t0021-conversion.sh
  4. 8
      t/t0021/rot13-filter.pl

4
Documentation/gitattributes.txt

@ -435,7 +435,9 @@ to filter relative to the repository root. Right after the flush packet @@ -435,7 +435,9 @@ to filter relative to the repository root. Right after the flush packet
Git sends the content split in zero or more pkt-line packets and a
flush packet to terminate content. Please note, that the filter
must not send any response before it received the content and the
final flush packet.
final flush packet. Also note that the "value" of a "key=value" pair
can contain the "=" character whereas the key would never contain
that character.
------------------------
packet: git> command=smudge
packet: git> pathname=path/testfile.dat

8
contrib/long-running-filter/example.pl

@ -81,8 +81,12 @@ packet_txt_write("capability=smudge"); @@ -81,8 +81,12 @@ packet_txt_write("capability=smudge");
packet_flush();

while (1) {
my ($command) = packet_txt_read() =~ /^command=([^=]+)$/;
my ($pathname) = packet_txt_read() =~ /^pathname=([^=]+)$/;
my ($command) = packet_txt_read() =~ /^command=(.+)$/;
my ($pathname) = packet_txt_read() =~ /^pathname=(.+)$/;

if ( $pathname eq "" ) {
die "bad pathname '$pathname'";
}

packet_bin_read();


33
t/t0021-conversion.sh

@ -93,7 +93,7 @@ test_expect_success setup ' @@ -93,7 +93,7 @@ test_expect_success setup '
git checkout -- test test.t test.i &&

echo "content-test2" >test2.o &&
echo "content-test3 - filename with special characters" >"test3 '\''sq'\'',\$x.o"
echo "content-test3 - filename with special characters" >"test3 '\''sq'\'',\$x=.o"
'

script='s/^\$Id: \([0-9a-f]*\) \$/\1/p'
@ -358,12 +358,12 @@ test_expect_success PERL 'required process filter should filter data' ' @@ -358,12 +358,12 @@ test_expect_success PERL 'required process filter should filter data' '
cp "$TEST_ROOT/test.o" test.r &&
cp "$TEST_ROOT/test2.o" test2.r &&
mkdir testsubdir &&
cp "$TEST_ROOT/test3 '\''sq'\'',\$x.o" "testsubdir/test3 '\''sq'\'',\$x.r" &&
cp "$TEST_ROOT/test3 '\''sq'\'',\$x=.o" "testsubdir/test3 '\''sq'\'',\$x=.r" &&
>test4-empty.r &&

S=$(file_size test.r) &&
S2=$(file_size test2.r) &&
S3=$(file_size "testsubdir/test3 '\''sq'\'',\$x.r") &&
S3=$(file_size "testsubdir/test3 '\''sq'\'',\$x=.r") &&

filter_git add . &&
cat >expected.log <<-EOF &&
@ -372,35 +372,20 @@ test_expect_success PERL 'required process filter should filter data' ' @@ -372,35 +372,20 @@ test_expect_success PERL 'required process filter should filter data' '
IN: clean test.r $S [OK] -- OUT: $S . [OK]
IN: clean test2.r $S2 [OK] -- OUT: $S2 . [OK]
IN: clean test4-empty.r 0 [OK] -- OUT: 0 [OK]
IN: clean testsubdir/test3 '\''sq'\'',\$x.r $S3 [OK] -- OUT: $S3 . [OK]
IN: clean testsubdir/test3 '\''sq'\'',\$x=.r $S3 [OK] -- OUT: $S3 . [OK]
STOP
EOF
test_cmp_count expected.log rot13-filter.log &&

filter_git commit -m "test commit 2" &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: clean test.r $S [OK] -- OUT: $S . [OK]
IN: clean test2.r $S2 [OK] -- OUT: $S2 . [OK]
IN: clean test4-empty.r 0 [OK] -- OUT: 0 [OK]
IN: clean testsubdir/test3 '\''sq'\'',\$x.r $S3 [OK] -- OUT: $S3 . [OK]
IN: clean test.r $S [OK] -- OUT: $S . [OK]
IN: clean test2.r $S2 [OK] -- OUT: $S2 . [OK]
IN: clean test4-empty.r 0 [OK] -- OUT: 0 [OK]
IN: clean testsubdir/test3 '\''sq'\'',\$x.r $S3 [OK] -- OUT: $S3 . [OK]
STOP
EOF
test_cmp_count expected.log rot13-filter.log &&

rm -f test2.r "testsubdir/test3 '\''sq'\'',\$x.r" &&
git commit -m "test commit 2" &&
rm -f test2.r "testsubdir/test3 '\''sq'\'',\$x=.r" &&

filter_git checkout --quiet --no-progress . &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: smudge test2.r $S2 [OK] -- OUT: $S2 . [OK]
IN: smudge testsubdir/test3 '\''sq'\'',\$x.r $S3 [OK] -- OUT: $S3 . [OK]
IN: smudge testsubdir/test3 '\''sq'\'',\$x=.r $S3 [OK] -- OUT: $S3 . [OK]
STOP
EOF
test_cmp_exclude_clean expected.log rot13-filter.log &&
@ -421,14 +406,14 @@ test_expect_success PERL 'required process filter should filter data' ' @@ -421,14 +406,14 @@ test_expect_success PERL 'required process filter should filter data' '
IN: smudge test.r $S [OK] -- OUT: $S . [OK]
IN: smudge test2.r $S2 [OK] -- OUT: $S2 . [OK]
IN: smudge test4-empty.r 0 [OK] -- OUT: 0 [OK]
IN: smudge testsubdir/test3 '\''sq'\'',\$x.r $S3 [OK] -- OUT: $S3 . [OK]
IN: smudge testsubdir/test3 '\''sq'\'',\$x=.r $S3 [OK] -- OUT: $S3 . [OK]
STOP
EOF
test_cmp_exclude_clean expected.log rot13-filter.log &&

test_cmp_committed_rot13 "$TEST_ROOT/test.o" test.r &&
test_cmp_committed_rot13 "$TEST_ROOT/test2.o" test2.r &&
test_cmp_committed_rot13 "$TEST_ROOT/test3 '\''sq'\'',\$x.o" "testsubdir/test3 '\''sq'\'',\$x.r"
test_cmp_committed_rot13 "$TEST_ROOT/test3 '\''sq'\'',\$x=.o" "testsubdir/test3 '\''sq'\'',\$x=.r"
)
'


8
t/t0021/rot13-filter.pl

@ -109,14 +109,18 @@ print $debug "init handshake complete\n"; @@ -109,14 +109,18 @@ print $debug "init handshake complete\n";
$debug->flush();

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

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

if ( $pathname eq "" ) {
die "bad pathname '$pathname'";
}

# Flush
packet_bin_read();


Loading…
Cancel
Save