Почему добавление существующего репо в качестве подмодуля изменяет .git / config? - PullRequest
6 голосов
/ 21 мая 2011

Если я добавлю субмодуль, который в данный момент не существует, информация о субмодуле не будет добавлена ​​в .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 = true

Однако, если я добавлю репо, который в настоящее время существует как подмодуль, URL будет добавлен в .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.git

Я бы предположил, что в обоих случаях git submodule add изменил бы только .gitmodules, а git submodule init обновил бы .git/config проекта.

Почему .git/config изменяется во втором случае, а не в первом? Может кто-нибудь объяснить рациональное для этого поведения?

Ответы [ 2 ]

4 голосов
/ 21 мая 2011

Это кажется странным.Это поведение было введено в этом коммите :

commit c2f939170c65173076bbd752bb3c764536b3b09b
Author: Mark Levedahl <mlevedahl@gmail.com>
Date:   Wed Jul 9 21:05:41 2008 -0400

    git-submodule - register submodule URL if adding in place

    When adding a new submodule in place, meaning the user created the
    submodule as a git repo in the superproject's tree first, we don't go
    through "git submodule init" to register the module.  Thus, the
    submodule's origin repository URL is not stored in .git/config, and no
    subsequent submodule operation will ever do so.  In this case, assume the
    URL the user supplies to "submodule add" is the one that should be
    registered, and do so.

    Signed-off-by: Mark Levedahl <mlevedahl@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>

Обновление: вы указали в комментариях ниже, что моя оригинальная интерпретация этого сообщения коммита не сделаласмысл, поэтому я удалил этот текст сейчас, чтобы избежать путаницы для других.

Как упоминалось в комментариях ниже, cdwilson опубликовал в списке рассылки git, чтобы спросить об этом несоответствиии в результате Дженс Леман работает над исправлением - этот поток можно найти здесь:

3 голосов
/ 30 января 2012

Эта проблема была исправлена ​​в https://github.com/git/git/commit/2cd9de3e18183422cd7ec3cd81cebc656068ea42

...