Skip to content

Commit bc604fa

Browse files
committed
Merge 'rebase--helper' into HEAD
2 parents 498c24e + 672f21a commit bc604fa

File tree

6 files changed

+57
-0
lines changed

6 files changed

+57
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@
114114
/git-read-tree
115115
/git-rebase
116116
/git-rebase--am
117+
/git-rebase--helper
117118
/git-rebase--interactive
118119
/git-rebase--merge
119120
/git-receive-pack

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -926,6 +926,7 @@ BUILTIN_OBJS += builtin/prune.o
926926
BUILTIN_OBJS += builtin/pull.o
927927
BUILTIN_OBJS += builtin/push.o
928928
BUILTIN_OBJS += builtin/read-tree.o
929+
BUILTIN_OBJS += builtin/rebase--helper.o
929930
BUILTIN_OBJS += builtin/receive-pack.o
930931
BUILTIN_OBJS += builtin/reflog.o
931932
BUILTIN_OBJS += builtin/remote.o

builtin.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ extern int cmd_prune_packed(int argc, const char **argv, const char *prefix);
102102
extern int cmd_pull(int argc, const char **argv, const char *prefix);
103103
extern int cmd_push(int argc, const char **argv, const char *prefix);
104104
extern int cmd_read_tree(int argc, const char **argv, const char *prefix);
105+
extern int cmd_rebase__helper(int argc, const char **argv, const char *prefix);
105106
extern int cmd_receive_pack(int argc, const char **argv, const char *prefix);
106107
extern int cmd_reflog(int argc, const char **argv, const char *prefix);
107108
extern int cmd_remote(int argc, const char **argv, const char *prefix);

builtin/rebase--helper.c

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#include "builtin.h"
2+
#include "cache.h"
3+
#include "parse-options.h"
4+
#include "sequencer.h"
5+
6+
static const char * const builtin_rebase_helper_usage[] = {
7+
N_("git rebase--helper [<options>]"),
8+
NULL
9+
};
10+
11+
int cmd_rebase__helper(int argc, const char **argv, const char *prefix)
12+
{
13+
struct replay_opts opts = REPLAY_OPTS_INIT;
14+
enum {
15+
CONTINUE = 1, ABORT
16+
} command = 0;
17+
struct option options[] = {
18+
OPT_BOOL(0, "ff", &opts.allow_ff, N_("allow fast-forward")),
19+
OPT_CMDMODE(0, "continue", &command, N_("continue rebase"),
20+
CONTINUE),
21+
OPT_CMDMODE(0, "abort", &command, N_("abort rebase"),
22+
ABORT),
23+
OPT_END()
24+
};
25+
26+
git_config(git_default_config, NULL);
27+
28+
opts.action = REPLAY_INTERACTIVE_REBASE;
29+
opts.allow_ff = 1;
30+
opts.allow_empty = 1;
31+
32+
argc = parse_options(argc, argv, NULL, options,
33+
builtin_rebase_helper_usage, PARSE_OPT_KEEP_ARGV0);
34+
35+
if (command == CONTINUE && argc == 1)
36+
return !!sequencer_continue(&opts);
37+
if (command == ABORT && argc == 1)
38+
return !!sequencer_remove_state(&opts);
39+
usage_with_options(builtin_rebase_helper_usage, options);
40+
}

git-rebase--interactive.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,6 +1059,10 @@ git_rebase__interactive () {
10591059

10601060
case "$action" in
10611061
continue)
1062+
if test ! -d "$rewritten"
1063+
then
1064+
exec git rebase--helper ${force_rebase:+--no-ff} --continue
1065+
fi
10621066
# do we have anything to commit?
10631067
if git diff-index --cached --quiet HEAD --
10641068
then
@@ -1118,6 +1122,10 @@ first and then run 'git rebase --continue' again.")"
11181122
skip)
11191123
git rerere clear
11201124

1125+
if test ! -d "$rewritten"
1126+
then
1127+
exec git rebase--helper ${force_rebase:+--no-ff} --continue
1128+
fi
11211129
do_rest
11221130
return 0
11231131
;;
@@ -1304,6 +1312,11 @@ expand_todo_ids
13041312
test -d "$rewritten" || test -n "$force_rebase" || skip_unnecessary_picks
13051313

13061314
checkout_onto
1315+
if test -z "$rebase_root" && test ! -d "$rewritten"
1316+
then
1317+
require_clean_work_tree "rebase"
1318+
exec git rebase--helper ${force_rebase:+--no-ff} --continue
1319+
fi
13071320
do_rest
13081321

13091322
}

git.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,7 @@ static struct cmd_struct commands[] = {
451451
{ "pull", cmd_pull, RUN_SETUP | NEED_WORK_TREE },
452452
{ "push", cmd_push, RUN_SETUP },
453453
{ "read-tree", cmd_read_tree, RUN_SETUP },
454+
{ "rebase--helper", cmd_rebase__helper, RUN_SETUP | NEED_WORK_TREE },
454455
{ "receive-pack", cmd_receive_pack },
455456
{ "reflog", cmd_reflog, RUN_SETUP },
456457
{ "remote", cmd_remote, RUN_SETUP },

0 commit comments

Comments
 (0)