threads / discuss / 47519

Fwd: Unknown option for merge-recursive: -X'diff-algorithm=patience'

Subject: Fwd: Unknown option for merge-recursive: -X'diff-algorithm=patience'

## tl;dr

5 messages between Jan 1, 2018 and Jan 4, 2018.

replies: 4people: 3as markdown or json

Matwey V. Kornilov· Jan 1, 2018, 11:28 UTC · lore
Hello,

I am running git 2.15.1 and facing the following issue with linux kernel tree.

# git checkout v3.8 # git branch abc-3.8 # git checkout v3.9 # git branch abc-3.9 # git checkout abc-3.8

Introduce new commit on top of abc-3.8. Here, I edit README.

# vim README # git commit -a -v [abc-3.8 4bf088b5d341] Hello world

Then I try to rebase abc-3.9 on top of abc-3.8 as the following:

# git rebase --preserve-merges -s recursive -Xdiff-algorithm=patience --onto abc-3.8 v3.8 abc-3.9

And then I see:

fatal: Unknown option for merge-recursive: -X'diff-algorithm=patience' Error redoing merge e84cf5d0fd53badf3a93c790e280cc92a69ed999

Attached here is GIT_TRACE=1 output.
-- 
With best regards,
Matwey V. Kornilov
Matwey V. Kornilov· Jan 4, 2018, 12:34 UTC · re: Matwey V. Kornilov · lore

Re: Fwd: Unknown option for merge-recursive: -X'diff-algorithm=patience'

Hi,
It seems there is some issue with double escaping:

14:57:18.524010 git.c:344 trace: built-in: git 'merge' '--no-log' '--no-ff' '--strategy=recursive' '-X' ''\''diff-algorithm=p atience'\''' '-m' 'Merge branch '\''core-rcu-for-linus'\'' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Where did additional quotes around diff-algorithm came from?
01.01.2018 14:28, Matwey V. Kornilov пишет:
Show 29 quoted lines
> Hello,
> 
> I am running git 2.15.1 and facing the following issue with linux kernel
> tree.
> 
> # git checkout v3.8
> # git branch abc-3.8
> # git checkout v3.9
> # git branch abc-3.9
> # git checkout abc-3.8
> 
> Introduce new commit on top of abc-3.8. Here, I edit README.
> 
> # vim README
> # git commit -a -v
> [abc-3.8 4bf088b5d341] Hello world
> 
> Then I try to rebase abc-3.9 on top of abc-3.8 as the following:
> 
> # git rebase --preserve-merges -s recursive -Xdiff-algorithm=patience
> --onto abc-3.8 v3.8 abc-3.9
> 
> And then I see:
> 
> fatal: Unknown option for merge-recursive: -X'diff-algorithm=patience'
> Error redoing merge e84cf5d0fd53badf3a93c790e280cc92a69ed999
> 
> Attached here is GIT_TRACE=1 output.
> 
Junio C Hamano· Jan 4, 2018, 18:57 UTC · re: Matwey V. Kornilov · lore

Re: Fwd: Unknown option for merge-recursive: -X'diff-algorithm=patience'

"Matwey V. Kornilov" <matwey.kornilov@gmail.com> writes:
Show 8 quoted lines
> It seems there is some issue with double escaping:
> ...
>> # git rebase --preserve-merges -s recursive -Xdiff-algorithm=patience
>> --onto abc-3.8 v3.8 abc-3.9
>> 
>> And then I see:
>> 
>> fatal: Unknown option for merge-recursive: -X'diff-algorithm=patience'

The string looks like a result of a shell script that quotes any end-user controlled string before incorporating into a string to be eval-ed, or something like that. Is this a recent regression? Does a bit older version of Git, like 2.12 or older, behave differently?

Matwey V. Kornilov· Jan 4, 2018, 19:25 UTC · re: Junio C Hamano · lore

Re: Fwd: Unknown option for merge-recursive: -X'diff-algorithm=patience'

2018-01-04 21:57 GMT+03:00 Junio C Hamano <gitster@pobox.com>:
Show 16 quoted lines
> "Matwey V. Kornilov" <matwey.kornilov@gmail.com> writes:
>
>> It seems there is some issue with double escaping:
>> ...
>>> # git rebase --preserve-merges -s recursive -Xdiff-algorithm=patience
>>> --onto abc-3.8 v3.8 abc-3.9
>>>
>>> And then I see:
>>>
>>> fatal: Unknown option for merge-recursive: -X'diff-algorithm=patience'
>
> The string looks like a result of a shell script that quotes any
> end-user controlled string before incorporating into a string to be
> eval-ed, or something like that.  Is this a recent regression?  Does
> a bit older version of Git, like 2.12 or older, behave differently?
>

I've just checked, 2.12.4 has the same behaviour. By the way, can you reproduce this at all?

-- 
With best regards,
Matwey V. Kornilov
Johannes Schindelin· Jan 4, 2018, 21:02 UTC · re: Matwey V. Kornilov · lore

Re: Fwd: Unknown option for merge-recursive: -X'diff-algorithm=patience'

Hi Matwey,
On Mon, 1 Jan 2018, Matwey V. Kornilov wrote:
Show 28 quoted lines
> Hello,
> 
> I am running git 2.15.1 and facing the following issue with linux kernel
> tree.
> 
> # git checkout v3.8
> # git branch abc-3.8
> # git checkout v3.9
> # git branch abc-3.9
> # git checkout abc-3.8
> 
> Introduce new commit on top of abc-3.8. Here, I edit README.
> 
> # vim README
> # git commit -a -v
> [abc-3.8 4bf088b5d341] Hello world
> 
> Then I try to rebase abc-3.9 on top of abc-3.8 as the following:
> 
> # git rebase --preserve-merges -s recursive -Xdiff-algorithm=patience
> --onto abc-3.8 v3.8 abc-3.9
> 
> And then I see:
> 
> fatal: Unknown option for merge-recursive: -X'diff-algorithm=patience'
> Error redoing merge e84cf5d0fd53badf3a93c790e280cc92a69ed999
> 
> Attached here is GIT_TRACE=1 output.

Funnily enough, this had been reported on the Git for Windows bugtracker, and somebody even found the culprit:

https://github.com/git-for-windows/git/issues/1321#issuecomment-337279119
Sadly, I lost track of this. Will prepare a proper patch right now.

Ciao, Johannes

← back to recent threads