feat(git-folder): add merge support and improve remote handling with new scripts and config management

This commit is contained in:
Janik von Rotz committed 2026-04-27 11:30:29 +02:00
1 parent 326ee9a3c0
commit 383383fbfb
4 files changed
+77 -16

No files matched your search

+5 -8
View File
@@ -20,13 +20,10 @@ add-git-folder() {
# Ensure branch is Odoo version
git -C "$3" switch "$1"
# Save version
save-version
# Restore staged submodule files
git restore --staged .gitmodules "$3"
# Remove from working tree
# rm -rf .git/modules/"$2" || true
# git rm --cached "$2" || true
rm -rf .git/modules/"$2" || true
git rm --cached "$2" || true
# Save version
save-git-folder
}
+22
View File
@@ -0,0 +1,22 @@
#!/bin/bash
add-git-merge() {
if [[ -z "$1" ]]; then
echo '$1/remote is empty.' >&2
exit 1
fi
if [[ -z "$2" ]]; then
echo '$2/merge is empty.' >&2
exit 1
fi
if [[ -z "$3" ]]; then
echo '$3/path is empty.' >&2
exit 1
fi
local remote_name="$1"
local merge_ref="$2"
local submodule_path="$3"
git config -f .gitmodules --add merge."$submodule_path"."$remote_name" "$merge_ref"
}
+13 -8
View File
@@ -2,18 +2,23 @@
add-git-remote() {
if [[ -z "$1" ]]; then
echo '$1/remote is empty.'
exit
echo '$1/remote is empty.' >&2
exit 1
fi
if [[ -z "$2" ]]; then
echo '$2/url is empty.'
exit
echo '$2/url is empty.' >&2
exit 1
fi
if [[ -z "$3" ]]; then
echo '$3/path is empty.'
exit
echo '$3/path is empty.' >&2
exit 1
fi
echo "Add remote $1 with url $2 to $3:"
git -C "$3" remote add "$1" "$2"
local remote_name="$1"
local remote_url="$2"
local submodule_path="$3"
git -C "$submodule_path" remote add "$remote_name" "$remote_url" 2>/dev/null || true
git config -f .gitmodules --add remotes."$submodule_path"."$remote_name" "$remote_url"
}
+37
View File
@@ -0,0 +1,37 @@
#!/bin/bash
merge-git-remote() {
local git_folders=$(ls-git-folder .)
for git_folder in $git_folders; do
git_folder="${git_folder#./}"
local remote_names
remote_names=$(git config -f .gitmodules --get-regexp "remotes\.$git_folder\..*" | sed 's/.*\.\(.*\)$/\1/')
if [[ -z "$remote_names" ]]; then
continue
fi
for remote_name in $remote_names; do
local remote_url=$(git config -f .gitmodules remotes."$git_folder"."$remote_name")
if [[ -z "$remote_url" ]]; then
continue
fi
git -C "$git_folder" remote add "$remote_name" "$remote_url" 2>/dev/null || true
local merge_ref=$(git config -f .gitmodules merge."$git_folder"."$remote_name")
if [[ -z "$merge_ref" ]]; then
merge_ref="HEAD"
fi
git -C "$git_folder" fetch "$remote_name"
git -C "$git_folder" checkout -B merged "$remote_name/$merge_ref" 2>/dev/null || \
git -C "$git_folder" checkout -b merged "$remote_name/$merge_ref"
git -C "$git_folder" merge "$remote_name/$merge_ref" 2>/dev/null || true
done
done
}