status: don't suggest "git rm" or "git add" if not appropriate
The display of the advice '(use git add/rm [...])' (when there are unmerged files) after running 'git status' is now depending of the mark, whether it's 'both deleted', 'deleted by us/them' or others. For instance, when there is just one file that's marked as 'both deleted', 'git status' shows '(use git rm [...])' and if there are two files, one as 'both deleted' and the other as 'added by them', the advice is '(use git add/rm [...])'. The previous tests in t7512-status-help.sh are updated. Test about the case of only 'both deleted' is added in t7060-wtstatus.sh Signed-off-by: Lucien Kong <Lucien.Kong@ensimag.imag.fr> Signed-off-by: Valentin Duperray <Valentin.Duperray@ensimag.imag.fr> Signed-off-by: Franck Jonas <Franck.Jonas@ensimag.imag.fr> Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr> Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr> Signed-off-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
708192637e
commit
96b0ec1a4c
37
wt-status.c
37
wt-status.c
@ -131,9 +131,34 @@ void wt_status_prepare(struct wt_status *s)
|
||||
|
||||
static void wt_status_print_unmerged_header(struct wt_status *s)
|
||||
{
|
||||
int i;
|
||||
int del_mod_conflict = 0;
|
||||
int both_deleted = 0;
|
||||
int not_deleted = 0;
|
||||
const char *c = color(WT_STATUS_HEADER, s);
|
||||
|
||||
status_printf_ln(s, c, _("Unmerged paths:"));
|
||||
|
||||
for (i = 0; i < s->change.nr; i++) {
|
||||
struct string_list_item *it = &(s->change.items[i]);
|
||||
struct wt_status_change_data *d = it->util;
|
||||
|
||||
switch (d->stagemask) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
both_deleted = 1;
|
||||
break;
|
||||
case 3:
|
||||
case 5:
|
||||
del_mod_conflict = 1;
|
||||
break;
|
||||
default:
|
||||
not_deleted = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!advice_status_hints)
|
||||
return;
|
||||
if (s->whence != FROM_COMMIT)
|
||||
@ -142,7 +167,17 @@ static void wt_status_print_unmerged_header(struct wt_status *s)
|
||||
status_printf_ln(s, c, _(" (use \"git reset %s <file>...\" to unstage)"), s->reference);
|
||||
else
|
||||
status_printf_ln(s, c, _(" (use \"git rm --cached <file>...\" to unstage)"));
|
||||
status_printf_ln(s, c, _(" (use \"git add/rm <file>...\" as appropriate to mark resolution)"));
|
||||
|
||||
if (!both_deleted) {
|
||||
if (!del_mod_conflict)
|
||||
status_printf_ln(s, c, _(" (use \"git add <file>...\" to mark resolution)"));
|
||||
else
|
||||
status_printf_ln(s, c, _(" (use \"git add/rm <file>...\" as appropriate to mark resolution)"));
|
||||
} else if (!del_mod_conflict && !not_deleted) {
|
||||
status_printf_ln(s, c, _(" (use \"git rm <file>...\" to mark resolution)"));
|
||||
} else {
|
||||
status_printf_ln(s, c, _(" (use \"git add/rm <file>...\" as appropriate to mark resolution)"));
|
||||
}
|
||||
status_printf_ln(s, c, "");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user