From: Junio C Hamano Date: Tue, 17 Aug 2010 21:18:39 GMT Subject: Re: [RFC/PATCH 1/2] commit: add parse_commit_repl() to replace commits at parsing time Message-ID: <7vbp91aqfk.fsf@alter.siamese.dyndns.org> In-Reply-To: <20100817015901.5592.25471.chriscool@tuxfamily.org> Christian Couder 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?