I am unsure about this one for a few reasons.
- If you have:
topic~3--topic~2--topic~1--topic
/
MB--*--*--*--upstream and you do "not want to format all patches since the merge
base", instead of "format-patch --limit=topic~2 master topic",
you could just say "format-patch topic~2 topic", so this
feature seems unnecessary. Maybe I am not reading you right.
- Even if the idea of having limit makes sense, only one limit
can be specified, but you can have multiple (upstream,mine)
pairs. Your --limit applies the single limit to all of them.
I am not sure if that makes sense either.
I'd expect the limit value to be per (upstream,mine) pair,
making "# Now we have what we want in $@" for-loop to iterate
over (upstream,mine,limit) 3-tuples.
Internally an (upsteam,mine) pair is canonicalized to be a
single string "upstream..mine", so extending the canonical
syntax somehow, say, "upstream..mine..limit" where empty
"limit" means "use the merge base", might make sense. I
dunno.
- One thing that comes to mind is to deal with this structure:
topic~5--topic~4--topic~3--topic~2--topic~1--topic
/ /
Z--*--*--*--*--*--MB--*--*--*--upstream and you do want to include commits older than topic~3 because
they have not been picked up by the upstream. In such a
scenario, specifying commit Z as the "limit" may make sense.
It is not "limit", but is what ASCII drawing in git-cherry
calls "fork-point". Is that what you are doing (the commit
log suggests otherwise and you want to get less than what
merge base gives you)?