diff options
author | Leah Rowe <leah@libreboot.org> | 2023-09-25 12:17:02 +0100 |
---|---|---|
committer | Leah Rowe <leah@libreboot.org> | 2023-09-25 12:21:23 +0100 |
commit | 81d073d5a193f2a07ca8efbb1a337a69c1c6d778 (patch) | |
tree | cdd09f636a674e7eb94f194d0fea7af6e9a596d5 | |
parent | eae173ec134809966cd962c1a3c0333583306a11 (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-x | include/git.sh | 14 | ||||
-rwxr-xr-x | script/update/project/repo | 7 | ||||
-rwxr-xr-x | script/update/project/trees | 10 |
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" |