Re: [PATCH] Avoid accessing a slow working copy during diffcore operations.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"Shawn O. Pearce" <spearce@xxxxxxxxxxx> writes:

> If Git is compiled with NO_FAST_WORKING_DIRECTORY set then we will
> avoid looking at the working directory when the blob in question
> is available within a packfile and the caller doesn't need the data
> unpacked into a temporary file.

I'd take the patch as is, but...

> -static int work_tree_matches(const char *name, const unsigned char *sha1)
> +static int work_tree_matches(const char *name, const unsigned char *sha1, int want_file)

this feels wrong.  It is not about "work tree matches" anymore.
reuse_worktree_copy(), perhaps.

> @@ -1193,6 +1193,20 @@ static int work_tree_matches(const char *name, const unsigned char *sha1)
>  	if (!active_cache)
>  		return 0;
>  
> +#ifdef NO_FAST_WORKING_DIRECTORY
> +	/* We want to avoid the working directory if our caller
> +	 * doesn't need the data in a normal file, this system
> +	 * is rather slow with its stat/open/mmap/close syscalls,
> +	 * and the object is contained in a pack file.  The pack
> +	 * is probably already open and will be faster to obtain
> +	 * the data through than the working directory.  Loose
> +	 * objects however would tend to be slower as they need
> +	 * to be individually opened and inflated.
> +	 */
> +	if (!want_file && has_sha1_pack(sha1, NULL))
> +		return 0;
> +#endif
> +

Also I'd prefer doing this without #ifdef;

        if (defined(NO_FAST_WORKING_DIRECTORY) &&
        	!want_file && has_sha1_pack(sha1, NULL))
		return 0;

-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]