feat(merge-git-remote): refactor remote fetch and merge logic for clarity and robustness

This commit is contained in:
Janik von Rotz committed 2026-06-10 12:03:54 +02:00
1 parent 0b68054f22
commit 9a75af656e
1 file changed
+17 -6
+17 -6
View File
@@ -16,7 +16,8 @@ merge-git-remote() {
key=$(echo "$line" | awk '{print $1}')
value=$(echo "$line" | awk '{print $2}')
remote_name="${key##remotes.$git_folder.}"
echo " Adding remote '$remote_name' -> $value"
echo "Adding remote '$remote_name' -> $value"
git -C "$git_folder" remote add "$remote_name" "$value" 2>/dev/null || \
git -C "$git_folder" remote set-url "$remote_name" "$value"
git -C "$git_folder" fetch -q "$remote_name"
@@ -35,17 +36,27 @@ merge-git-remote() {
git -C "$git_folder" fetch -q origin
fi
# Fetch the refs from remote
while IFS= read -r line; do
local key merge_ref remote_name tmp_ref
key=$(echo "$line" | awk '{print $1}')
merge_ref=$(echo "$line" | awk '{print $2}')
remote_name="${key##merge.$git_folder.}"
echo " Merging $remote_name/$merge_ref"
echo "Fetch ref $merge_ref from $remote_name"
git -C "$git_folder" fetch "$remote_name" "$merge_ref:$merge_ref"
done < <(git config -f .gitmodules --get-regexp "merge\.$git_folder\.")
# Merge refs into merge branch
while IFS= read -r line; do
local key merge_ref remote_name tmp_ref
key=$(echo "$line" | awk '{print $1}')
merge_ref=$(echo "$line" | awk '{print $2}')
remote_name="${key##merge.$git_folder.}"
echo "Merging ref $merge_ref"
tmp_ref="refs/merge-tmp/${remote_name}-$(echo "$merge_ref" | tr '/' '-')"
if ! git -C "$git_folder" fetch -q "$remote_name" "$merge_ref:$tmp_ref"; then
echo " !! Could not fetch $merge_ref from $remote_name — skipping"
continue
fi
if ! git -C "$git_folder" merge -q --no-edit "$tmp_ref"; then
echo " !! Merge conflict in $git_folder ($remote_name/$merge_ref) — resolve manually"
fi