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

Re: [PATCH] unpack-trees: do not delete i-t-a entries in worktree even when forced

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 24, 2016, 23:23 UTC
Message-ID
<xmqq60xdsnfr.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<xmqqa8mpsom6.fsf@gitster.mtv.corp.google.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 13 quoted lines
> Nguyễn Thái Ngọc Duy  <pclouds@gmail.com> writes:
>
>> Intent-to-add entries are basically "I may want to commit these files
>> later, but for now they are untracked". As such, when the user does "git
>> reset --hard <tree>", which removes i-t-a entries from the index, i-t-a
>> entries in worktree should be kept as untracked.
>
> Hmm, I can see that the control flow of "reset --hard" for an i-t-a
> path does pass through this function, but it is not very obvious
> to see how this will not negatively affect other uses of the
> unpack-trees machinery (e.g. "checkout" and "merge", especially when
> such a path needs to turn into a directory by getting removed).
>

Thinking about it more, I have to say that I do not agree with the basic premise of this patch. I-T-A is not "may want to commit, but they are untracked" at all. It is "I know I want to add, I just cannot yet decide the exact contents".

That is why "git add -N newfile && git grep string" would find the string from newfile, and "git add -N newfile && git diff HEAD newfile" would show the addition.

Sane people would expect that "git reset --hard HEAD" would behave as "git diff HEAD | git apply --index -R" when your index is fully merged, but this change will break the expectation.

Earlier we changed "git commit" to pretend as if an I-T-A entry does not exist in "git add -N newfile && git commit", but I think that was a mistake that was caused by the same fuzzy thinking.

3f6d56de (commit: ignore intent-to-add entries instead of refusing, 2012-02-07) does talk about the use of "git add -N" in conjunction with "git status" and "git diff", but somehow nobody realized that it was introducing inconsistency in the semantics.

Previous: Junio C HamanoNext: Duy Nguyen
Message 3 of 4 in “unpack-trees: do not delete i-t-a entries in worktree even when forced”
  1. unpack-trees: do not delete i-t-a entries in worktree even when forcedNguyễn Thái Ngọc Duy, Feb 24, 2016
  2. Junio C HamanoFeb 24, 2016
  3. Junio C HamanoFeb 24, 2016
  4. Duy NguyenFeb 25, 2016

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.