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

Re: [RFC] [BUDFIX] 'git rm --cached <submodule>' does not stage the changed .gitmodules

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 8, 2021, 18:37 UTC
Message-ID
<xmqqpn1a5rt1.fsf@gitster.c.googlers.com>
In-Reply-To
<20210208072337.GA7955@konoha>
Shourya Shukla <periperidip@gmail.com> writes:
Show 29 quoted lines
> On 07/02 11:30, Junio C Hamano wrote:
>> Shourya Shukla <periperidip@gmail.com> writes:
>> 
>> > So, my question is, do we need to fix this to make sure that the changed
>> > '.gitmodules' is staged?
>> 
>> When "--cached" is given, the user is asking the module to be
>> removed ONLY from the index, without removing it from the working
>> tree, no?
>> 
>> So I think ".gitmodules" in the working tree should not be touched
>> at all.
>> 
>> Removing the entry for the module from the ".gitmodules" registered
>> in the index, when a submodule registered in the index, might be
>> desirable, and what you say here
>> 
>> > And its entry is not removed from the file. What should be done about
>> > this? I would appreciate your opinions.
>> 
>> may be related to it.
>> 
>> But I doubt it is a good idea to let "git rm" be the one touching
>> ".gitmodules" either in the index or in the working tree for that to
>> happen.
>
> We can remove the entry of the SM from the '.gitmodules' at least no?
> Since the SM won't be relevant to us. At the end an empty '.gitmodules'
> file would stand.

I agree that .gitmodules needs to be modified in the index (but not in the working tree) to make things consistent in the worldview of "git submodule" subsystem. I am just saying that I doubt "git rm" is a good place to perform an operation that is required only by the particular kind of submodule design (namely, "git submodule" that works with ".gitmodules"), as I said below.

Show 6 quoted lines
>> The reason I am hesitant to teach anything about ".gitmodules" to
>> the basic level tools like "add", "rm" is because ...
> ...
> Hmmmm.. You are correct here. But, won't we be replicating the
> functionality of 'git rm [--options] <submodule>' when we create another
> new command say 'git submodule rm [--options] <submodule>'.

Well, that is what I meant by "'git submodule rm [--cached]' may use "git rm [--cached]" internally as a building block".

When a better design of submodule subsystem appears, it might or might not use ".gitmodules", but when it wants to remove the submodule only from the index, it would do so by internally calling "git rm --cached" to implement that part of the feature, in addition to its own bookkeeping.

It won't be a replication of the functionality---dealing with the index and working tree would be done by "git rm" called by "git submodule rm".

Previous: Shourya ShuklaNext: Philippe Blain
Message 5 of 6 in “[RFC] [BUDFIX] 'git rm --cached <submodule>' does not stage the changed .gitmodules”
  1. Shourya ShuklaFeb 7, 2021
  2. Junio C HamanoFeb 7, 2021
  3. Junio C HamanoFeb 7, 2021
  4. Shourya ShuklaFeb 8, 2021
  5. Junio C HamanoFeb 8, 2021
  6. Philippe BlainFeb 9, 2021

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.