diff options
author | Jeff King <peff@peff.net> | 2017-07-07 05:07:16 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-07-07 10:04:53 -0700 |
commit | 82fd0f4a4b2c394ddba279eab7072fe87b750d2e (patch) | |
tree | dbbf242d07813060d816cc14a661b7bb1f50c075 | |
parent | t1414: document some reflog-walk oddities (diff) | |
download | tgif-82fd0f4a4b2c394ddba279eab7072fe87b750d2e.tar.xz |
revision: disallow reflog walking with revs->limited
The reflog-walk code doesn't work with limit_list(). That
function traverses down the real history graph, not the fake
reflog history that get_revision() returns. So it's not
going to actually examine all of the commits we're going to
show, because we'd add them to the pending list only during
the actual traversal.
In practice this limitation doesn't really matter, because
the options that require list-limiting generally need
UNINTERESTING endpoints or symmetric ranges, which already
are forbidden for reflog walks. Still, there are likely some
corner cases that would behave oddly. We're better off to
warn the user that we can't fulfill their request than to
generate potentially wrong output.
This will also make it easier to refactor the reflog-walking
code, because it eliminates a whole area of corner cases
we'd have to consider (that already don't work anyway).
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | revision.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/revision.c b/revision.c index e181ad1b70..6678de04d9 100644 --- a/revision.c +++ b/revision.c @@ -2366,6 +2366,8 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s if (revs->reverse && revs->reflog_info) die("cannot combine --reverse with --walk-reflogs"); + if (revs->reflog_info && revs->limited) + die("cannot combine --walk-reflogs with history-limiting options"); if (revs->rewrite_parents && revs->children.name) die("cannot combine --parents and --children"); |