Hi, On Mon, 10 Aug 2009, Nguyễn Thái Ngọc Duy wrote: > diff --git a/unpack-trees.c b/unpack-trees.c > index f407bf5..d087112 100644 > --- a/unpack-trees.c > +++ b/unpack-trees.c > @@ -530,8 +530,10 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options > if (o->trivial_merges_only && o->nontrivial_merge) > return unpack_failed(o, "Merge requires file-level merging"); > > - if (run_sparse_hook(o)) > - return unpack_failed(o, NULL); > + if (!o->no_sparse_hook) { > + if (run_sparse_hook(o)) > + return unpack_failed(o, NULL); > + } > IMHO this would read nicelier as if (!o->no_sparse_hook && run_sparse_hook(o)) return unpack_failed(o, NULL); > diff --git a/unpack-trees.h b/unpack-trees.h > index ad21823..81eb2ef 100644 > --- a/unpack-trees.h > +++ b/unpack-trees.h > @@ -30,6 +30,7 @@ struct unpack_trees_options { > skip_unmerged, > initial_checkout, > diff_index_cached, > + no_sparse_hook, > gently; Hmm. I understand that the assumption is that memset(&opts, 0, sizeof(opts)); should give you a sensible default, but I cannot avoid noticing that "no_sparse_hook = 0" is a double negation, something to be avoided... Thanks, Dscho