mirror of
https://github.com/git/git.git
synced 2024-11-18 23:13:58 +01:00
status: be prepared for not-yet-started interactive rebase
Some developers might want to call `git status` in a working directory where they just started an interactive rebase, but the edit script is still opened in the editor. Let's show a meaningful message in such cases. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
c3808ca698
commit
df9ded4984
@ -944,4 +944,23 @@ EOF
|
||||
test_i18ncmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'status: handle not-yet-started rebase -i gracefully' '
|
||||
ONTO=$(git rev-parse --short HEAD^) &&
|
||||
COMMIT=$(git rev-parse --short HEAD) &&
|
||||
EDITOR="git status --untracked-files=no >actual" git rebase -i HEAD^ &&
|
||||
cat >expected <<EOF &&
|
||||
On branch several_commits
|
||||
No commands done.
|
||||
Next command to do (1 remaining command):
|
||||
pick $COMMIT four_commit
|
||||
(use "git rebase --edit-todo" to view and edit)
|
||||
You are currently editing a commit while rebasing branch '\''several_commits'\'' on '\''$ONTO'\''.
|
||||
(use "git commit --amend" to amend the current commit)
|
||||
(use "git rebase --continue" once you are satisfied with your changes)
|
||||
|
||||
nothing to commit (use -u to show untracked files)
|
||||
EOF
|
||||
test_i18ncmp expected actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
14
wt-status.c
14
wt-status.c
@ -1072,14 +1072,17 @@ static void abbrev_sha1_in_line(struct strbuf *line)
|
||||
strbuf_list_free(split);
|
||||
}
|
||||
|
||||
static void read_rebase_todolist(const char *fname, struct string_list *lines)
|
||||
static int read_rebase_todolist(const char *fname, struct string_list *lines)
|
||||
{
|
||||
struct strbuf line = STRBUF_INIT;
|
||||
FILE *f = fopen(git_path("%s", fname), "r");
|
||||
|
||||
if (!f)
|
||||
if (!f) {
|
||||
if (errno == ENOENT)
|
||||
return -1;
|
||||
die_errno("Could not open file %s for reading",
|
||||
git_path("%s", fname));
|
||||
}
|
||||
while (!strbuf_getline_lf(&line, f)) {
|
||||
if (line.len && line.buf[0] == comment_line_char)
|
||||
continue;
|
||||
@ -1089,6 +1092,7 @@ static void read_rebase_todolist(const char *fname, struct string_list *lines)
|
||||
abbrev_sha1_in_line(&line);
|
||||
string_list_append(lines, line.buf);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void show_rebase_information(struct wt_status *s,
|
||||
@ -1103,8 +1107,10 @@ static void show_rebase_information(struct wt_status *s,
|
||||
struct string_list yet_to_do = STRING_LIST_INIT_DUP;
|
||||
|
||||
read_rebase_todolist("rebase-merge/done", &have_done);
|
||||
read_rebase_todolist("rebase-merge/git-rebase-todo", &yet_to_do);
|
||||
|
||||
if (read_rebase_todolist("rebase-merge/git-rebase-todo",
|
||||
&yet_to_do))
|
||||
status_printf_ln(s, color,
|
||||
_("git-rebase-todo is missing."));
|
||||
if (have_done.nr == 0)
|
||||
status_printf_ln(s, color, _("No commands done."));
|
||||
else {
|
||||
|
Loading…
Reference in New Issue
Block a user