Thread (167 messages) 167 messages, 8 authors, 2018-11-09

Re: [PATCH v6 3/4] stash: convert branch to builtin

From: Johannes Schindelin <hidden>
Date: 2018-06-26 22:24:01

Hi Paul,

On Mon, 25 Jun 2018, Paul-Sebastian Ungureanu wrote:
quoted hunk ↗ jump to hunk
diff --git a/builtin/stash--helper.c b/builtin/stash--helper.c
index 84a537f39..fbf78249c 100644
--- a/builtin/stash--helper.c
+++ b/builtin/stash--helper.c
@@ -522,6 +528,41 @@ static int drop_stash(int argc, const char **argv, const char *prefix)
 	return ret;
 }
 
+static int branch_stash(int argc, const char **argv, const char *prefix)
+{
+	const char *branch = NULL;
+	int ret;
+	struct argv_array args = ARGV_ARRAY_INIT;
+	struct stash_info info;
+	struct option options[] = {
+		OPT_END()
+	};
+
+	argc = parse_options(argc, argv, prefix, options,
+			     git_stash_helper_branch_usage, 0);
+
+	if (argc == 0)
+		return error(_("No branch name specified"));
+
+	branch = argv[0];
+
+	if (get_stash_info(&info, argc - 1, argv + 1))
+		return -1;
+
+	argv_array_pushl(&args, "checkout", "-b", NULL);
+	argv_array_push(&args, branch);
+	argv_array_push(&args, oid_to_hex(&info.b_commit));
Why not combine these? _pushl() takes a NULL-terminated list:

	argv_array_pushl(&args, "checkout", "-b", branch,
			 oid_to_hex(&info.b_commit), NULL);
+	ret = cmd_checkout(args.argc, args.argv, prefix);
I guess it is okay to run that, but the cmd_() functions are not *really*
meant to be called this way... Personally, I would be more comfortable
with a `run_command()` here, i.e. with a spawned process, until the time
when checkout.c/checkout.h have learned enough API for a direct call.

Ciao,
Dscho
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help