3 #include "rebase-interactive.h"
7 void append_todo_help(unsigned edit_todo
, unsigned keep_empty
,
10 const char *msg
= _("\nCommands:\n"
11 "p, pick <commit> = use commit\n"
12 "r, reword <commit> = use commit, but edit the commit message\n"
13 "e, edit <commit> = use commit, but stop for amending\n"
14 "s, squash <commit> = use commit, but meld into previous commit\n"
15 "f, fixup <commit> = like \"squash\", but discard this commit's log message\n"
16 "x, exec <command> = run command (the rest of the line) using shell\n"
17 "b, break = stop here (continue rebase later with 'git rebase --continue')\n"
18 "d, drop <commit> = remove commit\n"
19 "l, label <label> = label current HEAD with a name\n"
20 "t, reset <label> = reset HEAD to a label\n"
21 "m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]\n"
22 ". create a merge commit using the original merge commit's\n"
23 ". message (or the oneline, if no original merge commit was\n"
24 ". specified). Use -c <commit> to reword the commit message.\n"
26 "These lines can be re-ordered; they are executed from top to bottom.\n");
28 strbuf_add_commented_lines(buf
, msg
, strlen(msg
));
30 if (get_missing_commit_check_level() == MISSING_COMMIT_CHECK_ERROR
)
31 msg
= _("\nDo not remove any line. Use 'drop' "
32 "explicitly to remove a commit.\n");
34 msg
= _("\nIf you remove a line here "
35 "THAT COMMIT WILL BE LOST.\n");
37 strbuf_add_commented_lines(buf
, msg
, strlen(msg
));
40 msg
= _("\nYou are editing the todo file "
41 "of an ongoing interactive rebase.\n"
42 "To continue rebase after editing, run:\n"
43 " git rebase --continue\n\n");
45 msg
= _("\nHowever, if you remove everything, "
46 "the rebase will be aborted.\n\n");
48 strbuf_add_commented_lines(buf
, msg
, strlen(msg
));
51 msg
= _("Note that empty commits are commented out");
52 strbuf_add_commented_lines(buf
, msg
, strlen(msg
));
56 int edit_todo_list(struct repository
*r
, unsigned flags
)
58 struct strbuf buf
= STRBUF_INIT
;
59 const char *todo_file
= rebase_path_todo();
61 if (strbuf_read_file(&buf
, todo_file
, 0) < 0)
62 return error_errno(_("could not read '%s'."), todo_file
);
64 strbuf_stripspace(&buf
, 1);
65 if (write_message(buf
.buf
, buf
.len
, todo_file
, 0)) {
72 transform_todos(r
, flags
| TODO_LIST_SHORTEN_IDS
);
74 if (strbuf_read_file(&buf
, todo_file
, 0) < 0)
75 return error_errno(_("could not read '%s'."), todo_file
);
77 append_todo_help(1, 0, &buf
);
78 if (write_message(buf
.buf
, buf
.len
, todo_file
, 0)) {
85 if (launch_sequence_editor(todo_file
, NULL
, NULL
))
88 transform_todos(r
, flags
& ~(TODO_LIST_SHORTEN_IDS
));