Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- revision.c | 11 ++++++++--- revision.h | 4 ++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/revision.c b/revision.c index 6ebd38d1c8..cda2606c66 100644 --- a/revision.c +++ b/revision.c @@ -2273,10 +2273,15 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s const char *arg = argv[i]; if (*arg == '-') { int opts; + handle_pseudo_opt_cb handle_pseudo_opt = + handle_revision_pseudo_opt; - opts = handle_revision_pseudo_opt(submodule, - revs, argc - i, argv + i, - &flags); + if (revs->handle_pseudo_opt) + handle_pseudo_opt = revs->handle_pseudo_opt; + + opts = handle_pseudo_opt(submodule, + revs, argc - i, argv + i, + &flags); if (opts > 0) { i += opts - 1; continue; diff --git a/revision.h b/revision.h index 9fac1a607d..9080eaf381 100644 --- a/revision.h +++ b/revision.h @@ -52,6 +52,8 @@ struct rev_cmdline_info { #define REVISION_WALK_NO_WALK_SORTED 1 #define REVISION_WALK_NO_WALK_UNSORTED 2 +typedef int (*handle_pseudo_opt_cb)(const char *, struct rev_info *, int, const char **, int *); + struct rev_info { /* Starting list */ struct commit_list *commits; @@ -213,6 +215,8 @@ struct rev_info { struct commit_list *previous_parents; const char *break_bar; + + handle_pseudo_opt_cb handle_pseudo_opt; }; extern int ref_excluded(struct string_list *, const char *path); -- 2.11.0.157.gd943d85