git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / 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 17/20] stash: convert save to builtin
Date: Mon, 3 Sep 2018 20:44:23 +0200 (DST)	[thread overview]
Message-ID: <nycvar.QRO.7.76.6.1809032031090.71@tvgsbejvaqbjf.bet> (raw)
In-Reply-To: <6832c979c8dca2a3584ed3cf828a6de060413cda.1535665109.git.ungureanupaulsebastian@gmail.com>

Hi Paul,

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

> Add stash save to the helper and delete functions which are no
> longer needed (`show_help()`, `save_stash()`, `push_stash()`,
> `create_stash()`, `clear_stash()`, `untracked_files()` and
> `no_changes()`).
> 
> The `-m` option is no longer supported as it might not make
> sense to have two ways of passing a message. Even if this is
> a change in behaviour, the documentation remains the same
> because the `-m` parameter was omitted before.

It makes me slightly nervous to remove the `-m` option like this. And I
wonder how difficult it would be to allow for the `-m` option, still, just
to keep the occasional script running that might rely on this feature.

I could imagine that it would be as easy as

	const char *stash_msg = NULL;
	[...]
		OPT_STRING('m', "message", &stash_msg, "message",
			   N_("stash message")),
	[...]
	struct strbuf buf = STRBUF_INIT;

	[... parse_options() ...]
	if (argc)
		stash_msg = strbuf_join_argv(&buf, argc, argv, ' ');

	[...]

	strbuf_release(&buf);

where `strbuf_join_argv()` would be implemented like this (and I would put
it into strbuf.c and strbuf.h:

	const char *strbuf_join_argv(struct strbuf *buf,
				     int argc, const char **argv, char delim)
	{
		if (!argc)
			return buf->buf;

		strbuf_addstr(buf, *argv);
		while (--i) {
			strbuf_addch(buf, delim);
			strbuf_addstr(buf, *(++argv);
		}

		return buf->buf;
	}

> diff --git a/builtin/stash--helper.c b/builtin/stash--helper.c
> index e5153a63ea..1269f2548c 100644
> --- a/builtin/stash--helper.c
> +++ b/builtin/stash--helper.c
> @@ -1444,6 +1452,48 @@ static int push_stash(int argc, const char **argv, const char *prefix)
>  			     include_untracked);
>  }
>  
> +static int save_stash(int argc, const char **argv, const char *prefix)
> +{
> +	int i;
> +	int keep_index = -1;
> +	int patch_mode = 0;
> +	int include_untracked = 0;
> +	int quiet = 0;
> +	int ret = 0;
> +	const char *stash_msg = NULL;
> +	char *to_free = NULL;
> +	struct strbuf stash_msg_buf = STRBUF_INIT;
> +	struct pathspec ps;
> +	struct option options[] = {
> +		OPT_SET_INT('k', "keep-index", &keep_index,
> +			N_("keep index"), 1),
> +		OPT_BOOL('p', "patch", &patch_mode,
> +			N_("stash in patch mode")),
> +		OPT__QUIET(&quiet, N_("quiet mode")),
> +		OPT_BOOL('u', "include-untracked", &include_untracked,
> +			 N_("include untracked files in stash")),
> +		OPT_SET_INT('a', "all", &include_untracked,
> +			    N_("include ignore files"), 2),
> +		OPT_END()
> +	};
> +
> +	argc = parse_options(argc, argv, prefix, options,
> +			     git_stash_helper_save_usage,
> +			     0);
> +
> +	for (i = 0; i < argc; ++i)
> +		strbuf_addf(&stash_msg_buf, "%s ", argv[i]);

I think I saw this in another patch already, and now it makes sense to
introduce the `strbuf_join_argv()` function, methinks.

> +	stash_msg = strbuf_detach(&stash_msg_buf, NULL);
> +	to_free = (char *) stash_msg;
> +
> +	memset(&ps, 0, sizeof(ps));
> +	ret = do_push_stash(ps, stash_msg, quiet, keep_index, patch_mode,
> +			    include_untracked);
> +
> +	free(to_free);

As before, I would recommend to use stash_msg_buf.buf directly and call
strbuf_release() in the end (and drop the `to_free` variable altogether).

The rest looks good to me!

Thanks,
Dscho

> +	return ret;
> +}
> +
>  int cmd_stash__helper(int argc, const char **argv, const char *prefix)
>  {
>  	pid_t pid = getpid();
> @@ -1484,6 +1534,8 @@ int cmd_stash__helper(int argc, const char **argv, const char *prefix)
>  		return !!create_stash(argc, argv, prefix);
>  	else if (!strcmp(argv[0], "push"))
>  		return !!push_stash(argc, argv, prefix);
> +	else if (!strcmp(argv[0], "save"))
> +		return !!save_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 c3146f62ab..695f1feba3 100755
> --- a/git-stash.sh
> +++ b/git-stash.sh
> @@ -36,314 +36,6 @@ else
>         reset_color=
>  fi
>  
> -no_changes () {
> -	git diff-index --quiet --cached HEAD --ignore-submodules -- "$@" &&
> -	git diff-files --quiet --ignore-submodules -- "$@" &&
> -	(test -z "$untracked" || test -z "$(untracked_files "$@")")
> -}
> -
> -untracked_files () {
> -	if test "$1" = "-z"
> -	then
> -		shift
> -		z=-z
> -	else
> -		z=
> -	fi
> -	excl_opt=--exclude-standard
> -	test "$untracked" = "all" && excl_opt=
> -	git ls-files -o $z $excl_opt -- "$@"
> -}
> -
> -clear_stash () {
> -	if test $# != 0
> -	then
> -		die "$(gettext "git stash clear with parameters is unimplemented")"
> -	fi
> -	if current=$(git rev-parse --verify --quiet $ref_stash)
> -	then
> -		git update-ref -d $ref_stash $current
> -	fi
> -}
> -
> -create_stash () {
> -	stash_msg=
> -	untracked=
> -	while test $# != 0
> -	do
> -		case "$1" in
> -		-m|--message)
> -			shift
> -			stash_msg=${1?"BUG: create_stash () -m requires an argument"}
> -			;;
> -		-m*)
> -			stash_msg=${1#-m}
> -			;;
> -		--message=*)
> -			stash_msg=${1#--message=}
> -			;;
> -		-u|--include-untracked)
> -			shift
> -			untracked=${1?"BUG: create_stash () -u requires an argument"}
> -			;;
> -		--)
> -			shift
> -			break
> -			;;
> -		esac
> -		shift
> -	done
> -
> -	git update-index -q --refresh
> -	if no_changes "$@"
> -	then
> -		exit 0
> -	fi
> -
> -	# state of the base commit
> -	if b_commit=$(git rev-parse --verify HEAD)
> -	then
> -		head=$(git rev-list --oneline -n 1 HEAD --)
> -	else
> -		die "$(gettext "You do not have the initial commit yet")"
> -	fi
> -
> -	if branch=$(git symbolic-ref -q HEAD)
> -	then
> -		branch=${branch#refs/heads/}
> -	else
> -		branch='(no branch)'
> -	fi
> -	msg=$(printf '%s: %s' "$branch" "$head")
> -
> -	# state of the index
> -	i_tree=$(git write-tree) &&
> -	i_commit=$(printf 'index on %s\n' "$msg" |
> -		git commit-tree $i_tree -p $b_commit) ||
> -		die "$(gettext "Cannot save the current index state")"
> -
> -	if test -n "$untracked"
> -	then
> -		# Untracked files are stored by themselves in a parentless commit, for
> -		# ease of unpacking later.
> -		u_commit=$(
> -			untracked_files -z "$@" | (
> -				GIT_INDEX_FILE="$TMPindex" &&
> -				export GIT_INDEX_FILE &&
> -				rm -f "$TMPindex" &&
> -				git update-index -z --add --remove --stdin &&
> -				u_tree=$(git write-tree) &&
> -				printf 'untracked files on %s\n' "$msg" | git commit-tree $u_tree  &&
> -				rm -f "$TMPindex"
> -		) ) || die "$(gettext "Cannot save the untracked files")"
> -
> -		untracked_commit_option="-p $u_commit";
> -	else
> -		untracked_commit_option=
> -	fi
> -
> -	if test -z "$patch_mode"
> -	then
> -
> -		# state of the working tree
> -		w_tree=$( (
> -			git read-tree --index-output="$TMPindex" -m $i_tree &&
> -			GIT_INDEX_FILE="$TMPindex" &&
> -			export GIT_INDEX_FILE &&
> -			git diff-index --name-only -z HEAD -- "$@" >"$TMP-stagenames" &&
> -			git update-index -z --add --remove --stdin <"$TMP-stagenames" &&
> -			git write-tree &&
> -			rm -f "$TMPindex"
> -		) ) ||
> -			die "$(gettext "Cannot save the current worktree state")"
> -
> -	else
> -
> -		rm -f "$TMP-index" &&
> -		GIT_INDEX_FILE="$TMP-index" git read-tree HEAD &&
> -
> -		# find out what the user wants
> -		GIT_INDEX_FILE="$TMP-index" \
> -			git add--interactive --patch=stash -- "$@" &&
> -
> -		# state of the working tree
> -		w_tree=$(GIT_INDEX_FILE="$TMP-index" git write-tree) ||
> -		die "$(gettext "Cannot save the current worktree state")"
> -
> -		git diff-tree -p HEAD $w_tree -- >"$TMP-patch" &&
> -		test -s "$TMP-patch" ||
> -		die "$(gettext "No changes selected")"
> -
> -		rm -f "$TMP-index" ||
> -		die "$(gettext "Cannot remove temporary index (can't happen)")"
> -
> -	fi
> -
> -	# create the stash
> -	if test -z "$stash_msg"
> -	then
> -		stash_msg=$(printf 'WIP on %s' "$msg")
> -	else
> -		stash_msg=$(printf 'On %s: %s' "$branch" "$stash_msg")
> -	fi
> -	w_commit=$(printf '%s\n' "$stash_msg" |
> -	git commit-tree $w_tree -p $b_commit -p $i_commit $untracked_commit_option) ||
> -	die "$(gettext "Cannot record working tree state")"
> -}
> -
> -push_stash () {
> -	keep_index=
> -	patch_mode=
> -	untracked=
> -	stash_msg=
> -	while test $# != 0
> -	do
> -		case "$1" in
> -		-k|--keep-index)
> -			keep_index=t
> -			;;
> -		--no-keep-index)
> -			keep_index=n
> -			;;
> -		-p|--patch)
> -			patch_mode=t
> -			# only default to keep if we don't already have an override
> -			test -z "$keep_index" && keep_index=t
> -			;;
> -		-q|--quiet)
> -			GIT_QUIET=t
> -			;;
> -		-u|--include-untracked)
> -			untracked=untracked
> -			;;
> -		-a|--all)
> -			untracked=all
> -			;;
> -		-m|--message)
> -			shift
> -			test -z ${1+x} && usage
> -			stash_msg=$1
> -			;;
> -		-m*)
> -			stash_msg=${1#-m}
> -			;;
> -		--message=*)
> -			stash_msg=${1#--message=}
> -			;;
> -		--help)
> -			show_help
> -			;;
> -		--)
> -			shift
> -			break
> -			;;
> -		-*)
> -			option="$1"
> -			eval_gettextln "error: unknown option for 'stash push': \$option"
> -			usage
> -			;;
> -		*)
> -			break
> -			;;
> -		esac
> -		shift
> -	done
> -
> -	eval "set $(git rev-parse --sq --prefix "$prefix" -- "$@")"
> -
> -	if test -n "$patch_mode" && test -n "$untracked"
> -	then
> -		die "$(gettext "Can't use --patch and --include-untracked or --all at the same time")"
> -	fi
> -
> -	test -n "$untracked" || git ls-files --error-unmatch -- "$@" >/dev/null || exit 1
> -
> -	git update-index -q --refresh
> -	if no_changes "$@"
> -	then
> -		say "$(gettext "No local changes to save")"
> -		exit 0
> -	fi
> -
> -	git reflog exists $ref_stash ||
> -		clear_stash || die "$(gettext "Cannot initialize stash")"
> -
> -	create_stash -m "$stash_msg" -u "$untracked" -- "$@"
> -	git stash--helper store -m "$stash_msg" -q $w_commit ||
> -	die "$(gettext "Cannot save the current status")"
> -	say "$(eval_gettext "Saved working directory and index state \$stash_msg")"
> -
> -	if test -z "$patch_mode"
> -	then
> -		test "$untracked" = "all" && CLEAN_X_OPTION=-x || CLEAN_X_OPTION=
> -		if test -n "$untracked" && test $# = 0
> -		then
> -			git clean --force --quiet -d $CLEAN_X_OPTION
> -		fi
> -
> -		if test $# != 0
> -		then
> -			test -z "$untracked" && UPDATE_OPTION="-u" || UPDATE_OPTION=
> -			test "$untracked" = "all" && FORCE_OPTION="--force" || FORCE_OPTION=
> -			git add $UPDATE_OPTION $FORCE_OPTION -- "$@"
> -			git diff-index -p --cached --binary HEAD -- "$@" |
> -			git apply --index -R
> -		else
> -			git reset --hard -q
> -		fi
> -
> -		if test "$keep_index" = "t" && test -n "$i_tree"
> -		then
> -			git read-tree --reset $i_tree
> -			git ls-files -z --modified -- "$@" |
> -			git checkout-index -z --force --stdin
> -		fi
> -	else
> -		git apply -R < "$TMP-patch" ||
> -		die "$(gettext "Cannot remove worktree changes")"
> -
> -		if test "$keep_index" != "t"
> -		then
> -			git reset -q -- "$@"
> -		fi
> -	fi
> -}
> -
> -save_stash () {
> -	push_options=
> -	while test $# != 0
> -	do
> -		case "$1" in
> -		--)
> -			shift
> -			break
> -			;;
> -		-*)
> -			# pass all options through to push_stash
> -			push_options="$push_options $1"
> -			;;
> -		*)
> -			break
> -			;;
> -		esac
> -		shift
> -	done
> -
> -	stash_msg="$*"
> -
> -	if test -z "$stash_msg"
> -	then
> -		push_stash $push_options
> -	else
> -		push_stash $push_options -m "$stash_msg"
> -	fi
> -}
> -
> -show_help () {
> -	exec git help stash
> -	exit 1
> -}
> -
>  #
>  # Parses the remaining options looking for flags and
>  # at most one revision defaulting to ${ref_stash}@{0}
> @@ -408,7 +100,8 @@ show)
>  	;;
>  save)
>  	shift
> -	save_stash "$@"
> +	cd "$START_DIR"
> +	git stash--helper save "$@"
>  	;;
>  push)
>  	shift
> -- 
> 2.19.0.rc0.22.gc26283d74e
> 
> 

  reply	other threads:[~2018-09-03 18:44 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 [this message]
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=nycvar.QRO.7.76.6.1809032031090.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.
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).