cef/cherry-pick.sh
Asahi Lina 91dd791eda cherry-pick.sh: Handle empty better
[skip changelog]
2025-10-29 15:28:29 +09:00

69 lines
2 KiB
Bash
Executable file

#!/bin/sh
set -e
if ! [ -z "$(git status --untracked-files=no --porcelain)" ]; then
git status
echo
echo "Working directory not clean."
exit 1
fi
head="$(git rev-parse HEAD)"
list=""
for arg in "$@"; do
if [ $(git rev-parse "$arg" | wc -l) == "1" ]; then
list="$list $(git rev-parse "$arg")"
else
list="$list $(git rev-list --reverse $(git rev-parse "$@"))"
fi
done
for commit in $list; do
echo "Cherry pick: $commit"
git branch -f _rewrite $commit
FILTER_BRANCH_SQUELCH_WARNING=1 \
git filter-branch -f \
--tree-filter "mv chromium.spec cef.spec;
sed -i -e '/%changelog/,//d' \
-e '/^Version:/d' \
-e '/^Release:/d' \
cef.spec;
rm -f chromium.conf chromium-browser.sh chromium-browser.desktop sources
" \
'_rewrite~2.._rewrite'
ver=$(git show $commit:chromium.spec | grep '^Version' | cut -d: -f2 | tr -d " " | sed 's/\./ /g')
src_chromium="$(git show $commit:sources | grep chromium)"
src_node="$(git show $commit:sources | grep node)"
echo " Chromium version: $ver"
set -- $ver
set +e
git cherry-pick --allow-empty --empty=keep _rewrite
ret=$?
echo "Ret: $ret"
set -e
sed -i \
-e "s/^%global chromium_major .*/%global chromium_major $1/" \
-e "s/^%global chromium_branch .*/%global chromium_branch $3/" \
-e "s/^%global chromium_minor .*/%global chromium_minor $4/" \
cef.spec
sed -i \
-e "s/.*chromium.*/$src_chromium/" \
-e "s/.*node.*/$src_node/" \
sources
if [ "$ret" = 0 ]; then
git add cef.spec sources
git commit --amend --allow-empty
parent=$(git rev-parse 'HEAD^1^{tree}')
new=$(git rev-parse 'HEAD^{tree}')
if [ "$new" = "$parent" ]; then
echo "Skipping commit $commit (empty after processing)"
git reset --hard HEAD\^
continue
fi
else
git status
exit $ret
fi
done