From: Paul Sebastian Ungureanu <ungureanupaulsebastian@gmail.com>
To: Thomas Gummerer <t.gummerer@gmail.com>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Re: [GSoC][PATCH v7 15/26] stash: convert create to builtin
Date: Sat, 18 Aug 2018 18:39:08 +0300 [thread overview]
Message-ID: <CADzBBBaO3em0kcebL5kiE1JxSEsea2OFrzyRUgfEDjrwV6fxsw@mail.gmail.com> (raw)
In-Reply-To: <20180815221305.GQ2734@hank.intra.tgummerer.com>
On Thu, Aug 16, 2018 at 1:13 AM, Thomas Gummerer <t.gummerer@gmail.com> wrote:
> On 08/08, Paul-Sebastian Ungureanu wrote:
>> Add stash create to the helper.
>>
>> Signed-off-by: Paul-Sebastian Ungureanu <ungureanupaulsebastian@gmail.com>
>> ---
>> builtin/stash--helper.c | 406 ++++++++++++++++++++++++++++++++++++++++
>> git-stash.sh | 2 +-
>> 2 files changed, 407 insertions(+), 1 deletion(-)
>>
>> diff --git a/builtin/stash--helper.c b/builtin/stash--helper.c
>> index 5ff810f8c..a4e57899b 100644
>> --- a/builtin/stash--helper.c
>> +++ b/builtin/stash--helper.c
>> @@ -21,6 +21,7 @@ static const char * const git_stash_helper_usage[] = {
>> N_("git stash--helper branch <branchname> [<stash>]"),
>> N_("git stash--helper clear"),
>> N_("git stash--helper store [-m|--message <message>] [-q|--quiet] <commit>"),
>> + N_("git stash--helper create [<message>]"),
>> NULL
>> };
>>
>> @@ -64,6 +65,11 @@ static const char * const git_stash_helper_store_usage[] = {
>> NULL
>> };
>>
>> +static const char * const git_stash_helper_create_usage[] = {
>> + N_("git stash--helper create [<message>]"),
>> + NULL
>> +};
>> +
>> static const char *ref_stash = "refs/stash";
>> static int quiet;
>> static struct strbuf stash_index_path = STRBUF_INIT;
>> @@ -781,6 +787,404 @@ static int store_stash(int argc, const char **argv, const char *prefix)
>> return do_store_stash(argv[0], stash_msg, quiet);
>> }
>>
>> [...]
>>
>> +
>> +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 untracked_commit_option = 0;
>> + int ret = 0;
>> + int subject_len;
>> + int flags;
>> + const char *head_short_sha1 = NULL;
>> + const char *branch_ref = NULL;
>> + const char *head_subject = NULL;
>> + const char *branch_name = "(no branch)";
>> + struct commit *head_commit = NULL;
>> + struct commit_list *parents = NULL;
>> + struct strbuf msg = STRBUF_INIT;
>> + struct strbuf commit_tree_label = STRBUF_INIT;
>> + struct strbuf out = STRBUF_INIT;
>> + struct strbuf final_stash_msg = STRBUF_INIT;
>> +
>> + read_cache_preload(NULL);
>> + refresh_cache(REFRESH_QUIET);
>> +
>> + if (!check_changes(argv, include_untracked, prefix)) {
>> + ret = 1;
>> + goto done;
>
> I wonder if we can just 'exit(0)' here, instead of returning. This
> whole command is a builtin, and I *think* outside of 'libgit.a' exiting
> early is fine. It does mean that we're not free'ing the memory
> though, which means a leak checker would probably complain. So
> dunno. It would simplify the code a little, but not sure it's worth it.
Indeed, there shouldn't be any problem by calling exit(0).
>> + }
>> +
>> + if (get_oid("HEAD", &info->b_commit)) {
>> + fprintf_ln(stderr, "You do not have the initial commit yet");
>> + ret = -1;
>> + goto done;
>> + } else {
>> + head_commit = lookup_commit(the_repository, &info->b_commit);
>> + }
>> +
>> + branch_ref = resolve_ref_unsafe("HEAD", 0, NULL, &flags);
>> + if (flags & REF_ISSYMREF)
>> + branch_name = strrchr(branch_ref, '/') + 1;
>> + head_short_sha1 = find_unique_abbrev(&head_commit->object.oid,
>> + DEFAULT_ABBREV);
>> + subject_len = find_commit_subject(get_commit_buffer(head_commit, NULL),
>> + &head_subject);
>> + strbuf_addf(&msg, "%s: %s %.*s\n", branch_name, head_short_sha1,
>> + subject_len, head_subject);
>
> I think this can be written in a slightly simpler way:
>
> head_short_sha1 = find_unique_abbrev(&head_commit->object.oid,
> DEFAULT_ABBREV);
> strbuf_addf(&msg, "%s: %s", branch_name, head_short_sha1);
> pp_commit_easy(CMIT_FMT_ONELINE, head_commit, &msg);
> strbuf_addch(&msg, '\n');
>
> The other advantage this brings is that it is consistent with other
> places where we print/use the subject of a commit (e.g. in 'git reset
> --hard').
Thanks for this suggestion.
>> +
>> + strbuf_addf(&commit_tree_label, "index on %s\n", msg.buf);
>> + commit_list_insert(head_commit, &parents);
>> + 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");
>
> Looks like this message is translated in the current 'git stash'
> implementation, so it should be here as well. Same for the messages
> below.
>
>> + ret = -1;
>> + goto done;
>> + }
>> +
>> + 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");
>
> Why does this go to stdout, whereas "Cannot save the current index
> state" above goes to stderr? In the shell version of git stash these
> all go to stderr fwiw. There are a few similar cases, it would
> probably be worth going through all the print statements here and see
> if they need to be translated, and to which output stream they should
> go.
This is what I am going to do.
>> + ret = -1;
>> + goto done;
>> + }
>> + untracked_commit_option = 1;
>> + }
>> + if (patch_mode) {
>> + ret = stash_patch(info, argv);
>> + if (ret < 0) {
>> + printf_ln("Cannot save the current worktree state");
>> + goto done;
>> + } else if (ret > 0) {
>> + goto done;
>> + }
>> + } else {
>> + if (stash_working_tree(info, argv)) {
>> + printf_ln("Cannot save the current worktree state");
>> + ret = -1;
>> + goto done;
>> + }
>> + }
>> +
>> + if (!*stash_msg || !strlen(*stash_msg))
>> + strbuf_addf(&final_stash_msg, "WIP on %s", msg.buf);
>> + else
>> + strbuf_addf(&final_stash_msg, "On %s: %s\n", branch_name,
>> + *stash_msg);
>> + *stash_msg = strbuf_detach(&final_stash_msg, NULL);
>
> strbuf_detach means we're taking ownership of the memory, so we'll
> have to free it afterwards. Looking at this we may not even want to
> re-use the 'stash_msg' variable here, but instead introduce another
> variable for it, so it doesn't have a dual meaning in this function.
>
>> +
>> + /*
>> + * `parents` will be empty after calling `commit_tree()`, so there is
>> + * no need to call `free_commit_list()`
>> + */
>> + parents = NULL;
>> + if (untracked_commit_option)
>> + commit_list_insert(lookup_commit(the_repository, &info->u_commit), &parents);
>> + commit_list_insert(lookup_commit(the_repository, &info->i_commit), &parents);
>> + commit_list_insert(head_commit, &parents);
>> +
>> + if (commit_tree(*stash_msg, strlen(*stash_msg), &info->w_tree,
>> + parents, &info->w_commit, NULL, NULL)) {
>> + printf_ln("Cannot record working tree state");
>> + ret = -1;
>> + goto done;
>> + }
>> +
>> +done:
>> + strbuf_release(&commit_tree_label);
>> + strbuf_release(&msg);
>> + strbuf_release(&out);
>> + strbuf_release(&final_stash_msg);
>> + return ret;
>> +}
>> +
>> +static int create_stash(int argc, const char **argv, const char *prefix)
>> +{
>> + int include_untracked = 0;
>> + int ret = 0;
>> + const char *stash_msg = NULL;
>> + struct stash_info info;
>> + struct option options[] = {
>> + OPT_BOOL('u', "include-untracked", &include_untracked,
>> + N_("include untracked files in stash")),
>> + OPT_STRING('m', "message", &stash_msg, N_("message"),
>> + N_("stash message")),
>> + OPT_END()
>> + };
>> +
>> + argc = parse_options(argc, argv, prefix, options,
>> + git_stash_helper_create_usage,
>> + 0);
>> +
>> + ret = do_create_stash(argc, argv, prefix, &stash_msg,
>> + include_untracked, 0, &info);
>
> stash_msg doesn't have to be passed as a pointer to a pointer here, as
> we never need the modified value after this function returns. I think
> just passing 'stash_msg' here instead of '&stash_msg' will make
> 'do_create_stash' slightly easier to read.
That's right, but `do_create_stash()` is also called by
`do_push_stash()`, which will need the modified value.
>> +
>> + if (!ret)
>> + printf_ln("%s", oid_to_hex(&info.w_commit));
>> +
>> + /*
>> + * ret can be 1 if there were no changes. In this case, we should
>> + * not error out.
>> + */
>> + return ret < 0;
>> +}
>> +
>> int cmd_stash__helper(int argc, const char **argv, const char *prefix)
>> {
>> pid_t pid = getpid();
>> @@ -817,6 +1221,8 @@ int cmd_stash__helper(int argc, const char **argv, const char *prefix)
>> return !!show_stash(argc, argv, prefix);
>> else if (!strcmp(argv[0], "store"))
>> return !!store_stash(argc, argv, prefix);
>> + else if (!strcmp(argv[0], "create"))
>> + return !!create_stash(argc, argv, prefix);
>>
>> usage_msg_opt(xstrfmt(_("unknown subcommand: %s"), argv[0]),
>> git_stash_helper_usage, options);
>> diff --git a/git-stash.sh b/git-stash.sh
>> index 5739c5152..ab06e4ffb 100755
>> --- a/git-stash.sh
>> +++ b/git-stash.sh
>> @@ -425,7 +425,7 @@ clear)
>> ;;
>> create)
>> shift
>> - create_stash -m "$*" && echo "$w_commit"
>> + git stash--helper create --message "$*"
>> ;;
>> store)
>> shift
>> --
>> 2.18.0.573.g56500d98f
>>
Thanks!
next prev parent reply other threads:[~2018-08-18 15:39 UTC|newest]
Thread overview: 181+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-05 2:28 [PATCH v5 0/5] Convert some stash functionality to a builtin Joel Teichroeb
2018-04-05 2:28 ` [PATCH v5 1/5] stash: improve option parsing test coverage Joel Teichroeb
2018-04-06 13:06 ` Johannes Schindelin
2018-04-06 22:48 ` Paul-Sebastian Ungureanu
2018-04-09 8:32 ` Johannes Schindelin
2018-04-05 2:28 ` [PATCH v5 2/5] stash: convert apply to builtin Joel Teichroeb
2018-04-05 7:50 ` Christian Couder
2018-04-05 7:59 ` Christian Couder
2018-04-05 8:13 ` Christian Couder
2018-04-05 13:34 ` Johannes Schindelin
2018-04-06 15:10 ` Johannes Schindelin
2018-04-06 15:17 ` Johannes Schindelin
2018-04-05 2:28 ` [PATCH v5 3/5] stash: convert drop and clear " Joel Teichroeb
2018-04-06 15:39 ` Johannes Schindelin
2018-04-05 2:28 ` [PATCH v5 4/5] stash: convert branch " Joel Teichroeb
2018-04-06 15:50 ` Johannes Schindelin
2018-04-05 2:28 ` [PATCH v5 5/5] stash: convert pop " Joel Teichroeb
2018-04-06 16:12 ` Johannes Schindelin
2018-04-06 16:15 ` [PATCH v5 0/5] Convert some stash functionality to a builtin Johannes Schindelin
2018-04-28 22:06 ` Paul-Sebastian Ungureanu
2018-04-29 13:04 ` Johannes Schindelin
[not found] ` <CA+CzEk8c1Pt+n9Jy5vL9_K60Q=6VKnLTdBY1JFRnb-POuRFv0Q@mail.gmail.com>
2018-04-30 15:43 ` Joel Teichroeb
2018-06-25 16:42 ` [PATCH v6 0/4] stash: add new tests and introduce a new helper function Paul-Sebastian Ungureanu
2018-06-25 16:42 ` [PATCH v6 1/4] sha1-name.c: added 'get_oidf', which acts like 'get_oid' Paul-Sebastian Ungureanu
2018-06-26 22:02 ` Johannes Schindelin
2018-06-25 16:42 ` [PATCH v6 2/4] stash: improve option parsing test coverage Paul-Sebastian Ungureanu
2018-06-25 16:42 ` [PATCH v6 3/4] stash: update test cases conform to coding guidelines Paul-Sebastian Ungureanu
2018-06-26 22:08 ` Johannes Schindelin
2018-06-25 16:42 ` [PATCH v6 4/4] stash: renamed test cases to be more descriptive Paul-Sebastian Ungureanu
2018-06-26 22:09 ` Johannes Schindelin
2018-06-25 16:43 ` [PATCH v6 1/4] stash: convert apply to builtin Paul-Sebastian Ungureanu
2018-06-25 16:43 ` [PATCH v6 2/4] stash: convert drop and clear " Paul-Sebastian Ungureanu
2018-06-26 22:17 ` Johannes Schindelin
2018-06-28 22:51 ` Paul-Sebastian Ungureanu
2018-06-25 16:43 ` [PATCH v6 3/4] stash: convert branch " Paul-Sebastian Ungureanu
2018-06-26 22:23 ` Johannes Schindelin
2018-06-27 18:39 ` Junio C Hamano
2018-06-28 16:17 ` Paul-Sebastian Ungureanu
2018-06-25 16:43 ` [PATCH v6 4/4] stash: convert pop " Paul-Sebastian Ungureanu
2018-06-26 22:31 ` Johannes Schindelin
2018-06-25 16:46 ` [PATCH v6 1/6] stash: implement the "list" command in the builtin Paul-Sebastian Ungureanu
2018-06-25 16:46 ` [PATCH v6 2/6] stash: convert show to builtin Paul-Sebastian Ungureanu
2018-06-25 16:46 ` [PATCH v6 3/6] stash: change `git stash show` usage text and documentation Paul-Sebastian Ungureanu
2018-06-25 16:46 ` [PATCH v6 4/6] stash: refactor `show_stash()` to use the diff API Paul-Sebastian Ungureanu
2018-06-25 16:46 ` [PATCH v6 5/6] stash: update `git stash show` documentation Paul-Sebastian Ungureanu
2018-06-25 16:46 ` [PATCH v6 6/6] stash: convert store to builtin Paul-Sebastian Ungureanu
2018-06-26 21:59 ` [PATCH v6 0/4] stash: add new tests and introduce a new helper function Johannes Schindelin
2018-06-27 18:47 ` Junio C Hamano
2018-06-28 22:32 ` Paul-Sebastian Ungureanu
2018-06-26 22:12 ` [PATCH v6 0/4] stash: Convert some `git stash` commands to a builtin Johannes Schindelin
2018-06-28 23:14 ` Paul-Sebastian Ungureanu
2018-08-08 18:58 ` [GSoC][PATCH v7 00/26] Convert "git stash" to C builtin Paul-Sebastian Ungureanu
2018-08-08 18:58 ` [GSoC][PATCH v7 01/26] sha1-name.c: added 'get_oidf', which acts like 'get_oid' Paul-Sebastian Ungureanu
2018-08-08 18:58 ` [GSoC][PATCH v7 02/26] stash: improve option parsing test coverage Paul-Sebastian Ungureanu
2018-08-08 18:58 ` [GSoC][PATCH v7 03/26] stash: update test cases conform to coding guidelines Paul-Sebastian Ungureanu
2018-08-08 18:58 ` [GSoC][PATCH v7 04/26] stash: renamed test cases to be more descriptive Paul-Sebastian Ungureanu
2018-08-15 19:31 ` Thomas Gummerer
2018-08-08 18:58 ` [GSoC][PATCH v7 05/26] stash: convert apply to builtin Paul-Sebastian Ungureanu
2018-08-08 20:18 ` Junio C Hamano
2018-08-09 20:01 ` Paul-Sebastian Ungureanu
2018-08-09 21:00 ` Junio C Hamano
2018-08-10 15:35 ` Paul-Sebastian Ungureanu
2018-08-18 16:09 ` Duy Nguyen
2018-08-08 18:58 ` [GSoC][PATCH v7 06/26] stash: convert drop and clear " Paul-Sebastian Ungureanu
2018-08-08 18:58 ` [GSoC][PATCH v7 07/26] stash: convert branch " Paul-Sebastian Ungureanu
2018-08-08 18:58 ` [GSoC][PATCH v7 08/26] stash: convert pop " Paul-Sebastian Ungureanu
2018-08-08 18:58 ` [GSoC][PATCH v7 09/26] stash: implement the "list" command in the builtin Paul-Sebastian Ungureanu
2018-08-15 19:41 ` Thomas Gummerer
2018-08-18 11:44 ` Paul Sebastian Ungureanu
2018-08-08 18:58 ` [GSoC][PATCH v7 10/26] stash: convert show to builtin Paul-Sebastian Ungureanu
2018-08-15 20:20 ` Thomas Gummerer
2018-08-18 12:11 ` Paul Sebastian Ungureanu
2018-08-08 18:58 ` [GSoC][PATCH v7 11/26] stash: change `git stash show` usage text and documentation Paul-Sebastian Ungureanu
2018-08-15 20:26 ` Thomas Gummerer
2018-08-08 18:58 ` [GSoC][PATCH v7 12/26] stash: refactor `show_stash()` to use the diff API Paul-Sebastian Ungureanu
2018-08-15 21:01 ` Thomas Gummerer
2018-08-18 15:11 ` Paul Sebastian Ungureanu
2018-08-08 18:58 ` [GSoC][PATCH v7 13/26] stash: update `git stash show` documentation Paul-Sebastian Ungureanu
2018-08-15 21:08 ` Thomas Gummerer
2018-08-08 18:58 ` [GSoC][PATCH v7 14/26] stash: convert store to builtin Paul-Sebastian Ungureanu
2018-08-15 21:26 ` Thomas Gummerer
2018-08-08 18:58 ` [GSoC][PATCH v7 15/26] stash: convert create " Paul-Sebastian Ungureanu
2018-08-15 22:13 ` Thomas Gummerer
2018-08-18 15:39 ` Paul Sebastian Ungureanu [this message]
2018-08-18 20:23 ` Thomas Gummerer
2018-08-08 18:58 ` [GSoC][PATCH v7 16/26] stash: replace spawning a "read-tree" process Paul-Sebastian Ungureanu
2018-08-18 21:07 ` Thomas Gummerer
2018-08-08 18:58 ` [GSoC][PATCH v7 17/26] stash: avoid spawning a "diff-index" process Paul-Sebastian Ungureanu
2018-08-18 22:06 ` Thomas Gummerer
2018-08-08 18:58 ` [GSoC][PATCH v7 18/26] stash: convert push to builtin Paul-Sebastian Ungureanu
2018-08-18 15:36 ` Thomas Gummerer
2018-08-08 18:58 ` [GSoC][PATCH v7 19/26] stash: make push to be quiet Paul-Sebastian Ungureanu
2018-08-18 15:46 ` Thomas Gummerer
2018-08-08 18:58 ` [GSoC][PATCH v7 20/26] stash: add tests for `git stash push -q` Paul-Sebastian Ungureanu
2018-08-18 16:12 ` Thomas Gummerer
2018-08-08 18:59 ` [GSoC][PATCH v7 21/26] stash: replace spawning `git ls-files` child process Paul-Sebastian Ungureanu
2018-08-18 22:17 ` Thomas Gummerer
2018-08-08 18:59 ` [GSoC][PATCH v7 22/26] stash: convert save to builtin Paul-Sebastian Ungureanu
2018-08-18 16:33 ` Thomas Gummerer
2018-08-08 18:59 ` [GSoC][PATCH v7 23/26] stash: convert `stash--helper.c` into `stash.c` Paul-Sebastian Ungureanu
2018-08-18 16:51 ` Thomas Gummerer
2018-08-08 18:59 ` [GSoC][PATCH v7 24/26] stash: optimize `get_untracked_files()` and `check_changes()` Paul-Sebastian Ungureanu
2018-08-18 22:33 ` Thomas Gummerer
2018-08-08 18:59 ` [GSoC][PATCH v7 25/26] stash: replace all `write-tree` child processes with API calls Paul-Sebastian Ungureanu
2018-08-19 8:17 ` Thomas Gummerer
2018-08-08 18:59 ` [GSoC][PATCH v7 26/26] stash: replace all "git apply" " Paul-Sebastian Ungureanu
2018-08-19 8:40 ` Thomas Gummerer
2018-08-15 22:25 ` [GSoC][PATCH v7 00/26] Convert "git stash" to C builtin Thomas Gummerer
2018-08-16 21:25 ` Paul Sebastian Ungureanu
2018-08-30 21:40 ` [GSoC][PATCH v8 00/20] " Paul-Sebastian Ungureanu
2018-08-30 21:40 ` [GSoC][PATCH v8 01/20] sha1-name.c: add `get_oidf()` which acts like `get_oid()` Paul-Sebastian Ungureanu
2018-08-30 21:40 ` [GSoC][PATCH v8 02/20] stash: improve option parsing test coverage Paul-Sebastian Ungureanu
2018-08-30 21:40 ` [GSoC][PATCH v8 03/20] stash: update test cases conform to coding guidelines Paul-Sebastian Ungureanu
2018-08-30 22:11 ` Junio C Hamano
2018-08-30 21:40 ` [GSoC][PATCH v8 04/20] stash: rename test cases to be more descriptive Paul-Sebastian Ungureanu
2018-08-30 21:40 ` [GSoC][PATCH v8 05/20] stash: add tests for `git stash show` config Paul-Sebastian Ungureanu
2018-08-30 22:07 ` Junio C Hamano
2018-09-03 12:11 ` Johannes Schindelin
2018-08-30 21:40 ` [GSoC][PATCH v8 06/20] stash: convert apply to builtin Paul-Sebastian Ungureanu
2018-08-30 21:40 ` [GSoC][PATCH v8 07/20] stash: convert drop and clear " Paul-Sebastian Ungureanu
2018-08-30 21:40 ` [GSoC][PATCH v8 08/20] stash: convert branch " Paul-Sebastian Ungureanu
2018-09-03 13:29 ` Johannes Schindelin
2018-08-30 21:40 ` [GSoC][PATCH v8 09/20] stash: convert pop " Paul-Sebastian Ungureanu
2018-08-30 21:40 ` [GSoC][PATCH v8 10/20] stash: convert list " Paul-Sebastian Ungureanu
2018-08-30 21:40 ` [GSoC][PATCH v8 11/20] stash: convert show " Paul-Sebastian Ungureanu
2018-08-30 21:40 ` [GSoC][PATCH v8 12/20] stash: mention options in `show` synopsis Paul-Sebastian Ungureanu
2018-08-30 21:40 ` [GSoC][PATCH v8 13/20] stash: convert store to builtin Paul-Sebastian Ungureanu
2018-09-03 13:24 ` Johannes Schindelin
2018-08-30 21:40 ` [GSoC][PATCH v8 14/20] stash: convert create " Paul-Sebastian Ungureanu
2018-09-03 16:00 ` Johannes Schindelin
2018-09-25 22:20 ` Paul-Sebastian Ungureanu
2018-11-09 12:27 ` Johannes Schindelin
2018-08-30 21:40 ` [GSoC][PATCH v8 15/20] stash: convert push " Paul-Sebastian Ungureanu
2018-09-03 14:40 ` Johannes Schindelin
2018-08-30 21:40 ` [GSoC][PATCH v8 16/20] stash: make push -q quiet Paul-Sebastian Ungureanu
2018-08-30 21:40 ` [GSoC][PATCH v8 17/20] stash: convert save to builtin Paul-Sebastian Ungureanu
2018-09-03 18:44 ` Johannes Schindelin
2018-09-03 19:06 ` Eric Sunshine
2018-09-03 20:38 ` Johannes Schindelin
2018-08-30 21:40 ` [GSoC][PATCH v8 18/20] stash: convert `stash--helper.c` into `stash.c` Paul-Sebastian Ungureanu
2018-09-03 14:57 ` Johannes Schindelin
2018-09-25 22:31 ` Paul-Sebastian Ungureanu
2018-11-09 12:26 ` Johannes Schindelin
2018-08-30 21:40 ` [GSoC][PATCH v8 19/20] stash: optimize `get_untracked_files()` and `check_changes()` Paul-Sebastian Ungureanu
2018-09-03 18:49 ` Johannes Schindelin
2018-08-30 21:40 ` [GSoC][PATCH v8 20/20] stash: replace all `write-tree` child processes with API calls Paul-Sebastian Ungureanu
2018-09-03 19:11 ` Johannes Schindelin
2018-08-30 22:19 ` [GSoC][PATCH v8 00/20] Convert "git stash" to C builtin Ævar Arnfjörð Bjarmason
2018-08-31 18:14 ` Junio C Hamano
2018-09-03 19:12 ` Johannes Schindelin
2018-09-25 22:33 ` [PATCH v9 00/21] " Paul-Sebastian Ungureanu
2018-09-25 22:33 ` [PATCH v9 01/21] sha1-name.c: add `get_oidf()` which acts like `get_oid()` Paul-Sebastian Ungureanu
2018-09-25 22:33 ` [PATCH v9 02/21] strbuf.c: add `strbuf_join_argv()` Paul-Sebastian Ungureanu
2018-09-30 16:49 ` Thomas Gummerer
2018-09-25 22:33 ` [PATCH v9 03/21] stash: improve option parsing test coverage Paul-Sebastian Ungureanu
2018-09-25 22:33 ` [PATCH v9 04/21] stash: update test cases conform to coding guidelines Paul-Sebastian Ungureanu
2018-09-30 16:59 ` Thomas Gummerer
2018-09-25 22:33 ` [PATCH v9 05/21] stash: rename test cases to be more descriptive Paul-Sebastian Ungureanu
2018-09-25 22:33 ` [PATCH v9 06/21] stash: add tests for `git stash show` config Paul-Sebastian Ungureanu
2018-09-25 22:33 ` [PATCH v9 07/21] stash: convert apply to builtin Paul-Sebastian Ungureanu
2018-09-30 17:48 ` Thomas Gummerer
2018-09-25 22:33 ` [PATCH v9 08/21] stash: convert drop and clear " Paul-Sebastian Ungureanu
2018-09-25 22:33 ` [PATCH v9 09/21] stash: convert branch " Paul-Sebastian Ungureanu
2018-09-30 17:57 ` Thomas Gummerer
2018-09-25 22:33 ` [PATCH v9 10/21] stash: convert pop " Paul-Sebastian Ungureanu
2018-09-25 22:33 ` [PATCH v9 11/21] stash: convert list " Paul-Sebastian Ungureanu
2018-09-25 22:33 ` [PATCH v9 12/21] stash: convert show " Paul-Sebastian Ungureanu
2018-09-25 22:33 ` [PATCH v9 13/21] stash: mention options in `show` synopsis Paul-Sebastian Ungureanu
2018-10-02 19:36 ` Thomas Gummerer
2018-09-25 22:33 ` [PATCH v9 14/21] stash: convert store to builtin Paul-Sebastian Ungureanu
2018-09-25 22:33 ` [PATCH v9 15/21] stash: convert create " Paul-Sebastian Ungureanu
2018-10-02 20:19 ` Thomas Gummerer
2018-09-25 22:33 ` [PATCH v9 16/21] stash: convert push " Paul-Sebastian Ungureanu
2018-10-02 20:37 ` Thomas Gummerer
2018-09-25 22:33 ` [PATCH v9 17/21] stash: make push -q quiet Paul-Sebastian Ungureanu
2018-09-25 22:33 ` [PATCH v9 18/21] stash: convert save to builtin Paul-Sebastian Ungureanu
2018-09-25 22:33 ` [PATCH v9 19/21] stash: convert `stash--helper.c` into `stash.c` Paul-Sebastian Ungureanu
2018-10-02 21:04 ` Thomas Gummerer
2018-09-25 22:33 ` [PATCH v9 20/21] stash: optimize `get_untracked_files()` and `check_changes()` Paul-Sebastian Ungureanu
2018-09-25 22:33 ` [PATCH v9 21/21] stash: replace all `write-tree` child processes with API calls Paul-Sebastian Ungureanu
2018-09-26 18:37 ` [PATCH v9 00/21] Convert "git stash" to C builtin Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CADzBBBaO3em0kcebL5kiE1JxSEsea2OFrzyRUgfEDjrwV6fxsw@mail.gmail.com \
--to=ungureanupaulsebastian@gmail.com \
--cc=git@vger.kernel.org \
--cc=t.gummerer@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).