All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Paul-Sebastian Ungureanu <ungureanupaulsebastian@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [GSoC][PATCH v8 18/20] stash: convert `stash--helper.c` into `stash.c`
Date: Mon, 3 Sep 2018 16:57:05 +0200 (DST)	[thread overview]
Message-ID: <nycvar.QRO.7.76.6.1809031640490.71@tvgsbejvaqbjf.bet> (raw)
In-Reply-To: <82f5af08c6475765fac27e30f716a48039d56404.1535665109.git.ungureanupaulsebastian@gmail.com>

Hi Paul,

On Fri, 31 Aug 2018, Paul-Sebastian Ungureanu wrote:

> diff --git a/builtin/stash--helper.c b/builtin/stash.c
> similarity index 90%
> rename from builtin/stash--helper.c
> rename to builtin/stash.c
> index 1269f2548c..3d2316e3f7 100644
> --- a/builtin/stash--helper.c
> +++ b/builtin/stash.c
> @@ -1198,34 +1198,39 @@ static int do_create_stash(struct pathspec ps, const char **stash_msg,
>  
>  static int create_stash(int argc, const char **argv, const char *prefix)
>  {
> -	int include_untracked = 0;
> +	int i;
>  	int ret = 0;
> +	char *to_free = NULL;
>  	const char *stash_msg = NULL;
>  	struct stash_info info;
>  	struct pathspec ps;
> +	struct strbuf stash_msg_buf = STRBUF_INIT;
>  	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")),

This was indeed a bit surprising, but after re-reading the commit message,
it became clear what this is all about.

But I wonder...

>  		OPT_END()
>  	};
>  
>  	argc = parse_options(argc, argv, prefix, options,
> -			     git_stash_helper_create_usage,
> +			     git_stash_create_usage,
>  			     0);

As we no longer accept any command-line arguments, (and as the `create`
command *explicitly* allows messages starting with a dash), it would
probably make more sense to test `argc` directly:

	if (!argc)
		usage_with_options(git_stash_create_usage, options);

>  
> +	for (i = 0; i < argc; ++i)
> +		strbuf_addf(&stash_msg_buf, "%s ", argv[i]);

... this adds an extra space at the end, right? I guess this should read
instead:

	for (i = 0; i < argc; i++) {
		if (i > 0)
			strbuf_addch(&stash_msg_buf, ' ');
		strbuf_addstr(&stash_msg_buf, argv[i]);
	}

> +	stash_msg = strbuf_detach(&stash_msg_buf, NULL);

As we no longer have any way to set `stash_msg` via an option, this
variable should go away.

And rather than detaching the strbuf here, it would be better to release
it after the call to `do_create_stash()`. (And the `to_free` variable is
no longer necessary, either.)

> +	to_free = (char *) stash_msg;
> +
>  	memset(&ps, 0, sizeof(ps));
> -	ret = do_create_stash(ps, &stash_msg, include_untracked, 0, &info, 0);
> +	ret = do_create_stash(ps, &stash_msg, 0, 0, &info, 0);
>  
>  	if (!ret)
>  		printf_ln("%s", oid_to_hex(&info.w_commit));
>  
> +	free(to_free);
> +	free((char *) stash_msg);
> +
>  	/*
>  	 * ret can be 1 if there were no changes. In this case, we should
>  	 * not error out.
>  	 */
> -	free((char *) stash_msg);
>  	return ret < 0;
>  }
>  
> @@ -1443,9 +1448,10 @@ static int push_stash(int argc, const char **argv, const char *prefix)
>  		OPT_END()
>  	};
>  
> -	argc = parse_options(argc, argv, prefix, options,
> -			     git_stash_helper_push_usage,
> -			     0);
> +	if (argc)
> +		argc = parse_options(argc, argv, prefix, options,
> +				     git_stash_push_usage,
> +				     0);

Is this `if (argc)` guard necessary?

>  
>  	parse_pathspec(&ps, 0, PATHSPEC_PREFER_FULL, prefix, argv);
>  	return do_push_stash(ps, stash_msg, quiet, keep_index, patch_mode,
> @@ -1478,7 +1484,7 @@ static int save_stash(int argc, const char **argv, const char *prefix)
>  	};
>  
>  	argc = parse_options(argc, argv, prefix, options,
> -			     git_stash_helper_save_usage,
> +			     git_stash_save_usage,
>  			     0);
>  
>  	for (i = 0; i < argc; ++i)
> @@ -1494,10 +1500,12 @@ static int save_stash(int argc, const char **argv, const char *prefix)
>  	return ret;
>  }
>  
> -int cmd_stash__helper(int argc, const char **argv, const char *prefix)
> +int cmd_stash(int argc, const char **argv, const char *prefix)
>  {
> +	int i = -1;
>  	pid_t pid = getpid();
>  	const char *index_file;
> +	struct argv_array args = ARGV_ARRAY_INIT;
>  
>  	struct option options[] = {
>  		OPT_END()
> @@ -1505,16 +1513,16 @@ int cmd_stash__helper(int argc, const char **argv, const char *prefix)
>  
>  	git_config(git_default_config, NULL);
>  
> -	argc = parse_options(argc, argv, prefix, options, git_stash_helper_usage,
> +	argc = parse_options(argc, argv, prefix, options, git_stash_usage,
>  			     PARSE_OPT_KEEP_UNKNOWN | PARSE_OPT_KEEP_DASHDASH);
>  
>  	index_file = get_index_file();
>  	strbuf_addf(&stash_index_path, "%s.stash.%" PRIuMAX, index_file,
>  		    (uintmax_t)pid);
>  
> -	if (argc < 1)
> -		usage_with_options(git_stash_helper_usage, options);
> -	if (!strcmp(argv[0], "apply"))
> +	if (argc == 0)
> +		return !!push_stash(0, NULL, prefix);
> +	else if (!strcmp(argv[0], "apply"))
>  		return !!apply_stash(argc, argv, prefix);
>  	else if (!strcmp(argv[0], "clear"))
>  		return !!clear_stash(argc, argv, prefix);
> @@ -1536,7 +1544,44 @@ int cmd_stash__helper(int argc, const char **argv, const char *prefix)
>  		return !!push_stash(argc, argv, prefix);
>  	else if (!strcmp(argv[0], "save"))
>  		return !!save_stash(argc, argv, prefix);
> +	else if (*argv[0] != '-')
> +		usage_msg_opt(xstrfmt(_("unknown subcommand: %s"), argv[0]),
> +			      git_stash_usage, options);
> +
> +	if (strcmp(argv[0], "-p")) {
> +		while (++i < argc && strcmp(argv[i], "--")) {
> +			/*
> +			 * `akpqu` is a string which contains all short options,
> +			 * except `-m` which is verified separately.
> +			 */
> +			if ((strlen(argv[i]) == 2) && *argv[i] == '-' &&
> +			    strchr("akpqu", argv[i][1]))

I *think* this is missing the `n`.

Thanks,
Dscho

> +				continue;
> +
> +			if (!strcmp(argv[i], "--all") ||
> +			    !strcmp(argv[i], "--keep-index") ||
> +			    !strcmp(argv[i], "--no-keep-index") ||
> +			    !strcmp(argv[i], "--patch") ||
> +			    !strcmp(argv[i], "--quiet") ||
> +			    !strcmp(argv[i], "--include-untracked"))
> +				continue;
> +
> +			/*
> +			 * `-m` and `--message=` are verified separately because
> +			 * they need to be immediately followed by a string
> +			 * (i.e.`-m"foobar"` or `--message="foobar"`).
> +			 */
> +			if ((strlen(argv[i]) > 2 &&
> +			     !strncmp(argv[i], "-m", 2)) ||
> +			    (strlen(argv[i]) > 10 &&
> +			     !strncmp(argv[i], "--message=", 10)))
> +				continue;
> +
> +			usage_with_options(git_stash_usage, options);
> +		}
> +	}
>  
> -	usage_msg_opt(xstrfmt(_("unknown subcommand: %s"), argv[0]),
> -		      git_stash_helper_usage, options);
> +	argv_array_push(&args, "push");
> +	argv_array_pushv(&args, argv);
> +	return !!push_stash(args.argc, args.argv, prefix);
>  }
> diff --git a/git-stash.sh b/git-stash.sh
> deleted file mode 100755
> index 695f1feba3..0000000000
> --- a/git-stash.sh
> +++ /dev/null
> @@ -1,153 +0,0 @@
> -#!/bin/sh
> -# Copyright (c) 2007, Nanako Shiraishi
> -
> -dashless=$(basename "$0" | sed -e 's/-/ /')
> -USAGE="list [<options>]
> -   or: $dashless show [<stash>]
> -   or: $dashless drop [-q|--quiet] [<stash>]
> -   or: $dashless ( pop | apply ) [--index] [-q|--quiet] [<stash>]
> -   or: $dashless branch <branchname> [<stash>]
> -   or: $dashless save [--patch] [-k|--[no-]keep-index] [-q|--quiet]
> -		      [-u|--include-untracked] [-a|--all] [<message>]
> -   or: $dashless [push [--patch] [-k|--[no-]keep-index] [-q|--quiet]
> -		       [-u|--include-untracked] [-a|--all] [-m <message>]
> -		       [-- <pathspec>...]]
> -   or: $dashless clear"
> -
> -SUBDIRECTORY_OK=Yes
> -OPTIONS_SPEC=
> -START_DIR=$(pwd)
> -. git-sh-setup
> -require_work_tree
> -prefix=$(git rev-parse --show-prefix) || exit 1
> -cd_to_toplevel
> -
> -TMP="$GIT_DIR/.git-stash.$$"
> -TMPindex=${GIT_INDEX_FILE-"$(git rev-parse --git-path index)"}.stash.$$
> -trap 'rm -f "$TMP-"* "$TMPindex"' 0
> -
> -ref_stash=refs/stash
> -
> -if git config --get-colorbool color.interactive; then
> -       help_color="$(git config --get-color color.interactive.help 'red bold')"
> -       reset_color="$(git config --get-color '' reset)"
> -else
> -       help_color=
> -       reset_color=
> -fi
> -
> -#
> -# Parses the remaining options looking for flags and
> -# at most one revision defaulting to ${ref_stash}@{0}
> -# if none found.
> -#
> -# Derives related tree and commit objects from the
> -# revision, if one is found.
> -#
> -# stash records the work tree, and is a merge between the
> -# base commit (first parent) and the index tree (second parent).
> -#
> -#   REV is set to the symbolic version of the specified stash-like commit
> -#   IS_STASH_LIKE is non-blank if ${REV} looks like a stash
> -#   IS_STASH_REF is non-blank if the ${REV} looks like a stash ref
> -#   s is set to the SHA1 of the stash commit
> -#   w_commit is set to the commit containing the working tree
> -#   b_commit is set to the base commit
> -#   i_commit is set to the commit containing the index tree
> -#   u_commit is set to the commit containing the untracked files tree
> -#   w_tree is set to the working tree
> -#   b_tree is set to the base tree
> -#   i_tree is set to the index tree
> -#   u_tree is set to the untracked files tree
> -#
> -#   GIT_QUIET is set to t if -q is specified
> -#   INDEX_OPTION is set to --index if --index is specified.
> -#   FLAGS is set to the remaining flags (if allowed)
> -#
> -# dies if:
> -#   * too many revisions specified
> -#   * no revision is specified and there is no stash stack
> -#   * a revision is specified which cannot be resolve to a SHA1
> -#   * a non-existent stash reference is specified
> -#   * unknown flags were set and ALLOW_UNKNOWN_FLAGS is not "t"
> -#
> -
> -test "$1" = "-p" && set "push" "$@"
> -
> -PARSE_CACHE='--not-parsed'
> -# The default command is "push" if nothing but options are given
> -seen_non_option=
> -for opt
> -do
> -	case "$opt" in
> -	--) break ;;
> -	-*) ;;
> -	*) seen_non_option=t; break ;;
> -	esac
> -done
> -
> -test -n "$seen_non_option" || set "push" "$@"
> -
> -# Main command set
> -case "$1" in
> -list)
> -	shift
> -	git stash--helper list "$@"
> -	;;
> -show)
> -	shift
> -	git stash--helper show "$@"
> -	;;
> -save)
> -	shift
> -	cd "$START_DIR"
> -	git stash--helper save "$@"
> -	;;
> -push)
> -	shift
> -	cd "$START_DIR"
> -	git stash--helper push "$@"
> -	;;
> -apply)
> -	shift
> -	cd "$START_DIR"
> -	git stash--helper apply "$@"
> -	;;
> -clear)
> -	shift
> -	git stash--helper clear "$@"
> -	;;
> -create)
> -	shift
> -	git stash--helper create --message "$*"
> -	;;
> -store)
> -	shift
> -	git stash--helper store "$@"
> -	;;
> -drop)
> -	shift
> -	git stash--helper drop "$@"
> -	;;
> -pop)
> -	shift
> -	cd "$START_DIR"
> -	git stash--helper pop "$@"
> -	;;
> -branch)
> -	shift
> -	cd "$START_DIR"
> -	git stash--helper branch "$@"
> -	;;
> -*)
> -	case $# in
> -	0)
> -		cd "$START_DIR"
> -		git stash--helper push &&
> -		say "$(gettext "(To restore them type \"git stash apply\")")"
> -		;;
> -	*)
> -		usage
> -	esac
> -	;;
> -esac
> diff --git a/git.c b/git.c
> index 3c0e762d7d..78548397cf 100644
> --- a/git.c
> +++ b/git.c
> @@ -544,7 +544,7 @@ static struct cmd_struct commands[] = {
>  	{ "show-index", cmd_show_index },
>  	{ "show-ref", cmd_show_ref, RUN_SETUP },
>  	{ "stage", cmd_add, RUN_SETUP | NEED_WORK_TREE },
> -	{ "stash--helper", cmd_stash__helper, RUN_SETUP | NEED_WORK_TREE },
> +	{ "stash", cmd_stash, RUN_SETUP | NEED_WORK_TREE },
>  	{ "status", cmd_status, RUN_SETUP | NEED_WORK_TREE },
>  	{ "stripspace", cmd_stripspace },
>  	{ "submodule--helper", cmd_submodule__helper, RUN_SETUP | SUPPORT_SUPER_PREFIX | NO_PARSEOPT },
> -- 
> 2.19.0.rc0.22.gc26283d74e
> 
> 

  reply	other threads:[~2018-09-03 14:57 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
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 [this message]
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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=nycvar.QRO.7.76.6.1809031640490.71@tvgsbejvaqbjf.bet \
    --to=johannes.schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=ungureanupaulsebastian@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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.