advice: Introduce error_resolve_conflict
Enable future callers to report a conflict and not die immediately by introducing a new function called error_resolve_conflict. Re-implement die_resolve_conflict as a call to error_resolve_conflict followed by a call to die. Consequently, the message printed by die_resolve_conflict changes from fatal: 'commit' is not possible because you have unmerged files. Please, fix them up in the work tree ... ... to error: 'commit' is not possible because you have unmerged files. hint: Fix them up in the work tree ... hint: ... fatal: Exiting because of an unresolved conflict. Hints are printed using the same advise function introduced in v1.7.3-rc0~26^2~3 (Introduce advise() to print hints, 2010-08-11). Inspired-by: Christian Couder <chistian.couder@gmail.com> Helped-by: Jonathan Nieder <jrnieder@gmail.com> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
13b70d2ad9
commit
38ef61cfde
31
advice.c
31
advice.c
@ -19,6 +19,15 @@ static struct {
|
|||||||
{ "detachedhead", &advice_detached_head },
|
{ "detachedhead", &advice_detached_head },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void advise(const char *advice, ...)
|
||||||
|
{
|
||||||
|
va_list params;
|
||||||
|
|
||||||
|
va_start(params, advice);
|
||||||
|
vreportf("hint: ", advice, params);
|
||||||
|
va_end(params);
|
||||||
|
}
|
||||||
|
|
||||||
int git_default_advice_config(const char *var, const char *value)
|
int git_default_advice_config(const char *var, const char *value)
|
||||||
{
|
{
|
||||||
const char *k = skip_prefix(var, "advice.");
|
const char *k = skip_prefix(var, "advice.");
|
||||||
@ -34,16 +43,24 @@ int git_default_advice_config(const char *var, const char *value)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NORETURN die_resolve_conflict(const char *me)
|
int error_resolve_conflict(const char *me)
|
||||||
{
|
{
|
||||||
if (advice_resolve_conflict)
|
error("'%s' is not possible because you have unmerged files.", me);
|
||||||
|
if (advice_resolve_conflict) {
|
||||||
/*
|
/*
|
||||||
* Message used both when 'git commit' fails and when
|
* Message used both when 'git commit' fails and when
|
||||||
* other commands doing a merge do.
|
* other commands doing a merge do.
|
||||||
*/
|
*/
|
||||||
die("'%s' is not possible because you have unmerged files.\n"
|
advise("Fix them up in the work tree,");
|
||||||
"Please, fix them up in the work tree, and then use 'git add/rm <file>' as\n"
|
advise("and then use 'git add/rm <file>' as");
|
||||||
"appropriate to mark resolution and make a commit, or use 'git commit -a'.", me);
|
advise("appropriate to mark resolution and make a commit,");
|
||||||
else
|
advise("or use 'git commit -a'.");
|
||||||
die("'%s' is not possible because you have unmerged files.", me);
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NORETURN die_resolve_conflict(const char *me)
|
||||||
|
{
|
||||||
|
error_resolve_conflict(me);
|
||||||
|
die("Exiting because of an unresolved conflict.");
|
||||||
}
|
}
|
||||||
|
3
advice.h
3
advice.h
@ -11,7 +11,8 @@ extern int advice_implicit_identity;
|
|||||||
extern int advice_detached_head;
|
extern int advice_detached_head;
|
||||||
|
|
||||||
int git_default_advice_config(const char *var, const char *value);
|
int git_default_advice_config(const char *var, const char *value);
|
||||||
|
void advise(const char *advice, ...);
|
||||||
|
int error_resolve_conflict(const char *me);
|
||||||
extern void NORETURN die_resolve_conflict(const char *me);
|
extern void NORETURN die_resolve_conflict(const char *me);
|
||||||
|
|
||||||
#endif /* ADVICE_H */
|
#endif /* ADVICE_H */
|
||||||
|
@ -214,15 +214,6 @@ static void write_cherry_pick_head(void)
|
|||||||
strbuf_release(&buf);
|
strbuf_release(&buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void advise(const char *advice, ...)
|
|
||||||
{
|
|
||||||
va_list params;
|
|
||||||
|
|
||||||
va_start(params, advice);
|
|
||||||
vreportf("hint: ", advice, params);
|
|
||||||
va_end(params);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void print_advice(void)
|
static void print_advice(void)
|
||||||
{
|
{
|
||||||
char *msg = getenv("GIT_CHERRY_PICK_HELP");
|
char *msg = getenv("GIT_CHERRY_PICK_HELP");
|
||||||
|
Loading…
Reference in New Issue
Block a user