Junio C Hamano <gitster@xxxxxxxxx> 于2019年1月11日周五 上午5:11写道: > > Jiang Xin <worldhello.net@xxxxxxxxx> writes: > > > From: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> > > +create_commits() > > +{ > > Style (see Documentation/CodingGuidelines). OK, parenthese after function name. > > > +create_pack_1() > > +{ > > + P1=$(cd .git/objects/pack; printf "$T\n$A\n$B\n$C\n$D\n$E\n$F\n$R\n" | git pack-objects pack 2>/dev/null) && > > Yikes. Can't "git pack-objects" get the input directly without > overlong printf, something along the lines of... > > P1=$(git -C .git/objects/pack pack-objects pack <<-EOF > $A > $B > $C > ... > $R > EOF > ) Find that no space before <OID>, because git-pack-objects not allow that, and mached parentheses should in the same line. So Will write like this: create_pack_1() { P1=$(git -C .git/objects/pack pack-objects pack <<-EOF) && $T $A $B $R EOF eval P$P1=P1:$P1 } > > +test_expect_success 'no redundant packs' ' > > + create_pack_1 && create_pack_2 && create_pack_3 && > > + git pack-redundant --all >out && > > + test_must_be_empty out > > +' > > + > > +test_expect_success 'create pack 4, 5' ' > > + create_pack_4 && create_pack_5 > > +' > > + > > +cat >expected <<EOF > > +P2:$P2 > > +EOF > > Move this to the next "expect success" block? $P4 and $P5 are defined after calling `create_pack_4` and `create_pack_5`, so create pack functions should be called before write `expected` file, if puts $P4 and/or $P5 in the expected file. For this case, $P4 and $P5 not in expected file, we can move create_pack_4 and 5 to the following test_expect_success block, but the new algorithm may change the expected file. > > > +test_expect_success 'one of pack-2/pack-3 is redundant' ' > > + git pack-redundant --all >out && > > + sed -E -e "s#.*/pack-(.*)\.(idx|pack)#\1#" out | \ > > How portable is "sed -E" (it is not even in POSIX.1)? Wouldn't it > be easier to work with to have two "-e" fed to a single sed > invocation instead? will fix using two '-e' commands.