Re: [PATCH] Write index file on any checkout of files
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 28, 2008, 20:25 UTC
- Message-ID
- <7vfxvcj0b7.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <alpine.LNX.1.00.0802281058190.19665@iabervon.org>
Daniel Barkalow <barkalow@iabervon.org> writes:
> We need to rewrite the index file when we check out files, even if we > haven't modified the blob info by reading from another tree, so that > we get the stat cache to include the fact that we just modified the > file so it doesn't need to be refreshed.
Thanks, Alexandre, for spotting.
Show 19 quoted lines
> -static int checkout_paths(const char **pathspec)
> +static int checkout_paths(const char **pathspec, int newfd, struct lock_file *lock_file)
> {
> ...
> @@ -554,11 +549,14 @@ int cmd_checkout(int argc, const char **argv, const char *prefix)
> }
> }
>
> + int newfd;
> + struct lock_file *lock_file = xcalloc(1, sizeof(struct lock_file));
> + newfd = hold_locked_index(lock_file, 1);
> + read_cache();
> +
> if (source_tree)
> read_tree_some(source_tree, pathspec);
> - else
> - read_cache();
> - return checkout_paths(pathspec);
> + return checkout_paths(pathspec, newfd, lock_file);Aside from decl-after-statement, I suspect that at this point these all should go to checkout_paths() function itself, that takes pathspec and source_tree (which could be NULL), but that is only "logical code organization" issue. Thanks for fixing.
I however would have liked if this were caught while the topic was still cooking in 'next'.
There was a process failure somewhere, which makes me worry more than just this single bug that escaped to 'master'. Alex Riesen's segv fix in another thread makes it double X-<.