Re: git checkout under 1.7.6 does not properly list untracked files and aborts
From: Michael J Gruber <hidden>
Date: 2016-06-15 22:52:05
Nguyen Thai Ngoc Duy venit, vidit, dixit 21.09.2011 10:58:
quoted hunk ↗ jump to hunk
On Wed, Sep 21, 2011 at 10:28:59AM +0200, Michael J Gruber wrote:quoted
So, I bisected it. The first bad commit is 9037026 (unpack-trees: fix sparse checkout's "unable to match directories", 2010-11-27) although the real culprit may be its predecessor 2431afb (unpack-trees: move all skip-worktree checks back to unpack_trees(), 2010-11-27) which does not compile: CC unpack-trees.o unpack-trees.c: In function 'mark_new_skip_worktree': unpack-trees.c:852:75: error: 'o' undeclared (first use in this function) unpack-trees.c:852:75: note: each undeclared identifier is reported only once for each function it appears in make: *** [unpack-trees.o] Error 1This may help --8<--diff --git a/unpack-trees.c b/unpack-trees.c index a6518db..a239af7 100644 --- a/unpack-trees.c +++ b/unpack-trees.c@@ -245,13 +245,13 @@ static int check_updates(struct unpack_trees_options *o) static int verify_uptodate_sparse(struct cache_entry *ce, struct unpack_trees_options *o); static int verify_absent_sparse(struct cache_entry *ce, enum unpack_trees_error_types, struct unpack_trees_options *o); -static int will_have_skip_worktree(const struct cache_entry *ce, struct unpack_trees_options *o) +static int will_have_skip_worktree(const struct cache_entry *ce, struct exclude_list *el) { const char *basename; basename = strrchr(ce->name, '/'); basename = basename ? basename+1 : ce->name; - return excluded_from_list(ce->name, ce_namelen(ce), basename, NULL, o->el) <= 0; + return excluded_from_list(ce->name, ce_namelen(ce), basename, NULL, el) <= 0; } static int apply_sparse_checkout(struct cache_entry *ce, struct unpack_trees_options *o)@@ -849,7 +849,7 @@ static void mark_new_skip_worktree(struct exclude_list *el, if (select_flag && !(ce->ce_flags & select_flag)) continue; - if (!ce_stage(ce) && will_have_skip_worktree(ce, o)) + if (!ce_stage(ce) && will_have_skip_worktree(ce, el)) ce->ce_flags |= skip_wt_flag; else ce->ce_flags &= ~skip_wt_flag; --8<--quoted
Duy, sorry for prodding you again.No problem (and sorry for breaking the build). I'll also have a look at this problem.
Thanks. I can confirm that with the above patch, the code compiles and fails my test. So it's the earlier of the two commits which introduces this. Michael