Johannes Schindelin <johannes.schindelin@xxxxxx> writes: > When converting the pull command to a builtin, the > require_clean_work_tree() function was renamed and the pull-specific > parts hard-coded. > > This makes it impossible to reuse the code, so let's modify the code to > make it more similar to the original shell script again. > > Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> > --- > builtin/pull.c | 29 +++++++++++++++++++---------- > 1 file changed, 19 insertions(+), 10 deletions(-) > > diff --git a/builtin/pull.c b/builtin/pull.c > index d4bd635..a3ed054 100644 > --- a/builtin/pull.c > +++ b/builtin/pull.c > @@ -365,10 +365,11 @@ static int has_uncommitted_changes(void) > * If the work tree has unstaged or uncommitted changes, dies with the > * appropriate message. > */ > -static void die_on_unclean_work_tree(void) > +static int require_clean_work_tree(const char *action, const char *hint, > + int gently) > { > struct lock_file *lock_file = xcalloc(1, sizeof(*lock_file)); > - int do_die = 0; > + int err = 0; > > hold_locked_index(lock_file, 0); > refresh_cache(REFRESH_QUIET); > @@ -376,20 +377,27 @@ static void die_on_unclean_work_tree(void) > rollback_lock_file(lock_file); > > if (has_unstaged_changes()) { > - error(_("Cannot pull with rebase: You have unstaged changes.")); > - do_die = 1; > + error(_("Cannot %s: You have unstaged changes."), _(action)); > + err = 1; > } > ... > + error(_("Cannot %s: Your index contains uncommitted changes."), > + _(action)); > + err = 1; These are much better than the one in v1. Depending on the target language, the translators may have to phrase these not like "Cannot <verb>:" but "Cannot perform <noun>:" where the "<noun>" is for "the act of doing <verb>", if the "cannot" part in their language needs to change shape depending on the verb. Hence, I think the translators need a /* TRANSLATORS: ... */ comment that tells them what is interpolated here are their translations for phrases like "pull with rebase". You do not have to be exhausitive in the comment; a representative example would help the translators see the message in context. Other than that (and the need to further clean-up error() and die() to begin with lower-case to match the modern practice in a separate follow-up series), this looks ready to be queued. Thanks.