git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v8 1/4] cache-tree: Create/update cache-tree on checkou

From
John Keeping <john@keeping.me.uk>
Date
Sep 1, 2014, 22:13 UTC
Message-ID
<20140901221357.GD1240@serenity.lan>
In-Reply-To
<1409604568.3057.8.camel@leckie>
On Mon, Sep 01, 2014 at 04:49:28PM -0400, David Turner wrote:
Show 25 quoted lines
> On Sun, 2014-08-31 at 13:07 +0100, John Keeping wrote:
> > On Fri, Jul 11, 2014 at 09:44:33PM -0700, David Turner wrote:
> > > When git checkout checks out a branch, create or update the
> > > cache-tree so that subsequent operations are faster.
> > > 
> > > update_main_cache_tree learned a new flag, WRITE_TREE_REPAIR.  When
> > > WRITE_TREE_REPAIR is set, portions of the cache-tree which do not
> > > correspond to existing tree objects are invalidated (and portions which
> > > do are marked as valid).  No new tree objects are created.
> > > 
> > > Signed-off-by: David Turner <dturner@twitter.com>
> > > ---
> > 
> > This causes an incorrect error message to be printed when switching
> > branches with staged changes in a subdirectory.  The test case is pretty
> > simple:
> <snip>
> 
> I tried to reproduce this problem, but I could not.  I tried to
> reproduce against just this patch 1/4, and also against all 4 of the
> patches.  Can you reproduce this on Junio's 'next' branch, which
> includes this series of patches?
> 
> Do you have some sort of unusual configuration that might cause
> different results? 

I don't think so. I wondered if "status.branch=true" in the config could do it, but there's no difference turning that off. The rest of the config looks like this:

-- >8 -- core.excludesfile=~/.gitexcludes push.default=upstream color.ui=auto [snip alias.*] [snip user.*] [snip url.*.insteadof] [snip sendemail.*] rebase.autosquash=true mailinfo.scissors=true format.thread=true rerere.enabled=true status.branch=true pull.ff=true credential.helper=cache diff.tool=vimdiff merge.tool=vimdiff core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true -- 8< --

The following script (run from the Git source directory) bisects down to:

	aecf567cbfb6ab46e82f7f5df36fb6a2dd5bee69 is the first bad commit
	commit aecf567cbfb6ab46e82f7f5df36fb6a2dd5bee69
	Author: David Turner <dturner@twopensource.com>
	Date:   Sat Jul 5 21:06:56 2014 -0700
	    cache-tree: create/update cache-tree on checkout
-- >8 --
#!/bin/sh
git init test &&
(
	cd test &&
	mkdir sub &&
	echo one >sub/one &&
	git add sub/one &&
	git commit -m one &&
	echo two >sub/two &&
	git add sub/two &&
	git branch other
) &&
cat >BISECT.sh <<\EOF &&
#!/bin/sh
make -j4 &&
cd test &&
../bin-wrappers/git checkout other 2>&1 | grep 'error:'
result=$?
git checkout master
if test $result = 0
then
	exit 1
else
	exit 0
fi
EOF
chmod +x BISECT.sh &&
git bisect start origin/next origin/master &&
git bisect run ./BISECT.sh
Previous: David TurnerNext: Junio C Hamano
Message 22 of 28 in “cache-tree: Create/update cache-tree on checkout”
  1. 1/4 cache-tree: Create/update cache-tree on checkoutDavid Turner, Jul 12, 2014
  2. 2/4 test-dump-cache-tree: invalid trees are not errorsDavid Turner, Jul 12, 2014
  3. 3/4 cache-tree: subdirectory testsDavid Turner, Jul 12, 2014
  4. 4/4 cache-tree: Write updated cache-tree after commitDavid Turner, Jul 12, 2014
  5. Duy NguyenJul 13, 2014
  6. Junio C HamanoJul 14, 2014
  7. Ramsay JonesJul 14, 2014
  8. Junio C HamanoJul 14, 2014
  9. Ramsay JonesJul 14, 2014
  10. Junio C HamanoJul 14, 2014
  11. David TurnerJul 14, 2014
  12. Duy NguyenJul 15, 2014
  13. Junio C HamanoJul 15, 2014
  14. Duy NguyenJul 15, 2014
  15. Junio C HamanoJul 15, 2014
  16. Duy NguyenJul 16, 2014
  17. Junio C HamanoJul 16, 2014
  18. Junio C HamanoJul 14, 2014
  19. lockfile: allow reopening a closed but still locked fileJunio C Hamano, Jul 14, 2014
  20. John KeepingAug 31, 2014
  21. David TurnerSep 1, 2014
  22. John KeepingSep 1, 2014
  23. Junio C HamanoSep 2, 2014
  24. Junio C HamanoSep 2, 2014
  25. cache-tree: propagate invalidation up when puntingJunio C Hamano, Sep 2, 2014
  26. cache-tree: do not try to use an invalidated subtree info to build a treeJunio C Hamano, Sep 2, 2014
  27. David TurnerSep 3, 2014
  28. Eric SunshineSep 3, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.