summaryrefslogtreecommitdiffstats
path: root/scripts/archive-source.sh
diff options
context:
space:
mode:
authorMarc-André Lureau2019-07-08 22:02:49 +0200
committerAlex Bennée2019-07-23 16:53:25 +0200
commit84963b5bbfa0ef65bf09c774422643a61850aee8 (patch)
tree482e827fdba21383d33389e1e6e7b73fa9994860 /scripts/archive-source.sh
parentMerge remote-tracking branch 'remotes/amarkovic2/tags/mips-queue-jul-23-2019'... (diff)
downloadqemu-84963b5bbfa0ef65bf09c774422643a61850aee8.tar.gz
qemu-84963b5bbfa0ef65bf09c774422643a61850aee8.tar.xz
qemu-84963b5bbfa0ef65bf09c774422643a61850aee8.zip
archive-source: also create a stash for submodules
"git archive" fails when a submodule has a modification, because "git stash create" doesn't handle submodules. Let's teach our archive-source.sh to handle modifications in submodules the same way as qemu tree, by creating a stash. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20190708200250.12017-1-marcandre.lureau@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Diffstat (limited to 'scripts/archive-source.sh')
-rwxr-xr-xscripts/archive-source.sh18
1 files changed, 10 insertions, 8 deletions
diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh
index ca94e49978..fb5d6b3918 100755
--- a/scripts/archive-source.sh
+++ b/scripts/archive-source.sh
@@ -39,14 +39,16 @@ function cleanup() {
}
trap "cleanup" 0 1 2 3 15
-if git diff-index --quiet HEAD -- &>/dev/null
-then
- HEAD=HEAD
-else
- HEAD=$(git stash create)
-fi
+function tree_ish() {
+ local retval='HEAD'
+ if ! git diff-index --quiet --ignore-submodules=all HEAD -- &>/dev/null
+ then
+ retval=$(git stash create)
+ fi
+ echo "$retval"
+}
-git archive --format tar $HEAD > "$tar_file"
+git archive --format tar "$(tree_ish)" > "$tar_file"
test $? -ne 0 && error "failed to archive qemu"
for sm in $submodules; do
status="$(git submodule status "$sm")"
@@ -62,7 +64,7 @@ for sm in $submodules; do
echo "WARNING: submodule $sm is out of sync"
;;
esac
- (cd $sm; git archive --format tar --prefix "$sm/" $smhash) > "$sub_file"
+ (cd $sm; git archive --format tar --prefix "$sm/" $(tree_ish)) > "$sub_file"
test $? -ne 0 && error "failed to archive submodule $sm ($smhash)"
tar --concatenate --file "$tar_file" "$sub_file"
test $? -ne 0 && error "failed append submodule $sm to $tar_file"