feat(git-folder): add merge support and improve remote handling with new scripts and config management
This commit is contained in:
4 files changed
+77
-16
No files matched your search
+5
-8
@@ -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
|
||||
}
|
||||
Executable
+22
@@ -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
@@ -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"
|
||||
}
|
||||
Executable
+37
@@ -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
|
||||
}
|
||||
Reference in new issue
Block a user