Re: [PATCH v2 2/5] pull: make code more similar to the shell script again
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 12, 2016, 18:56 UTC
- Message-ID
- <xmqqtwdl2bhm.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <c448851c24599d73143bce90984b9efc43d4a7aa.1473580914.git.johannes.schindelin@gmx.de>
Johannes Schindelin <johannes.schindelin@gmx.de> writes:
Show 43 quoted lines
> 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@gmx.de>
> ---
> 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.