Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- revision.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/revision.c b/revision.c index 45cffcab44..b77face513 100644 --- a/revision.c +++ b/revision.c @@ -2157,6 +2157,49 @@ static int handle_refs_pseudo_opt(const char *submodule, static int handle_revision_pseudo_opt(const char *, struct rev_info *, int, const char **, int *); +static int handle_revision_pseudo_opt_after_decorate_reflog( + const char *submodule, struct rev_info *revs, + int argc, const char **argv, int *flags) +{ + struct all_refs_cb cb; + const char *optarg = NULL; + int argcount; + enum ref_selector selector; + + selector = parse_ref_selector_option(argc, argv, &optarg, &argcount); + + if (optarg) + init_all_refs_cb(&cb, revs, *flags); + + switch (selector) { + case REF_SELECT_ALL: + /* keep the info for load_ref_decorations() later */ + return 1; + + case REF_SELECT_BRANCHES: + /* keep the info for load_ref_decorations() later */ + return 1; + + case REF_SELECT_TAGS: + /* keep the info for load_ref_decorations() later */ + return 1; + + case REF_SELECT_REMOTES: + /* keep the info for load_ref_decorations() later */ + return 1; + + case REF_SELECT_BY_GLOB: + /* keep the info for load_ref_decorations() later */ + return 1; + + case REF_SELECT_NONE: + break; + } + + revs->handle_pseudo_opt = NULL; + return handle_revision_pseudo_opt(submodule, revs, argc, argv, flags); +} + static int handle_revision_pseudo_opt_after_exclude(const char *submodule, struct rev_info *revs, int argc, const char **argv, @@ -2200,6 +2243,9 @@ static int handle_revision_pseudo_opt(const char *submodule, add_ref_exclusion(&revs->ref_excludes, optarg); revs->handle_pseudo_opt = handle_revision_pseudo_opt_after_exclude; return argcount; + } else if ((argcount = parse_long_opt("decorate-reflog", argv, &optarg))) { + revs->handle_pseudo_opt = handle_revision_pseudo_opt_after_decorate_reflog; + return argcount; } else if (!strcmp(arg, "--reflog")) { add_reflogs_to_pending(revs, *flags); } else if (!strcmp(arg, "--indexed-objects")) { -- 2.11.0.157.gd943d85