Phillip Wood <phillip.wood123@xxxxxxxxx> writes: >> +static int is_range(const char *range) >> +{ >> + return !!strstr(range, ".."); >> +} > > If the user wrongly passes two arguments referring to single commits > with `:/<text>` or `@{/<text>}` where text contains ".." this will > give a false positive. True. I do not think this aims to be complete revision parser in the first place, though. It is tempting to at least idly speculate if an approach to run setup_revisions() on argument is_range() takes and checking the result would yield a more practical solution. I would imagine that we would want to see in the resulting revs.pending has at least one positive and one negative, and none of them have SYMMETRIC_LEFT set in their .flags word. Side note: Strictly speaking, people could wish "rev" to mean "everything reachable from the rev, down to root", so requiring one negative may technically be a wrong thing, but in the context of "range-diff", I am not sure how useful such a behaviour would be.