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

Re: gitconfig get out of sync with submodule entries on branch switch

From
Stefan Beller <sbeller@google.com>
Date
Feb 6, 2017, 10:35 UTC
Message-ID
<CAGZ79kaZUOO4qusCDF9=VJ-6QPjAvc5eSaazjWWEocRMHuTSug@mail.gmail.com>
In-Reply-To
<0f14df64-1aa2-e671-9785-4e5e0a076ae6@gmail.com>

Answering the original email, as I feel we're going down the wrong rabbit hole in the existing thread.

On Mon, Jan 30, 2017 at 8:21 AM, Benjamin Schindler <beschindler@gmail.com> wrote:

Show 12 quoted lines
> Hi
>
> Consider the following usecase: I have the master branch where I have a
> submodule A. I create a branch where I rename the submodule to be in the
> directory B. After doing all of this, everything looks good.
> Now, I switch back to master. The first oddity is, that it fails to remove
> the folder B because there are still files in there:
>
> bschindler@metis ~/Projects/submodule_test (testbranch) $ git checkout
> master
> warning: unable to rmdir other_submodule: Directory not empty
> Switched to branch 'master'

checkout currently doesn't support submodules, so it should neither try to delete B nor try to repopulate A when switching back to master. checkout ought to not even touch the existing submodule B.

Show 5 quoted lines
>
> Git submodule deinit on B fails because the submodule is not known to git
> anymore (after all, the folder B exists only in the other branch). I can
> easily just remove the folder B from disk and initialize the submodule A
> again, so all seems good.
by initializing you mean populating(?), i.e.
    git submodule update

would work without the --init flag or preceding "git submodule init A". That ought to not redownload A, but just put files back in the working tree from the submodule git directory inside the superprojects git dir.

>
> However, what is not good is that the submodule b is still known in
> .git/config.

Oh, I see. You did not just rename the path, but also the name in the .gitmodules?

> This is in particular a problem for us, because I know a number
> of tools which use git config to retrieve the submodule list. Is it
> therefore a bug that upon branch switch, the submodule gets deregistered,
> but its entry in .git/config remains?

The config remains as it indicates that you express(ed) interest in submodule A, such that when switching branches

  master->renamedToB->master
then we'd still care about A. As for the tools, I'd rather see them use
    git submodule status/summary

instead of directly looking at the config, because the config may change in the future.

Show 6 quoted lines
>
> thanks a lot
> Benjamin Schindler
>
> P.s. I did not subscribe to the mailing list, please add me at least do CC.
> Thanks
Previous: Stefan BellerNext: Benjamin Schindler
Message 5 of 7 in “gitconfig get out of sync with submodule entries on branch switch”
  1. Benjamin SchindlerJan 30, 2017
  2. Brandon WilliamsJan 30, 2017
  3. Benjamin SchindlerJan 31, 2017
  4. Stefan BellerJan 31, 2017
  5. Stefan BellerFeb 6, 2017
  6. Benjamin SchindlerFeb 6, 2017
  7. Stefan BellerFeb 8, 2017

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.