(I posted this question below on http://stackoverflow.com/questions/6083357/why-does-adding-an-existing-repo-as-a-submodule-modify-git-config and was recommended to ask the mailing list)
If I add a submodule that does not currently exist, no submodule information is added to .git/config.
$ mkdir testing
$ cd testing
$ git init
$ git submodule add git@git.server:submodule.git
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = trueHowever, if I add a repo that currently exists as a submodule, the url is added to .git/config:
$ mkdir testing
$ cd testing
$ git init
$ git clone git@git.server:submodule.git
$ git submodule add git@git.server:submodule.git
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
[submodule "submodule"]
url = git@git.server:submodule.gitI would have assumed that in both cases, git submodule add would have only modified .gitmodules, and that git submodule init would have updated the project's .git/config.
I'm aware this is intentional behavior (https://github.com/git/git/commit/c2f939170c65173076bbd752bb3c764536b3b09b), but I don't understand why.
Why is .git/config modified in the second case but not the first? Can somebody explain the rational for this behavior?