summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2023-09-25 12:17:02 +0100
committerLeah Rowe <leah@libreboot.org>2023-09-25 12:21:23 +0100
commit81d073d5a193f2a07ca8efbb1a337a69c1c6d778 (patch)
treecdd09f636a674e7eb94f194d0fea7af6e9a596d5
parenteae173ec134809966cd962c1a3c0333583306a11 (diff)
update/project/*: unified git reset handling
With this change, lbmk now also updates submodules on simple git clones, not just multi-tree clones. This is OK, because git does not return non-zero status when git submodule update is ran, where git submodules are not actually defined. Signed-off-by: Leah Rowe <leah@libreboot.org>
-rwxr-xr-xinclude/git.sh14
-rwxr-xr-xscript/update/project/repo7
-rwxr-xr-xscript/update/project/trees10
3 files changed, 19 insertions, 12 deletions
diff --git a/include/git.sh b/include/git.sh
index 9a48023d..1ad84d11 100755
--- a/include/git.sh
+++ b/include/git.sh
@@ -1,6 +1,20 @@
# SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2023 Leah Rowe <leah@libreboot.org>
+git_reset_rev()
+{
+ sdir="${1}"
+ _rev="${2}"
+ _fail="${3}"
+ (
+ cd "${sdir}" || "${_fail}" "cannot cd to ${sdir}"
+ git reset --hard ${_rev} || \
+ "${_fail}" "cannot git reset ${sdir} <- ${rev}"
+ git submodule update --init --checkout || \
+ "${_fail}" "cannot update git modules <- ${sdir}"
+ )
+}
+
git_am_patches()
{
sdir="${1}" # assumed to be absolute path
diff --git a/script/update/project/repo b/script/update/project/repo
index d6eb3130..7e65ef29 100755
--- a/script/update/project/repo
+++ b/script/update/project/repo
@@ -79,11 +79,8 @@ clone_project()
git clone ${url} "${tmp_dir}" || git clone ${bkup_url} "${tmp_dir}" || \
fail "clone_project: could not download ${name}"
- (
- cd "${tmp_dir}" || fail "clone_project: tmpdir not created"
- git reset --hard ${revision} || \
- fail "clone_project: Cannot reset revision"
- )
+ git_reset_rev "${tmp_dir}" "${revision}" "fail" || \
+ fail "clone_project ${location}/: cannot reset <- ${revision}"
git_am_patches "${tmp_dir}" "${PWD}/config/${name}/patches" "fail" || \
fail "clone_project ${location}/: cannot apply patches"
diff --git a/script/update/project/trees b/script/update/project/trees
index 27418f19..af8e4ed0 100755
--- a/script/update/project/trees
+++ b/script/update/project/trees
@@ -143,13 +143,9 @@ prepare_new_tree()
cp -R "${project}/${project}" "${project}/${tree}" || \
err "${project}/${tree}: cannot copy source tree"
- (
- cd "${project}/${tree}" || err "cannot cd to ${project}/${tree}"
- git reset --hard ${rev} || \
- err "cannot reset ${project} revision for tree, ${tree}"
- git submodule update --init --checkout || \
- err "cannot update ${project} submodules for tree, ${tree}"
- )
+ git_reset_rev "${project}/${tree}" "${rev}" "err" || \
+ err "prepare_new_trees ${project}/${tree}: cannot reset <- ${rev}"
+
git_am_patches "${PWD}/${project}/${tree}" \
"${PWD}/${cfgsdir}/${tree}/patches" "err" || \
err "prepare_new_trees ${project}/${tree}: cannot apply patches"