From: Nguyen Thai Ngoc Duy Date: Tue, 11 Aug 2009 01:47:53 GMT Subject: Re: [RFC PATCH v2 3/4] unpack_trees(): add support for sparse checkout Message-ID: In-Reply-To: 2009/8/10 Johannes Schindelin : > Hi, > > On Mon, 10 Aug 2009, Nguyễn Thái Ngọc Duy wrote: > >> This patch teaches unpack_trees() to checkout/remove entries on working >> directories appropriately when sparse checkout area is changed. Hook >> "sparse" is needed to help determine which entry will be checked out, >> which will not be. >> >> When the hook is run, it is prepared with a pseudo index. The hook then >> can use "git update-index --[no-]assume-unchanged" to manipulate the >> index. It should not do anything else on the index. Assume unchanged >> information from the index will be used to shape working directory. > > If I understand correctly, the purpose of the hook is to allow the user to > mark something as unwanted preemptively, right? > > If that is the sole reason for the hook, would it not be better to add > support for a file .git/info/sparse which has the same syntax as > .git/info/exclude, and which is used to determine if an > added/modified/deleted file is supposed to be in the "sparse" area or not? > > Something like > >        * >        !/Documentation/ > > comes to mind. That was what the original series was about (although I used git config instead of .git/info/sparse). The hook has two advantages: - flexibility: you can set things differently based on branch, for example, or filter files based on certain file content. - less code bloat (and less intrusive too), compare ~1000 lines of change of the original series with this series. -- Duy