scripts/kernel_bump: Use the git index to find the needed config files
authorOlliver Schinagl <oliver@schinagl.nl>
Mon, 18 Mar 2024 12:28:11 +0000 (13:28 +0100)
committerRobert Marko <robimarko@gmail.com>
Fri, 12 Apr 2024 16:20:53 +0000 (18:20 +0200)
The current solution using `find` introduces a racecondition, where `find`
and `git mv` get in each others way. While this could be fixed with
more-utils sponge command (or even sort -u) to buffer the output of
find.

However, a much better approach, is to query the git index directly,
which will not change, and is far more accurate.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
scripts/kernel_bump.sh

index d9fc5287dfccf017d1ce39ad72a3125d685cdb57..7ce3b6256f6e964f4db5bc95c6d0ec4c23c991e6 100755 (executable)
@@ -137,9 +137,15 @@ bump_kernel()
                done
        fi
 
-       find "${_target_dir}" -iname "config-${source_version}" | while read -r _config; do
-               _path="${_config%%"/config-${source_version}"}"
-               git mv "${_config}" "${_path}/config-${target_version}"
+       for _config in $(git ls-files "${_target_dir}" |
+                        sed -n "s|^\(.*config-${source_version}\).*|\1|p" |
+                        sort -u); do
+               if [ ! -e "${_config}" ]; then
+                       continue
+               fi
+
+               _subtarget="${_config%%"/config-${source_version}"}"
+               git mv "${_config}" "${_subtarget}/config-${target_version}"
        done
 
        git commit \