There is a change in behaviour with this commit. When there was no initial commit, the shell version of stash would still display a message. This commit makes `push` to not display any message if `--quiet` or `-q` is specified. --- builtin/stash--helper.c | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/builtin/stash--helper.c b/builtin/stash--helper.c index c26cad3d5..4fd79532c 100644 --- a/builtin/stash--helper.c +++ b/builtin/stash--helper.c @@ -1079,7 +1079,7 @@ static int stash_working_tree(struct stash_info *info, static int do_create_stash(int argc, const char **argv, const char *prefix, const char **stash_msg, int include_untracked, - int patch_mode, struct stash_info *info) + int patch_mode, struct stash_info *info, int quiet) { int untracked_commit_option = 0; int ret = 0; @@ -1105,7 +1105,8 @@ static int do_create_stash(int argc, const char **argv, const char *prefix, } if (get_oid("HEAD", &info->b_commit)) { - fprintf_ln(stderr, "You do not have the initial commit yet"); + if (!quiet) + fprintf_ln(stderr, "You do not have the initial commit yet"); ret = -1; goto done; } else { @@ -1127,7 +1128,8 @@ static int do_create_stash(int argc, const char **argv, const char *prefix, if (write_cache_as_tree(&info->i_tree, 0, NULL) || commit_tree(commit_tree_label.buf, commit_tree_label.len, &info->i_tree, parents, &info->i_commit, NULL, NULL)) { - fprintf_ln(stderr, "Cannot save the current index state"); + if (!quiet) + fprintf_ln(stderr, "Cannot save the current index state"); ret = -1; goto done; } @@ -1135,7 +1137,8 @@ static int do_create_stash(int argc, const char **argv, const char *prefix, if (include_untracked && get_untracked_files(argv, 1, include_untracked, &out)) { if (save_untracked_files(info, &msg, &out)) { - printf_ln("Cannot save the untracked files"); + if (!quiet) + printf_ln("Cannot save the untracked files"); ret = -1; goto done; } @@ -1144,14 +1147,16 @@ static int do_create_stash(int argc, const char **argv, const char *prefix, if (patch_mode) { ret = stash_patch(info, argv); if (ret < 0) { - printf_ln("Cannot save the current worktree state"); + if (!quiet) + printf_ln("Cannot save the current worktree state"); goto done; } else if (ret > 0) { goto done; } } else { if (stash_working_tree(info, argv, prefix)) { - printf_ln("Cannot save the current worktree state"); + if (!quiet) + printf_ln("Cannot save the current worktree state"); ret = -1; goto done; } @@ -1176,7 +1181,8 @@ static int do_create_stash(int argc, const char **argv, const char *prefix, if (commit_tree(*stash_msg, strlen(*stash_msg), &info->w_tree, parents, &info->w_commit, NULL, NULL)) { - printf_ln("Cannot record working tree state"); + if (!quiet) + printf_ln("Cannot record working tree state"); ret = -1; goto done; } @@ -1208,7 +1214,7 @@ static int create_stash(int argc, const char **argv, const char *prefix) 0); ret = do_create_stash(argc, argv, prefix, &stash_msg, - include_untracked, 0, &info); + include_untracked, 0, &info, 0); if (!ret) printf_ln("%s", oid_to_hex(&info.w_commit)); @@ -1261,25 +1267,31 @@ static int do_push_stash(int argc, const char **argv, const char *prefix, return -1; if (!check_changes(argv, include_untracked, prefix)) { - fprintf_ln(stdout, "No local changes to save"); + if (!quiet) + fprintf_ln(stdout, "No local changes to save"); return 0; } if (!reflog_exists(ref_stash) && do_clear_stash()) { - fprintf_ln(stderr, "Cannot initialize stash"); + if (!quiet) + fprintf_ln(stderr, "Cannot initialize stash"); return -1; } if ((ret = do_create_stash(argc, argv, prefix, &stash_msg, - include_untracked, patch_mode, &info))) + include_untracked, patch_mode, &info, + quiet))) return ret; if (do_store_stash(oid_to_hex(&info.w_commit), stash_msg, 1)) { - fprintf(stderr, "Cannot save the current status"); + if (!quiet) + fprintf_ln(stderr, "Cannot save the current status"); return -1; } - fprintf(stdout, "Saved working directory and index state %s", stash_msg); + if (!quiet) + fprintf(stdout, "Saved working directory and index state %s", + stash_msg); if (!patch_mode) { if (include_untracked && ps.nr == 0) { @@ -1367,7 +1379,8 @@ static int do_push_stash(int argc, const char **argv, const char *prefix, argv_array_pushl(&cp.args, "apply", "-R", NULL); if (pipe_command(&cp, patch.buf, patch.len, NULL, 0, NULL, 0)) { - fprintf_ln(stderr, "Cannot remove worktree changes"); + if (!quiet) + fprintf_ln(stderr, "Cannot remove worktree changes"); return -1; } -- 2.18.0.573.g56500d98f