Re: git bugs
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 12, 2008, 20:06 UTC
- Message-ID
- <7v4p7y1kqu.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <alpine.LFD.1.10.0806101028040.3101@woody.linux-foundation.org>
Linus Torvalds <torvalds@linux-foundation.org> writes:
> The other approach is to know that an empty blob always has a very > specific SHA1. Here's an trial patch.
Show 20 quoted lines
> read-cache.c | 16 ++++++++++++++++
> 1 files changed, 16 insertions(+), 0 deletions(-)
>
> diff --git a/read-cache.c b/read-cache.c
> index 8e5fbb6..f83de8c 100644
> --- a/read-cache.c
> +++ b/read-cache.c
> ...
> @@ -193,6 +203,12 @@ static int ce_match_stat_basic(struct cache_entry *ce, struct stat *st)
> if (ce->ce_size != (unsigned int) st->st_size)
> changed |= DATA_CHANGED;
>
> + /* Racily smudged entry? */
> + if (!ce->ce_size) {
> + if (!is_empty_blob_sha1(ce->sha1))
> + changed |= DATA_CHANGED;
> + }
> +
> return changed;
> }Thanks. This would be a good fix to the issue.
The only theoretical worry I can think of is if there is an insane convert_to_worktree() filter that turns a non-empty blob into an empty work tree file.
An "In blobs, always store everything as UTF16 with BOM" filter, when badly implemented, might turn an empty work tree file into a blob with BOM and nothing else in it, but we can safely declare that such use case is simply insane and broken ;-).