зеркало из https://github.com/microsoft/git.git
Teach git-pull to pass -X<option> to git-merge
This needs the usual sq then eval trick to allow IFS characters in the option. Signed-off-by: Avery Pennarun <apenwarr@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
8cc5b29065
Коммит
ee2c79552a
17
git-pull.sh
17
git-pull.sh
|
@ -18,6 +18,7 @@ test -z "$(git ls-files -u)" ||
|
||||||
|
|
||||||
strategy_args= diffstat= no_commit= squash= no_ff= ff_only=
|
strategy_args= diffstat= no_commit= squash= no_ff= ff_only=
|
||||||
log_arg= verbosity=
|
log_arg= verbosity=
|
||||||
|
merge_args=
|
||||||
curr_branch=$(git symbolic-ref -q HEAD)
|
curr_branch=$(git symbolic-ref -q HEAD)
|
||||||
curr_branch_short=$(echo "$curr_branch" | sed "s|refs/heads/||")
|
curr_branch_short=$(echo "$curr_branch" | sed "s|refs/heads/||")
|
||||||
rebase=$(git config --bool branch.$curr_branch_short.rebase)
|
rebase=$(git config --bool branch.$curr_branch_short.rebase)
|
||||||
|
@ -62,6 +63,18 @@ do
|
||||||
esac
|
esac
|
||||||
strategy_args="${strategy_args}-s $strategy "
|
strategy_args="${strategy_args}-s $strategy "
|
||||||
;;
|
;;
|
||||||
|
-X*)
|
||||||
|
case "$#,$1" in
|
||||||
|
1,-X)
|
||||||
|
usage ;;
|
||||||
|
*,-X)
|
||||||
|
xx="-X $2"
|
||||||
|
shift ;;
|
||||||
|
*,*)
|
||||||
|
xx="$1" ;;
|
||||||
|
esac
|
||||||
|
merge_args="$merge_args$xx "
|
||||||
|
;;
|
||||||
-r|--r|--re|--reb|--reba|--rebas|--rebase)
|
-r|--r|--re|--reb|--reba|--rebas|--rebase)
|
||||||
rebase=true
|
rebase=true
|
||||||
;;
|
;;
|
||||||
|
@ -216,7 +229,7 @@ fi
|
||||||
|
|
||||||
merge_name=$(git fmt-merge-msg $log_arg <"$GIT_DIR/FETCH_HEAD") || exit
|
merge_name=$(git fmt-merge-msg $log_arg <"$GIT_DIR/FETCH_HEAD") || exit
|
||||||
test true = "$rebase" &&
|
test true = "$rebase" &&
|
||||||
exec git-rebase $diffstat $strategy_args --onto $merge_head \
|
exec git-rebase $diffstat $strategy_args $merge_args --onto $merge_head \
|
||||||
${oldremoteref:-$merge_head}
|
${oldremoteref:-$merge_head}
|
||||||
exec git-merge $diffstat $no_commit $squash $no_ff $ff_only $log_arg $strategy_args \
|
exec git-merge $diffstat $no_commit $squash $no_ff $ff_only $log_arg $strategy_args $merge_args \
|
||||||
"$merge_name" HEAD $merge_head $verbosity
|
"$merge_name" HEAD $merge_head $verbosity
|
||||||
|
|
|
@ -53,4 +53,12 @@ test_expect_success 'recursive favouring ours' '
|
||||||
! grep 1 file
|
! grep 1 file
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'pull with -X' '
|
||||||
|
git reset --hard master && git pull -s recursive -Xours . side &&
|
||||||
|
git reset --hard master && git pull -s recursive -X ours . side &&
|
||||||
|
git reset --hard master && git pull -s recursive -Xtheirs . side &&
|
||||||
|
git reset --hard master && git pull -s recursive -X theirs . side &&
|
||||||
|
git reset --hard master && ! git pull -s recursive -X bork . side
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Загрузка…
Ссылка в новой задаче