git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] hash binary sha1 into patch id

From
Clemens Buchacher <drizzd@aon.at>
Date
Aug 13, 2010, 21:23 UTC
Message-ID
<20100813212331.GA24127@localhost>
In-Reply-To
<20100813200031.GD2003@burratino>
Hi Jonathan,
On Fri, Aug 13, 2010 at 03:00:31PM -0500, Jonathan Nieder wrote:
Show 10 quoted lines
> 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?

That would make the patch ID more correct in that it will identify a particular change. But ultimately, we want to know whether or not a change has been applied already. If the contents of a binary file are the same in both commits, this is almost certainly true, regardless of whether or not the pre-images match.

So I think we get better behavior if we ignore the pre-image. Although the difference is probably minuscule.

Show 17 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);
Thanks.
Previous: Jonathan NiederNext: Jonathan Nieder
Message 3 of 13 in “hash binary sha1 into patch id”
  1. hash binary sha1 into patch idClemens Buchacher, Aug 13, 2010
  2. Jonathan NiederAug 13, 2010
  3. Clemens BuchacherAug 13, 2010
  4. Jonathan NiederAug 13, 2010
  5. Clemens BuchacherAug 13, 2010
  6. hash binary sha1 into patch idClemens Buchacher, Aug 15, 2010
  7. Jonathan NiederAug 15, 2010
  8. Marat RadchenkoSep 10, 2010
  9. Clemens BuchacherSep 10, 2010
  10. Marat RadchenkoOct 13, 2010
  11. Marat RadchenkoOct 13, 2010
  12. Clemens BuchacherOct 13, 2010
  13. Marat RadchenkoOct 14, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.