Both of these emit the "is a merge but no -m option was given" when <commit> is a merge. I tried to track this down for a bit in the options parsing code but couldn't see where it was happening, but at some point we're setting opts->mainline to 0 both when it's not provided, and when it's explicitly provided as 0. Instead we should e.g. pass "no option" through as NULL to the sequencer, and emit some better error about how -m isn't zero-indexed.