Re: [RFC/PATCH 1/2] commit: add parse_commit_repl() to replace commits at parsing time
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 17, 2010, 21:18 UTC
- Message-ID
- <7vbp91aqfk.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <20100817015901.5592.25471.chriscool@tuxfamily.org>
Christian Couder <chriscool@tuxfamily.org> writes:
> The function parse_commit() is not safe regarding replaced commits > because it uses the buffer of the replacement commit but the object > part of the commit struct stay the same. Especially the sha1 is not > changed so it doesn't match the content of the commit.
This all sounds backwards to me, if I am reading the discussion correctly.
If a replace record says commit 0123 is replaced by commit 4567 (iow, 0123 was a mistake, and pretend that its content is what is recorded in 4567), and when we are honoring the replace records (iow, we are not fsck), shouldn't read_sha1("0123") give us a piece of memory that stores what is recorded in 4567, parse_object("0123") return a struct commit whose buffer points at a block of memory that has what is recorded in 4567 _while_ its object.sha1[] say "0123"?
What problem are you trying to solve?