Skip to content

Commit b6b88d0

Browse files
jamilldscho
authored andcommitted
Merge 'builtin-stash-rebase-v3'
To avoid having to play tricks as in earlier rounds, we bit the sour apple and rebased the `builtin-stash-rebase-v3` branch thicket onto the commit starting Git for Windows' merging-rebase. (The merging-rebase pulls in the previous branch thicket via a "fake merge", i.e. a merge commit that does not actually apply any changes from the merged commit history. This has the unfortunate side effect of confusing `merge` into thinking that any branch that was merged into an earlier round does not need to be merged again.) Signed-off-by: Johannes Schindelin <[email protected]>
2 parents 7698874 + a61c013 commit b6b88d0

20 files changed

+2548
-226
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@
8282
/git-interpret-trailers
8383
/git-instaweb
8484
/git-legacy-rebase
85+
/git-legacy-rebase--interactive
86+
/git-legacy-stash
8587
/git-log
8688
/git-ls-files
8789
/git-ls-remote

Documentation/git-stash.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ SYNOPSIS
99
--------
1010
[verse]
1111
'git stash' list [<options>]
12-
'git stash' show [<stash>]
12+
'git stash' show [<options>] [<stash>]
1313
'git stash' drop [-q|--quiet] [<stash>]
1414
'git stash' ( pop | apply ) [--index] [-q|--quiet] [<stash>]
1515
'git stash' branch <branchname> [<stash>]
@@ -106,7 +106,7 @@ stash@{1}: On master: 9cc0589... Add git-stash
106106
The command takes options applicable to the 'git log'
107107
command to control what is shown and how. See linkgit:git-log[1].
108108

109-
show [<stash>]::
109+
show [<options>] [<stash>]::
110110

111111
Show the changes recorded in the stash entry as a diff between the
112112
stashed contents and the commit back when the stash entry was first

Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -617,12 +617,13 @@ SCRIPT_SH += git-merge-resolve.sh
617617
SCRIPT_SH += git-mergetool.sh
618618
SCRIPT_SH += git-quiltimport.sh
619619
SCRIPT_SH += git-legacy-rebase.sh
620+
SCRIPT_SH += git-legacy-stash.sh
620621
SCRIPT_SH += git-remote-testgit.sh
621622
SCRIPT_SH += git-request-pull.sh
622-
SCRIPT_SH += git-stash.sh
623623
SCRIPT_SH += git-submodule.sh
624624
SCRIPT_SH += git-web--browse.sh
625625

626+
SCRIPT_LIB += git-legacy-rebase--interactive
626627
SCRIPT_LIB += git-mergetool--lib
627628
SCRIPT_LIB += git-parse-remote
628629
SCRIPT_LIB += git-rebase--am
@@ -1119,6 +1120,7 @@ BUILTIN_OBJS += builtin/shortlog.o
11191120
BUILTIN_OBJS += builtin/show-branch.o
11201121
BUILTIN_OBJS += builtin/show-index.o
11211122
BUILTIN_OBJS += builtin/show-ref.o
1123+
BUILTIN_OBJS += builtin/stash.o
11221124
BUILTIN_OBJS += builtin/stripspace.o
11231125
BUILTIN_OBJS += builtin/submodule--helper.o
11241126
BUILTIN_OBJS += builtin/symbolic-ref.o

builtin.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ extern int cmd_show(int argc, const char **argv, const char *prefix);
225225
extern int cmd_show_branch(int argc, const char **argv, const char *prefix);
226226
extern int cmd_show_index(int argc, const char **argv, const char *prefix);
227227
extern int cmd_status(int argc, const char **argv, const char *prefix);
228+
extern int cmd_stash(int argc, const char **argv, const char *prefix);
228229
extern int cmd_stripspace(int argc, const char **argv, const char *prefix);
229230
extern int cmd_submodule__helper(int argc, const char **argv, const char *prefix);
230231
extern int cmd_symbolic_ref(int argc, const char **argv, const char *prefix);

builtin/rebase--interactive.c

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,8 @@ int cmd_rebase__interactive(int argc, const char **argv, const char *prefix)
141141
char *raw_strategies = NULL;
142142
enum {
143143
NONE = 0, CONTINUE, SKIP, EDIT_TODO, SHOW_CURRENT_PATCH,
144-
SHORTEN_OIDS, EXPAND_OIDS, CHECK_TODO_LIST, REARRANGE_SQUASH, ADD_EXEC
144+
SHORTEN_OIDS, EXPAND_OIDS, CHECK_TODO_LIST, REARRANGE_SQUASH, ADD_EXEC,
145+
MAKE_SCRIPT, SKIP_UNNECESSARY_PICKS,
145146
} command = 0;
146147
struct option options[] = {
147148
OPT_BOOL(0, "ff", &opts.allow_ff, N_("allow fast-forward")),
@@ -192,6 +193,10 @@ int cmd_rebase__interactive(int argc, const char **argv, const char *prefix)
192193
OPT_STRING(0, "onto-name", &onto_name, N_("onto-name"), N_("onto name")),
193194
OPT_STRING(0, "cmd", &cmd, N_("cmd"), N_("the command to run")),
194195
OPT_RERERE_AUTOUPDATE(&opts.allow_rerere_auto),
196+
OPT_CMDMODE(0, "make-script", &command,
197+
N_("make rebase script"), MAKE_SCRIPT),
198+
OPT_CMDMODE(0, "skip-unnecessary-picks", &command,
199+
N_("skip unnecessary picks"), SKIP_UNNECESSARY_PICKS),
195200
OPT_END()
196201
};
197202

@@ -263,6 +268,17 @@ int cmd_rebase__interactive(int argc, const char **argv, const char *prefix)
263268
case ADD_EXEC:
264269
ret = sequencer_add_exec_commands(cmd);
265270
break;
271+
case MAKE_SCRIPT:
272+
ret = sequencer_make_script(stdout, argc, argv, flags);
273+
break;
274+
case SKIP_UNNECESSARY_PICKS: {
275+
struct object_id oid;
276+
277+
ret = skip_unnecessary_picks(&oid);
278+
if (!ret)
279+
printf("%s\n", oid_to_hex(&oid));
280+
break;
281+
}
266282
default:
267283
BUG("invalid command '%d'", command);
268284
}

0 commit comments

Comments
 (0)