From: Mathieu Liénard--Mayor Date: Mon, 10 Jun 2013 14:57:00 GMT Subject: Re: [PATCH v2 1/2] rm: better error message on failure for multiple files Message-ID: <580989b4b95a7302a42c7f25024c3375@ensibm.imag.fr> In-Reply-To: Le 2013-06-10 16:38, Matthieu Moy a écrit : > Mathieu Lienard--Mayor > writes: > >> When 'git rm' fails, it now displays a single message >> with the list of files involved, instead of displaying >> a list of messages with one file each. >> >> As an example, the old message: >> error: 'foo.txt' has changes staged in the index >> (use --cached to keep the file, or -f to force removal) >> error: 'bar.txt' has changes staged in the index >> (use --cached to keep the file, or -f to force removal) >> >> would now be displayed as: >> error: the following files have changes staged in the index: >> foo.txt >> bar.txt >> (use --cached to keep the file, or -f to force removal) >> >> Signed-off-by: Mathieu Lienard--Mayor >> >> Signed-off-by: Jorge Juan Garcia Garcia >> >> Signed-off-by: Matthieu Moy list > > There's a "list" after my email, probably a typo. yes, that's a leftover from a rebase-i > >> +/* >> + * PRECONDITION: files_list is a non-empty string_list >> + */ > > Avoid repeating in comments what the code already says. "file_list is > non-empty" is sufficient, we already know it's a string_list. Okay > >> + if (files_staged.nr) >> + errs = print_error_files(&files_staged, >> + _("the following files have staged " >> + "content different from both the" >> + "\nfile and the HEAD:"), >> + _("\n(use -f to force removal)")); >> + if (files_cached.nr) >> + errs = print_error_files(&files_cached, >> + _("the following files have changes " >> + "staged in the index:"), >> + _("\n(use --cached to keep the file, " >> + "or -f to force removal)")); > > What happens if both conditions are true? It seems the second will > override the first. I think it'd be OK because what matters is that > errs > is set by someone, no matter who, and the error message is displayed > on > screen, not contained in the variable, but this looks weird. > > I'd find it more readable with "errs |= print_error_files(...)". Well the current code is only using errs=error(...), using the same variable errs over and over, no matter how many times it loops. That's why i implemented it similarly. > > And actually, you may want to move the if (....nr) inside > print_error_files (wich could then be called > print_error_files_maybe). > > At least, there should be a test where two conditions are true. I'll do that, to be sure about the behaviour. > >> + if (files_submodule.nr) >> + errs = print_error_files(&files_submodule, >> + _("the following submodules (or one " >> + "of its nested submodule) use a " >> + ".git directory:"), >> + _("\n(use 'rm -rf' if you really " >> + "want to remove i including all " > > i -> it > ? -- Mathieu Liénard--Mayor, 2nd year at Grenoble INP - ENSIMAG (+33)6 80 56 30 02