Допустим, у меня есть родительский репо myproject
и отдельный репозиторий с именем подмодуль
со следующей структурой каталогов:
root$ find . -not -path *.git* . ./myproject ./myproject/submodule
Теперь я добавляю подмодуль
в качестве подмодуля в myproject
.
root$ cd myproject myproject$ git submodule add git://url-to-submodule:submodule.git submodule Adding existing repo at 'submodule' to the index
Теперь предположим, что я что-то изменил в подмодуле
.
myproject$ cd submodule submodule$ touch herpin.txt submodule$ add herpin.txt submodule$ git commit -am "i'm herpin and i'm derpin"
На этом этапе я возвращаюсь в родительский репозиторий и проверяю статус git:
submodule$ cd .. myproject$ git status # On branch master # Changes not staged for commit: # (use "git add ..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # # modified: submodule (new commits) # no changes added to commit (use "git add" and/or "git commit -a")
Черт возьми - теперь каждый раз, когда я фиксирую что-то в подмодуле, я также должен фиксировать родительский.
Если у вас более сложное дерево подмодулей, это быстро надоедает. Скажем так - 4 уровня в глубину. Если я вношу изменения в самый внутренний подмодуль, я должен зафиксировать его родителя, его прародителя, прадедушку и прапра-прародителя. Это долбаная боль в ---.
Должен быть способ лучше! (И нет, не вложение такого количества уровней - это не вариант.: / Это не мой призыв делать ...) Разве git-commit не может уведомить родительские репозитории о фиксации?