mirror of
https://github.com/git/git.git
synced 2024-11-25 10:54:00 +08:00
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:
parent
8cc5b29065
commit
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=
|
||||
log_arg= verbosity=
|
||||
merge_args=
|
||||
curr_branch=$(git symbolic-ref -q HEAD)
|
||||
curr_branch_short=$(echo "$curr_branch" | sed "s|refs/heads/||")
|
||||
rebase=$(git config --bool branch.$curr_branch_short.rebase)
|
||||
@ -62,6 +63,18 @@ do
|
||||
esac
|
||||
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)
|
||||
rebase=true
|
||||
;;
|
||||
@ -216,7 +229,7 @@ fi
|
||||
|
||||
merge_name=$(git fmt-merge-msg $log_arg <"$GIT_DIR/FETCH_HEAD") || exit
|
||||
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}
|
||||
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
|
||||
|
@ -53,4 +53,12 @@ test_expect_success 'recursive favouring ours' '
|
||||
! 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
|
||||
|
Loading…
Reference in New Issue
Block a user