stash: convert list to builtin
authorPaul-Sebastian Ungureanu <ungureanupaulsebastian@gmail.com>
Mon, 25 Feb 2019 23:16:19 +0000 (23:16 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 7 Mar 2019 00:41:40 +0000 (09:41 +0900)
Add stash list to the helper and delete the list_stash function
from the shell script.

Signed-off-by: Paul-Sebastian Ungureanu <ungureanupaulsebastian@gmail.com>
Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/stash--helper.c
git-stash.sh
index 63e1e84e7882ce5752b2b48ff98c5ab20f3c249e..f2962245779419753c247e5beaa179db53f7e7f0 100644 (file)
@@ -12,6 +12,7 @@
 #include "rerere.h"
 
 static const char * const git_stash_helper_usage[] = {
+       N_("git stash--helper list [<options>]"),
        N_("git stash--helper drop [-q|--quiet] [<stash>]"),
        N_("git stash--helper ( pop | apply ) [--index] [-q|--quiet] [<stash>]"),
        N_("git stash--helper branch <branchname> [<stash>]"),
@@ -19,6 +20,11 @@ static const char * const git_stash_helper_usage[] = {
        NULL
 };
 
+static const char * const git_stash_helper_list_usage[] = {
+       N_("git stash--helper list [<options>]"),
+       NULL
+};
+
 static const char * const git_stash_helper_drop_usage[] = {
        N_("git stash--helper drop [-q|--quiet] [<stash>]"),
        NULL
@@ -615,6 +621,29 @@ static int branch_stash(int argc, const char **argv, const char *prefix)
        return ret;
 }
 
+static int list_stash(int argc, const char **argv, const char *prefix)
+{
+       struct child_process cp = CHILD_PROCESS_INIT;
+       struct option options[] = {
+               OPT_END()
+       };
+
+       argc = parse_options(argc, argv, prefix, options,
+                            git_stash_helper_list_usage,
+                            PARSE_OPT_KEEP_UNKNOWN);
+
+       if (!ref_exists(ref_stash))
+               return 0;
+
+       cp.git_cmd = 1;
+       argv_array_pushl(&cp.args, "log", "--format=%gd: %gs", "-g",
+                        "--first-parent", "-m", NULL);
+       argv_array_pushv(&cp.args, argv);
+       argv_array_push(&cp.args, ref_stash);
+       argv_array_push(&cp.args, "--");
+       return run_command(&cp);
+}
+
 int cmd_stash__helper(int argc, const char **argv, const char *prefix)
 {
        pid_t pid = getpid();
@@ -645,6 +674,8 @@ int cmd_stash__helper(int argc, const char **argv, const char *prefix)
                return !!pop_stash(argc, argv, prefix);
        else if (!strcmp(argv[0], "branch"))
                return !!branch_stash(argc, argv, prefix);
+       else if (!strcmp(argv[0], "list"))
+               return !!list_stash(argc, argv, prefix);
 
        usage_msg_opt(xstrfmt(_("unknown subcommand: %s"), argv[0]),
                      git_stash_helper_usage, options);
index 8a9f907aa929caa033fabfed2a22e563bfb7a270..ab3992b59d61b86ef6df696b3e4279b002bdc9ac 100755 (executable)
@@ -399,11 +399,6 @@ have_stash () {
        git rev-parse --verify --quiet $ref_stash >/dev/null
 }
 
-list_stash () {
-       have_stash || return 0
-       git log --format="%gd: %gs" -g --first-parent -m "$@" $ref_stash --
-}
-
 show_stash () {
        ALLOW_UNKNOWN_FLAGS=t
        assert_stash_like "$@"
@@ -591,7 +586,7 @@ test -n "$seen_non_option" || set "push" "$@"
 case "$1" in
 list)
        shift
-       list_stash "$@"
+       git stash--helper list "$@"
        ;;
 show)
        shift