Unreliable 'git rebase --onto'
- From
- Eugeniu Rosca <erosca@de.adit-jv.com>
- Date
- Jan 8, 2020, 21:43 UTC
- Message-ID
- <20200108214349.GA17624@lxhi-065.adit-jv.com>
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 <evgreen@chromium.org>
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