Допустим, у меня есть родительский репозиторий myproject
и отдельный репозиторий под названием submodule
со следующей структурой каталогов:
root$ find . -not -path *.git* . ./myproject ./myproject/submodule
Теперь я добавляю submodule
в качестве подмодуля к myproject
.
root$ cd myproject myproject$ git submodule add git://url-to-submodule:submodule.git submodule Adding existing repo at 'submodule' to the index
Теперь, допустим, я что-то меняю на submodule
.
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 может уведомить родительские репозитории о коммите?