From: Geert Bosch Date: Thu, 10 Sep 2009 14:00:18 GMT Subject: Re: [PATCHv5 00/14] git notes Message-ID: <8445CEA3-AC5D-4A38-9C73-B4E14BD4864C@adacore.com> In-Reply-To: <1252376822-6138-1-git-send-email-johan@herland.net> On Sep 7, 2009, at 22:26, Johan Herland wrote: > Yet another iteration of the 'git notes' feature. Rebased on top of > 'next': > - Patches 1-9 are unchanged from (patches 1-7, 11-12 of) the last > iteration. > - Patch 10 teaches the notes code to free its data structures on > request. > - Patch 11 introduces the 16-tree notes lookup code that handles > SHA1-based > fanout schemes. This is pretty much unchanged from patch 8 in the > previous > iteration. > - Patch 12 adds selftests that verify correct parsing of notes trees > with > various SHA1-based fanouts. > - Patch 13 introduces a flexible parser for a variety of date-based > and > SHA1-based fanout schemes. This is the interesting part, as far as > this > iteration is concerned. > - Patch 14 adds selftests that verify correct parsing of notes trees > with > various date-based fanouts. > > Note that the series does not yet include code for _writing_ notes > into a > suitably structured notes tree. That will be done in a later > iteration. > > I have some performance numbers that I will send in a separate email. Hi Johan, I've been following this series with some interest, and am curious why notes need to be stored in a separate data structure from regular objects. Note that I'm not questioning the design (and certainly would not want to, this late in the process), rather I'd like to learn about the reasons. I've wondered about this as well in the context of refs, reflog and git config. In a completely unified model, every change to the repository (except for the index, pack indices and working directory) would be a commit of the .git/ directory (again excluding indices). One of the advantages (besides allowing configuration management of the repository itself in addition to its contents) would be that no locking is ever required. This would be just an implementation detail without necessarily affecting the user interface other than direct inspection/modification of the .git directory, which is a similar to the move to packed refs. Again, I'm not proposing to change anything, just wondering about design rationale. -Geert