Signed-off-by: Fam Zheng <famz@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 <famz@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>"
+ exit 1
+fi
+
+submodules=$(git submodule foreach --recursive --quiet 'echo $name')
+
+if test -n "$submodules"; then
+ {
+ git ls-files
+ 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
--
2.13.5
Fam Zheng <famz@redhat.com> writes:
> Signed-off-by: Fam Zheng <famz@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 <famz@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?
> + 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?
> + 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
On Fri, 09/08 15:42, Alex Bennée wrote:
>
> Fam Zheng <famz@redhat.com> writes:
>
> > Signed-off-by: Fam Zheng <famz@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 <famz@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?
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
Fam Zheng <famz@redhat.com> writes:
> On Fri, 09/08 15:42, Alex Bennée wrote:
>>
>> Fam Zheng <famz@redhat.com> writes:
>>
>> > Signed-off-by: Fam Zheng <famz@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 <famz@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
On Mon, 09/11 14:43, Alex Bennée wrote:
>
> Fam Zheng <famz@redhat.com> writes:
>
> > On Fri, 09/08 15:42, Alex Bennée wrote:
> >>
> >> Fam Zheng <famz@redhat.com> writes:
> >>
> >> > Signed-off-by: Fam Zheng <famz@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 <famz@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
On 5 September 2017 at 03:11, Fam Zheng <famz@redhat.com> wrote: > Signed-off-by: Fam Zheng <famz@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 <famz@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. Why GPL-2-only? We generally prefer GPL-2-or-later for new files, or something more permissive. thanks -- PMM
On Fri, 09/08 15:56, Peter Maydell wrote: > On 5 September 2017 at 03:11, Fam Zheng <famz@redhat.com> wrote: > > Signed-off-by: Fam Zheng <famz@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 <famz@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. > > Why GPL-2-only? We generally prefer GPL-2-or-later for new > files, or something more permissive. Copied from some other script/* files, apparently. :) Will make it GPL-2-or-later. Fam
© 2016 - 2026 Red Hat, Inc.