On Mon, 09/11 14:43, Alex Bennée wrote: > > 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
The output of top "git ls-files" has to be filtered by grep if the submodules list is non-empty, so we cannot save LoC by hoisting. Fam > 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