Message ID | d52bcad326ece6be2fcf87ca6b72e4ce8212e31f.1612812581.git.matheus.bernardino@usp.br (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | checkout-index: some cleanups to --temp and --prefix outputs | expand |
Matheus Tavares <matheus.bernardino@usp.br> writes: > The variables `path` and `ce->name`, at write_entry(), usually have the > same contents, but that's not the case when using a checkout prefix or > 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.) Sounds reasonable. Don't we want to protect this fix with tests? > Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> > --- > entry.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/entry.c b/entry.c > index a0532f1f00..7b9f43716f 100644 > --- a/entry.c > +++ b/entry.c > @@ -282,7 +282,7 @@ static int write_entry(struct cache_entry *ce, > new_blob = read_blob_entry(ce, &size); > if (!new_blob) > return error("unable to read sha1 file of %s (%s)", > - path, oid_to_hex(&ce->oid)); > + ce->name, oid_to_hex(&ce->oid)); > > /* > * We can't make a real symlink; write out a regular file entry > @@ -309,7 +309,7 @@ static int write_entry(struct cache_entry *ce, > new_blob = read_blob_entry(ce, &size); > if (!new_blob) > return error("unable to read sha1 file of %s (%s)", > - path, oid_to_hex(&ce->oid)); > + ce->name, oid_to_hex(&ce->oid)); > } > > /* > @@ -354,7 +354,7 @@ static int write_entry(struct cache_entry *ce, > > case S_IFGITLINK: > if (to_tempfile) > - return error("cannot create temporary submodule %s", path); > + return error("cannot create temporary submodule %s", ce->name); > if (mkdir(path, 0777) < 0) > return error("cannot create submodule directory %s", path); > sub = submodule_from_ce(ce); > @@ -365,7 +365,7 @@ static int write_entry(struct cache_entry *ce, > break; > > default: > - return error("unknown file mode for %s in index", path); > + return error("unknown file mode for %s in index", ce->name); > } > > finish:
On Tue, Feb 9, 2021 at 6:27 PM Junio C Hamano <gitster@pobox.com> wrote: > > Matheus Tavares <matheus.bernardino@usp.br> writes: > > > The variables `path` and `ce->name`, at write_entry(), usually have the > > same contents, but that's not the case when using a checkout prefix or > > 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.) > > Sounds reasonable. Don't we want to protect this fix with tests? Yeah, good idea. I will add a couple tests to check the error message on missing blobs and when trying to write a submodule to a tempfile. This should cover 3 out of the 4 error() calls changed in this patch. (The last one would be when ce->mode is unknown. I'm not sure if/how I can trigger that case.)
diff --git a/entry.c b/entry.c index a0532f1f00..7b9f43716f 100644 --- a/entry.c +++ b/entry.c @@ -282,7 +282,7 @@ static int write_entry(struct cache_entry *ce, new_blob = read_blob_entry(ce, &size); if (!new_blob) return error("unable to read sha1 file of %s (%s)", - path, oid_to_hex(&ce->oid)); + ce->name, oid_to_hex(&ce->oid)); /* * We can't make a real symlink; write out a regular file entry @@ -309,7 +309,7 @@ static int write_entry(struct cache_entry *ce, new_blob = read_blob_entry(ce, &size); if (!new_blob) return error("unable to read sha1 file of %s (%s)", - path, oid_to_hex(&ce->oid)); + ce->name, oid_to_hex(&ce->oid)); } /* @@ -354,7 +354,7 @@ static int write_entry(struct cache_entry *ce, case S_IFGITLINK: if (to_tempfile) - return error("cannot create temporary submodule %s", path); + return error("cannot create temporary submodule %s", ce->name); if (mkdir(path, 0777) < 0) return error("cannot create submodule directory %s", path); sub = submodule_from_ce(ce); @@ -365,7 +365,7 @@ static int write_entry(struct cache_entry *ce, break; default: - return error("unknown file mode for %s in index", path); + return error("unknown file mode for %s in index", ce->name); } finish:
The variables `path` and `ce->name`, at write_entry(), usually have the same contents, but that's not the case when using a checkout prefix or 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.) Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> --- entry.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)