Unreliable 'git rebase --onto'
From: Eugeniu Rosca <hidden>
Date: 2020-01-08 21:44:05
Subsystem:
atmel maxtouch driver, input (keyboard, mouse, joystick, touchscreen) drivers, the rest · Maintainers:
Nick Dyer, Dmitry Torokhov, Linus Torvalds
Hello Git community, Below is a simple reproduction scenario for what looks to be a bug (?) in 'git rebase --onto' (v2.25.0-rc1-19-g042ed3e048af). I would appreciate your confirmation of the misbehavior. If the behavior is correct/expected, I would appreciate some feedback how to avoid it in future, since it occurs with the default parameters. 1. git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 2. ### Cherry pick an upstream commit, to contrast the results with 'git rebase --onto': $ git checkout -b v4.18-cherry-pick v4.18 $ git cherry-pick 463fa44eec2fef50 Auto-merging drivers/input/touchscreen/atmel_mxt_ts.c warning: inexact rename detection was skipped due to too many files. warning: you may want to set your merge.renamelimit variable to at least 7216 and retry the command. [v4.18-cherry-pick bd142b45bf3a] Input: atmel_mxt_ts - disable IRQ across suspend Author: Evan Green [off-list ref] Date: Wed Oct 2 14:00:21 2019 -0700 1 file changed, 4 insertions(+) 3. ### In spite of the warning, the result matches the original commit: $ vimdiff <(git show 463fa44eec2fef50) <(git show v4.18-cherry-pick) 4. ### Now, backport the same commit via 'git rebase --onto' $ git rebase --onto v4.18 463fa44eec2fef50~ 463fa44eec2fef50 First, rewinding head to replay your work on top of it... Applying: Input: atmel_mxt_ts - disable IRQ across suspend 5. ### The result is different: $ git branch v4.18-rebase-onto $ git diff v4.18-cherry-pick v4.18-rebase-onto
diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
index b45958e89cc5..2345b587662b 100644
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c@@ -3139,8 +3139,6 @@ static int __maybe_unused mxt_suspend(struct device *dev) mutex_unlock(&input_dev->mutex); - disable_irq(data->irq); - return 0; }
@@ -3162,6 +3160,8 @@ static int __maybe_unused mxt_resume(struct device *dev) mutex_unlock(&input_dev->mutex); + disable_irq(data->irq); + return 0; }
In a nutshell, purely from user's perspective: - I get a warning from 'git cherry pick', with perfect results - I get no warning from 'git rebase --onto', with wrong results Does git still behave expectedly? TIA! -- Best Regards, Eugeniu