uproject update fait fetch puis merge, manuellement

This commit is contained in:
Jephte CLAIN 2015-05-21 15:09:21 +04:00
parent 53c79b3b8a
commit b004730595
1 changed files with 31 additions and 15 deletions

View File

@ -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() {