Fam Zheng <f...@redhat.com> writes: > On Fri, 09/08 15:42, Alex Bennée wrote: >> >> Fam Zheng <f...@redhat.com> writes: >> >> > Signed-off-by: Fam Zheng <f...@redhat.com> >> > --- >> > scripts/archive-source.sh | 31 +++++++++++++++++++++++++++++++ >> > 1 file changed, 31 insertions(+) >> > create mode 100755 scripts/archive-source.sh >> > >> > diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh >> > new file mode 100755 >> > index 0000000000..3cae7f34d3 >> > --- /dev/null >> > +++ b/scripts/archive-source.sh >> > @@ -0,0 +1,31 @@ >> > +#!/bin/sh >> > +# >> > +# Author: Fam Zheng <f...@redhat.com> >> > +# >> > +# Create archive of source tree, including submodules >> > +# >> > +# This work is licensed under the terms of the GNU GPL, version 2. >> > +# See the COPYING file in the top-level directory. >> > + >> > +set -e >> > + >> > +if test $# -lt 1; then >> > + echo "Usage: $0 <output>" >> >> Maybe <output tarball> to make it clear what it creates? > > OK. > >> >> > + exit 1 >> > +fi >> > + >> > +submodules=$(git submodule foreach --recursive --quiet 'echo $name') >> > + >> > +if test -n "$submodules"; then >> > + { >> > + git ls-files >> >> Couldn't we do the main git ls-files first and then append the data for >> any submodules? > > Isn't that exactly what we are doing now?
I mean hoist the git ls-files out of the if so we can avoid repeating with an else leg. e.g. git ls-files > $1.list if test -n "$submodules"; then { .. the rest.. } | grep -x -v $(for sm in $submodules; do echo "-e $sm"; done) >> $1.list > > Fam > >> >> > + for sm in $submodules; do >> > + (cd $sm; git ls-files) | sed "s:^:$sm/:" >> > + done >> > + } | grep -x -v $(for sm in $submodules; do echo "-e $sm"; done) > >> > $1.list >> > +else >> > + git ls-files > $1.list >> > +fi >> > + >> > +tar -cf $1 -T $1.list >> > +rm $1.list >> >> >> -- >> Alex Bennée -- Alex Bennée