Фиксация изменений в подмодуле без фиксации родительского репо

Допустим, у меня есть родительский репо 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 не может уведомить родительские репозитории о фиксации?

6
задан ryanrhee 6 February 2012 в 21:01
поделиться