Re: [PATCH v8 1/4] cache-tree: Create/update cache-tree on checkou
From: John Keeping <hidden>
Date: 2016-06-15 23:02:25
On Mon, Sep 01, 2014 at 04:49:28PM -0400, David Turner wrote:
On Sun, 2014-08-31 at 13:07 +0100, John Keeping wrote:quoted
On Fri, Jul 11, 2014 at 09:44:33PM -0700, David Turner wrote:quoted
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 <redacted> ---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 [off-list ref] 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