summaryrefslogtreecommitdiff
path: root/t/t3200-branch.sh
diff options
context:
space:
mode:
authorLibravatar Elijah Newren <newren@gmail.com>2021-07-22 05:04:46 +0000
committerLibravatar Junio C Hamano <gitster@pobox.com>2021-07-22 11:54:29 -0700
commite4dc25ed49d94c93b1d3f63efe17f32ca682cab7 (patch)
tree238b7420ec798dce9d4e92c64e72a24c17811dd1 /t/t3200-branch.sh
parentpull: abort if --ff-only is given and fast-forwarding is impossible (diff)
downloadtgif-e4dc25ed49d94c93b1d3f63efe17f32ca682cab7.tar.xz
pull: since --ff-only overrides, handle it first
There are both merge and rebase branches in the logic, and previously both had to handle fast-forwarding. Merge handled that implicitly (because git merge handles it directly), while in rebase it was explicit. Given that the --ff-only flag is meant to override any --rebase or --no-rebase, make the code reflect that by handling --ff-only before the merge-vs-rebase logic. It turns out that this also fixes a bug for submodules. Previously, when --ff-only was given, the code would run `merge --ff-only` on the main module, and then run `submodule update --recursive --rebase` on the submodules. With this change, we still run `merge --ff-only` on the main module, but now run `submodule update --recursive --checkout` on the submodules. I believe this better reflects the intent of --ff-only to have it apply to both the main module and the submodules. (Sidenote: It is somewhat interesting that all merges pass `--checkout` to submodule update, even when `--no-ff` is specified, meaning that it will only do fast-forward merges for submodules. This was discussed in commit a6d7eb2c7a ("pull: optionally rebase submodules (remote submodule changes only)", 2017-06-23). The same limitations apply now as then, so we are not trying to fix this at this time.) Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t3200-branch.sh')
0 files changed, 0 insertions, 0 deletions