Duy Nguyen <pclo...@gmail.com> writes:

> Thank you both for catching this. Just a small suggestion. Perhaps we
> should do this instead. apply_sparse_checkout() is the function where
> all "action" manipulation (add, delete, update files..) for sparse
> checkout occurs and it should not ask to delete and update both at the
> same time.

Sounds good.  The first hunk may merely be a noise, but the second
one is the true bugfix for the issue observed, I think.

>
> -- 8< --
> diff --git a/unpack-trees.c b/unpack-trees.c
> index 2927660..d6cf849 100644
> --- a/unpack-trees.c
> +++ b/unpack-trees.c
> @@ -224,6 +224,9 @@ static int check_updates(struct unpack_trees_options *o)
>               struct cache_entry *ce = index->cache[i];
>  
>               if (ce->ce_flags & CE_UPDATE) {
> +                     if (ce->ce_flags & CE_WT_REMOVE)
> +                             die("BUG: both update and delete flags are set 
> on %s",
> +                                 ce->name);
>                       display_progress(progress, ++cnt);
>                       ce->ce_flags &= ~CE_UPDATE;
>                       if (o->update && !o->dry_run) {
> @@ -293,6 +296,7 @@ static int apply_sparse_checkout(struct index_state 
> *istate,
>               if (!(ce->ce_flags & CE_UPDATE) && verify_uptodate_sparse(ce, 
> o))
>                       return -1;
>               ce->ce_flags |= CE_WT_REMOVE;
> +             ce->ce_flags &= ~CE_UPDATE;
>       }
>       if (was_skip_worktree && !ce_skip_worktree(ce)) {
>               if (verify_absent_sparse(ce, 
> ERROR_WOULD_LOSE_UNTRACKED_OVERWRITTEN, o))
> -- 8< --
>
> --
> Duy
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to