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

Re: [PATCH 11/16] unpack_trees(): add support for narrow checkout

From
Nguyen Thai Ngoc Duy <pclouds@gmail.com>
Date
Sep 16, 2008, 11:45 UTC
Message-ID
<fcaeb9bf0809160445i29e109d7q2e29964ad3e542fa@mail.gmail.com>
In-Reply-To
<7vsks1b3tq.fsf@gitster.siamese.dyndns.org>
On 9/16/08, Junio C Hamano <gitster@pobox.com> wrote:
Show 48 quoted lines
> Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
>
>  > diff --git a/cache.h b/cache.h
>  > index 2b2c90f..1fc0f83 100644
>  > --- a/cache.h
>  > +++ b/cache.h
>  > @@ -167,6 +167,9 @@ struct cache_entry {
>  >  #define CE_HASHED    (0x100000)
>  >  #define CE_UNHASHED  (0x200000)
>  >
>  > +/* Only remove in work directory, not index */
>  > +#define CE_WD_REMOVE (0x400000)
>  > +
>  >  /*
>  >   * Extended on-disk flags
>  >   */
>  > diff --git a/unpack-trees.c b/unpack-trees.c
>  > index e59d144..968cc98 100644
>  > --- a/unpack-trees.c
>  > +++ b/unpack-trees.c
>  > @@ -96,6 +96,15 @@ static int check_updates(struct unpack_trees_options *o)
>  >       if (o->update && o->verbose_update) {
>  >               for (total = cnt = 0; cnt < index->cache_nr; cnt++) {
>  >                       struct cache_entry *ce = index->cache[cnt];
>  > +
>  > +                     if (ce->ce_flags & CE_WD_REMOVE) {
>  > +                             total++;
>  > +                             continue;
>  > +                     }
>  > +
>  > +                     if (ce_no_checkout(ce))
>  > +                             continue;
>  > +
>  >                       if (ce->ce_flags & (CE_UPDATE | CE_REMOVE))
>  >                               total++;
>  >               }
>
>
> This check for ce_no_checkout() before the existing check to see if
>  CE_UPDATE and/or CE_REMOVE are on puzzles me (you have the same check
>  sequence in later loop that does the actualy worktree updates).  If
>  apply_narrow_checkout() check is working correctly, would we ever give
>  CE_UPDATE and/or CE_REMOVE bits to a cache entry with CE_NO_CHECKOUT set?
>
>  IOW, I think this extra check is Ok as it is expected to be no-op when
>  combined with the existing check, but it leaves me wondering if it is
>  hiding some codepath that incorrectly sets CE_UPDATE/CE_REMOVE to an entry
>  outside the narrow checkout area.

Gaaah.. I was confused with older series where verify_uptodate() was patched to ignore missing files. You are right, the check is not necessary, will need more test for this. With the current patch, it will fail to merge as soon as some files need to be updated outside narrow area.

-- 
Duy
Previous: Junio C HamanoNext: Jakub Narebski
Message 30 of 35 in “Narrow/Partial/Sparse checkout”
  1. 00/16 Narrow/Partial/Sparse checkoutNguyễn Thái Ngọc Duy, Sep 14, 2008
  2. 01/16 Extend index to save more flagsNguyễn Thái Ngọc Duy, Sep 14, 2008
  3. 02/16 Introduce CE_NO_CHECKOUT bitNguyễn Thái Ngọc Duy, Sep 14, 2008
  4. 03/16 update-index: refactor mark_valid() in preparation for new optionsNguyễn Thái Ngọc Duy, Sep 14, 2008
  5. 04/16 update-index: add --checkout/--no-checkout to update CE_NO_CHECKOUT bitNguyễn Thái Ngọc Duy, Sep 14, 2008
  6. 05/16 ls-files: add --narrow-checkout option to "will checkout" entriesNguyễn Thái Ngọc Duy, Sep 14, 2008
  7. 06/16 Add tests for updating no-checkout entries in indexNguyễn Thái Ngọc Duy, Sep 14, 2008
  8. 07/16 Prevent diff machinery from examining worktree outside narrow checkoutNguyễn Thái Ngọc Duy, Sep 14, 2008
  9. 08/16 checkout_entry(): CE_NO_CHECKOUT on checked out entries.Nguyễn Thái Ngọc Duy, Sep 14, 2008
  10. 09/16 ls-files: apply --deleted on narrow area onlyNguyễn Thái Ngọc Duy, Sep 14, 2008
  11. 10/16 grep: skip files that have not been checked outNguyễn Thái Ngọc Duy, Sep 14, 2008
  12. 11/16 unpack_trees(): add support for narrow checkoutNguyễn Thái Ngọc Duy, Sep 14, 2008
  13. 12/16 narrow spec: put '+' before a spec will change semantic of '*'Nguyễn Thái Ngọc Duy, Sep 14, 2008
  14. 13/16 ls-files: add --narrow-match=spec option for testing narrow matchingNguyễn Thái Ngọc Duy, Sep 14, 2008
  15. 14/16 clone: support narrow checkout with --path optionNguyễn Thái Ngọc Duy, Sep 14, 2008
  16. 15/16 checkout: add new options to support narrow checkoutNguyễn Thái Ngọc Duy, Sep 14, 2008
  17. 16/16 ls-files: add --overlay optionNguyễn Thái Ngọc Duy, Sep 14, 2008
  18. Jakub NarebskiSep 14, 2008
  19. Junio C HamanoSep 15, 2008
  20. Nguyen Thai Ngoc DuySep 16, 2008
  21. Junio C HamanoSep 16, 2008
  22. Jakub NarebskiSep 14, 2008
  23. BazSep 16, 2008
  24. Johannes SixtSep 16, 2008
  25. Nguyen Thai Ngoc DuySep 16, 2008
  26. Jakub NarebskiSep 14, 2008
  27. Junio C HamanoSep 15, 2008
  28. Jakub NarebskiSep 14, 2008
  29. Junio C HamanoSep 15, 2008
  30. Nguyen Thai Ngoc DuySep 16, 2008
  31. Jakub NarebskiSep 14, 2008
  32. Junio C HamanoSep 15, 2008
  33. Jakub NarebskiSep 14, 2008
  34. Junio C HamanoSep 15, 2008
  35. Jakub NarebskiSep 14, 2008

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.