Skip to content

Commit e3e9af5

Browse files
committed
Merge branch 'sb/maint-pull-rebase'
* sb/maint-pull-rebase: pull: support rebased upstream + fetch + pull --rebase t5520-pull: Test for rebased upstream + fetch + pull --rebase
2 parents 7d1b509 + d44e712 commit e3e9af5

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

git-pull.sh

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,18 @@ test true = "$rebase" && {
124124
git diff-index --ignore-submodules --cached --quiet HEAD -- ||
125125
die "refusing to pull with rebase: your working tree is not up-to-date"
126126

127+
oldremoteref= &&
127128
. git-parse-remote &&
128-
reflist="$(get_remote_merge_branch "$@" 2>/dev/null)" &&
129-
oldremoteref="$(git rev-parse -q --verify \
130-
"$reflist")"
129+
remoteref="$(get_remote_merge_branch "$@" 2>/dev/null)" &&
130+
oldremoteref="$(git rev-parse -q --verify "$remoteref")" &&
131+
for reflog in $(git rev-list -g $remoteref 2>/dev/null)
132+
do
133+
if test "$reflog" = "$(git merge-base $reflog $curr_branch)"
134+
then
135+
oldremoteref="$reflog"
136+
break
137+
fi
138+
done
131139
}
132140
orig_head=$(git rev-parse -q --verify HEAD)
133141
git fetch $verbosity --update-head-ok "$@" || exit 1

t/t5520-pull.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,19 @@ test_expect_success '--rebase with rebased default upstream' '
117117
118118
'
119119

120+
test_expect_success 'rebased upstream + fetch + pull --rebase' '
121+
122+
git update-ref refs/remotes/me/copy copy-orig &&
123+
git reset --hard to-rebase-orig &&
124+
git checkout --track -b to-rebase3 me/copy &&
125+
git reset --hard to-rebase-orig &&
126+
git fetch &&
127+
git pull --rebase &&
128+
test "conflicting modification" = "$(cat file)" &&
129+
test file = "$(cat file2)"
130+
131+
'
132+
120133
test_expect_success 'pull --rebase dies early with dirty working directory' '
121134
122135
git checkout to-rebase &&

0 commit comments

Comments
 (0)