Can you actually keep the email address as my Twopensource one? I want to make sure that Twitter, my employer at the time, gets credit for this work (just as I want to make sure that my current employer, Two Sigma, gets credit for my current work). Please feel free to add Signed-off-by: David Turner <dturner@xxxxxxxxxxxx> in case that makes tracking easier. Thanks. WRT the actual patch, I want to note that past me did not do a great job here. The tests do not correctly check that the post-checkout untracked cache is still valid after a checkout. For example, let's say that previously, the directory foo was entirely untracked (but it contained a file bar), but after the checkout, there is a file foo/baz. Does the untracked cache need to get updated? Unfortunately, the untracked cache is very unlikely to make it to the top of my priority list any time soon, so I won't be able to correct this test (and, if necessary, correct the code). But I would strongly suggest that the test be improved before this code is merged. Thanks for CCing me. > -----Original Message----- > From: Christian Couder [mailto:christian.couder@xxxxxxxxx] > Sent: Monday, May 8, 2017 6:12 AM > To: Johannes Schindelin <johannes.schindelin@xxxxxx> > Cc: git <git@xxxxxxxxxxxxxxx>; Junio C Hamano <gitster@xxxxxxxxx>; Nguyễn > Thái Ngọc Duy <pclouds@xxxxxxxxx>; Ben Peart <benpeart@xxxxxxxxxxxxx>; > David Turner <David.Turner@xxxxxxxxxxxx> > Subject: Re: [PATCH 0/1] Preserve the untracked cache across checkout, reset -- > hard, etc > > (Adding Dave in Cc as it looks like he is involved.) > > On Mon, May 8, 2017 at 11:41 AM, Johannes Schindelin > <johannes.schindelin@xxxxxx> wrote: > > I recently sent out a request for assistance, after noticing that the > > untracked cache is simply thrown away after operations such as `git > > checkout` or `git reset --hard`: > > > > http://public-inbox.org/git/alpine.DEB.2.20.1705031202470.3480@virtual > > box/ > > > > Duy responded with some high-level reasoning that it should be > > possible to simply reuse the untracked cache data structure in the new > > index, as he had a gut feeling that "we do invalidation right". > > > > I did not have time to back that up by a thorough analysis of the > > code, but it turns out that it is unnecessary: Ben Peart pointed me to > > a patch of Dave Turner's that was submitted as part of the watchman > > series, addressing the very issue about which I was concerned. > > > > And I trust Dave to have validated the idea that the untracked cache > > invalidation "is done right" even when we simply move the pointer to a > > different index_state struct than originally. > > > > Seeing as the untracked cache being dropped unceremoniously when it > > should not be dropped, in a surprising number of operations, I think > > it is a sensible change, and important, too, and independent enough > > from the watchman patches to merit being separated out and applied > > pretty soon. > > > > So what I did was simply to drop the two lines from this patch that > > referred to index_state fields added by Dave's watchman patch series. > > > > Please do not mistake this for a sign that I am disinterested in > > watchman support, far from it... stay tuned ;-) > > > > Oh, and I adjusted Dave's email address. Dave, is that okay? > > > > As we are in a feature freeze phase, I was debating whether to send > > out this patch now or later. > > > > Having thought about it for quite a bit, I am now convinced that this > > patch fixes a bug in the untracked cache feature that is so critical > > as to render it useless: if you > > > > - have to switch between branches frequently, or > > - rebase frequently (which calls `git reset --hard`), or > > - stash frequently (which calls `git reset --hard`), > > > > it is as if you had not enabled the untracked cache at all. Even > > worse, Git will do a ton of work to recreate the untracked cache and > > to store it as an index extension, *just* to throw the untracked away in the > end. > > > > > > David Turner (1): > > unpack-trees: preserve index extensions > > > > cache.h | 1 + > > read-cache.c | 6 ++++++ > > t/t7063-status-untracked-cache.sh | 22 ++++++++++++++++++++++ > > unpack-trees.c | 1 + > > 4 files changed, 30 insertions(+) > > > > > > base-commit: 4fa66c85f11bc5a541462ca5ae3246aa0ce02e74 > > Published-As: > > https://github.com/dscho/git/releases/tag/preserve-untracked-cache-v1 > > Fetch-It-Via: git fetch https://github.com/dscho/git > > preserve-untracked-cache-v1 > > > > -- > > 2.12.2.windows.2.800.gede8f145e06 > >