Changes since v1: - Added regression tests in first patch. - Left the `topath[]` cleanup outside the if block on patch 2, to make it easier to read. Matheus Tavares (2): write_entry(): fix misuses of `path` in error messages checkout-index: omit entries with no tempname from --temp output builtin/checkout-index.c | 35 ++++++++++++++++++++++----------- entry.c | 8 ++++---- t/t2006-checkout-index-basic.sh | 23 ++++++++++++++++++++++ 3 files changed, 51 insertions(+), 15 deletions(-) Range-diff against v1: 1: d52bcad326 ! 1: bdda5f99d0 write_entry(): fix misuses of `path` in error messages @@ Commit message writing to a tempfile. (In fact, `path` will be either empty or dirty when writing to a tempfile.) Therefore, these variables cannot be used interchangeably. In this sense, fix wrong uses of `path` in error - messages where it should really be `ce->name`. (There doesn't seem to be - any misuse in the other way around.) + messages where it should really be `ce->name`, and add some regression + tests. (Note: there doesn't seem to be any misuse in the other way + around.) Signed-off-by: Matheus Tavares <matheus.bernardino@xxxxxx> @@ entry.c: static int write_entry(struct cache_entry *ce, } finish: + + ## t/t2006-checkout-index-basic.sh ## +@@ t/t2006-checkout-index-basic.sh: test_expect_success 'checkout-index reports errors (stdin)' ' + test_i18ngrep not.in.the.cache stderr + ' + ++test_expect_success 'checkout-index --temp correctly reports error on missing blobs' ' ++ test_when_finished git reset --hard && ++ missing_blob=$(git hash-object --stdin </dev/null) && ++ cat >objs <<-EOF && ++ 100644 $missing_blob file ++ 120000 $missing_blob symlink ++ EOF ++ git update-index --index-info <objs && ++ ++ test_must_fail git checkout-index --temp symlink file 2>stderr && ++ test_i18ngrep "unable to read sha1 file of file ($missing_blob)" stderr && ++ test_i18ngrep "unable to read sha1 file of symlink ($missing_blob)" stderr ++' ++ ++test_expect_success 'checkout-index --temp correctly reports error for submodules' ' ++ git init sub && ++ test_commit -C sub file && ++ git submodule add ./sub && ++ git commit -m sub && ++ test_must_fail git checkout-index --temp sub 2>stderr && ++ test_i18ngrep "cannot create temporary submodule sub" stderr ++' ++ + test_done 2: 1275701345 ! 2: 6ece1947c1 checkout-index: omit entries with no tempname from --temp output @@ builtin/checkout-index.c: static struct checkout state = CHECKOUT_INIT; + putchar('\t'); + write_name_quoted_relative(name, prefix, stdout, + nul_term_line ? '\0' : '\n'); ++ } -- for (i = 0; i < 4; i++) { -- topath[i][0] = 0; -+ for (i = 0; i < 4; i++) { -+ topath[i][0] = 0; -+ } - } - } - + for (i = 0; i < 4; i++) { + topath[i][0] = 0; -- 2.29.2