Re: [PATCH] hash binary sha1 into patch id
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Aug 13, 2010, 20:00 UTC
- Message-ID
- <20100813200031.GD2003@burratino>
- In-Reply-To
- <20100813094027.GA20906@localhost>
Clemens Buchacher wrote:
> Since commit 2f82f760 (Take binary diffs into account for "git rebase"), binary > files are included in patch ID computation. Binary files are diffed using the > text diff algorithm, however
[...]
> Instead of hashing the diff of binary files, use the post-image sha1, which is > just as unique. As a result, performance is much improved.
Maybe it should use both the pre- and post-image?
Show 11 quoted lines
> diff --git a/diff.c b/diff.c
> index 17873f3..20fc6db 100644
> --- a/diff.c
> +++ b/diff.c
> @@ -3758,6 +3758,12 @@ static int diff_get_patch_id(struct diff_options *options, unsigned char *sha1)
> len2, p->two->path);
> git_SHA1_Update(&ctx, buffer, len1);
>
> + if (diff_filespec_is_binary(p->two)) {
> + len1 = sprintf(buffer, "%s", sha1_to_hex(p->two->sha1));
> + git_SHA1_Update(&ctx, buffer, len1);i.e., maybe also
git_SHA1_Update(&ctx, sha1_to_hex(p->one->sha1), 40);
Luckily this is after the filenames and so on have been incorporated, so there’s no need to add that specially.