uproject update fait fetch puis merge, manuellement
This commit is contained in:
parent
53c79b3b8a
commit
b004730595
46
lib/ulib/vcs
46
lib/ulib/vcs
|
@ -451,26 +451,42 @@ function git_update() {
|
|||
return 1
|
||||
}
|
||||
|
||||
git pull "$@" || return
|
||||
if [ -n "$autoff" ]; then
|
||||
local orig_branch restore_branch rbranch
|
||||
local -a branches
|
||||
git_check_cleancheckout || return 0
|
||||
orig_branch="$(git_get_branch)"
|
||||
array_from_lines branches "$(git_list_branches)"
|
||||
for branch in "${branches[@]}"; do
|
||||
remote="$(git_get_branch_remote "$branch")"
|
||||
rbranch="$(git_get_branch_rbranch "$branch" "$remote")"
|
||||
[ -n "$remote" -a -n "$rbranch" ] || continue
|
||||
if [ -z "$autoff" ]; then
|
||||
git pull "$@"
|
||||
return $?
|
||||
fi
|
||||
|
||||
local orig_branch restore_branch remote rbranch pbranch
|
||||
local -a branches
|
||||
|
||||
git fetch -p "$@" || return
|
||||
|
||||
git_check_cleancheckout || return 0
|
||||
orig_branch="$(git_get_branch)"
|
||||
array_from_lines branches "$(git_list_branches)"
|
||||
for branch in "${branches[@]}"; do
|
||||
remote="$(git_get_branch_remote "$branch")"
|
||||
rbranch="$(git_get_branch_rbranch "$branch" "$remote")"
|
||||
pbranch="${rbranch#refs/remotes/}"
|
||||
[ -n "$remote" -a -n "$rbranch" ] || continue
|
||||
if git_is_ancestor "$branch" "$rbranch"; then
|
||||
if git_should_ff "$branch" "$rbranch"; then
|
||||
echo "Fast-forwarding $branch..."
|
||||
echo "* Fast-forwarding $branch -> $pbranch"
|
||||
git checkout -q "$branch"
|
||||
git merge -q --ff-only "$rbranch"
|
||||
restore_branch=1
|
||||
fi
|
||||
done
|
||||
[ -n "$restore_branch" ] && git checkout -q "$orig_branch"
|
||||
fi
|
||||
else
|
||||
if [ "$branch" == "$orig_branch" ]; then
|
||||
echo "* Cannot fast-forward CURRENT branch $branch from $pbranch
|
||||
Try to merge manually with: git merge $pbranch"
|
||||
else
|
||||
echo "* Cannot fast-forward local branch $branch from $pbranch
|
||||
You can merge manually with: git checkout $branch; git merge $pbranch"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
[ -n "$restore_branch" ] && git checkout -q "$orig_branch"
|
||||
return 0
|
||||
}
|
||||
function git_push() {
|
||||
|
|
Loading…
Reference in New Issue