@@ -4,12 +4,34 @@
#include "builtin.h"
#include "parse-options.h"
+#include "run-command.h"
static const char *const stage_usage[] = {
N_("git stage [options] [--] <paths>..."),
NULL
};
+static int rerun(int argc, const char **argv, ...)
+{
+ int ret;
+ struct strvec args = STRVEC_INIT;
+ va_list ap;
+ const char *arg;
+ int i;
+
+ va_start(ap, argv);
+ while ((arg = va_arg(ap, const char *)))
+ strvec_push(&args, arg);
+ va_end(ap);
+
+ for (i = 0; i < argc; i++)
+ strvec_push(&args, argv[i]);
+
+ ret = run_command_v_opt(args.v, RUN_GIT_CMD);
+ strvec_clear(&args);
+ return ret;
+}
+
int cmd_stage(int argc, const char **argv, const char *prefix)
{
struct option options[] = {
@@ -17,7 +39,7 @@ int cmd_stage(int argc, const char **argv, const char *prefix)
};
argc = parse_options(argc, argv, prefix, options, stage_usage,
- PARSE_OPT_KEEP_ARGV0 | PARSE_OPT_KEEP_UNKNOWN | PARSE_OPT_KEEP_DASHDASH);
+ PARSE_OPT_KEEP_UNKNOWN | PARSE_OPT_KEEP_DASHDASH);
- return cmd_add(argc, argv, prefix);
+ return rerun(argc, argv, "add", NULL);
}
Will be useful to run other commands. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> --- builtin/stage.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-)