summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2020-02-19 11:46:35 +0100
committerErich Eckner <git@eckner.net>2020-02-19 11:46:35 +0100
commit8f4b488a86a974b7b1c723d219d894d5b78bad5f (patch)
tree58ab3d152f77e8122520482673f33fc39c53f34f
parent54eef2cff28c8fae3ad93e6f271d7eb15cd320a1 (diff)
downloadarchlinuxewe.git.save-8f4b488a86a974b7b1c723d219d894d5b78bad5f.tar.xz
update-submodule: archive should not contain git repos of submodules
-rwxr-xr-xarchPackagesUpdate20
-rwxr-xr-xupdate-submodule13
2 files changed, 31 insertions, 2 deletions
diff --git a/archPackagesUpdate b/archPackagesUpdate
index bb59c67c..eec2fafb 100755
--- a/archPackagesUpdate
+++ b/archPackagesUpdate
@@ -214,6 +214,26 @@ echo '... done'
# extract git ${branch}
git -C "${pkgSrcDir}" archive --format tar "${branch}" | \
tar -x -C "${tmpDir}" -f -
+git -C "${pkgSrcDir}" diff '6dc373759d940181bcb2a742f1f37548a7c1cacc' "${branch}" -- $(
+ sed '
+ s/^\[submodule "\([^"[:space:]]\+\)"\]$/\1/
+ t
+ d
+ ' "${tmpDir}/.gitmodules"
+) \
+| sed '
+ /^+++ b/ {
+ N
+ N
+ s#^+++ b/\(\S\+\)\n@@ -0,0 +1 @@\n+Subproject commit \([0-9a-f]\{40\}\)$#\1 \2#
+ t
+ }
+ d
+' \
+| while read -r module commit; do
+ rmdir "${tmpDir}/${module}"
+ echo "${commit}" >"${tmpDir}/${module}"
+done
cd "${tmpDir}"
diff --git a/update-submodule b/update-submodule
index 101994cc..b47bd791 100755
--- a/update-submodule
+++ b/update-submodule
@@ -6,10 +6,18 @@ url="$3"
path="${url%% *}"
url="${url#${path} }"
-if [ -n "$(ls -A "${path}")" ]; then
+if [ -d "${path}" ] && [ -n "$(ls -A "${path}")" ]; then
git -C "${pkgSrcDir}" submodule update 2>/dev/null || true
exit
fi
+
+if [ ! -f "${path}" ]; then
+ >&2 echo 'update-submodule needs a commit'
+ exit 1
+fi
+
+commit=$(cat "${path}")
+rm "${path}"
mkdir -p "${path}"
if [ -d "${submoduleDir}" ]; then
upstream="${submoduleDir}/${path}"
@@ -20,4 +28,5 @@ else
upstream="${pkgSrcDir}/${path}"
fi
git -C "${upstream}" pull -q --ff-only
-git clone -q "${upstream}" "${path}"
+git -C "${upstream}" archive "${commit}" \
+| tar -C "${path}" -x