У меня есть проект, состоящий из огромного количества данных.
Из-за его размера я не могу использовать удаленное GIT-репо и пуш-пул через Интернет. Вместо этого я ношу с собой портативный жесткий диск, на котором указано текущее состояние проекта (т. Е. Рабочий каталог).
Репозиторий GIT этого рабочего каталога находится на другом жестком диске моего настольного компьютера (для этого я использовал --separate-git-dir
).
Время от времени я прикусываю пулю, подключаю внешний жесткий диск к своему рабочему столу и делаю еще один гигантский коммит GIT, чтобы отслеживать историю данных проекта.
Проблема в том, что в этом проекте есть несколько небольших подпроектов, отслеживаемых их собственными репозиториями GIT. Они (относительно) легкие и регулярно получают коммиты.
portable HDD desktop HDD
| |
|-.git <- text file (gitlink) to here -> |-ProjectGit
| | |-objects
|-project1 | |-refs
| |-.git <- actual git dir | |-HEAD
| |-some files . . ...
|
|-project2
| |-.git <- actual git dir
| |-some files
|
|-loads
|-and
|-loads
|-of
|-files
Когда я пытаюсь сделать git add --all .
внутри основного суперрепо, GIT понятно сердится, что есть вложенные папки .git
и кричит мне, что я должен использовать подмодули.
И я хотел бы сделать именно это, за исключением того, что подмодули находятся либо (a) в папке .git/modules
суперрепо, либо (b) возможно принудительно установить устаревший (устаревший) режим и сохранить подмодуль в рабочем каталоге. В случае (а) у меня не будет папок .git
на моем внешнем жестком диске, и я не смогу зафиксировать изменения в подпунктах во время работы; и в случае (b) в папке .git
суперрепо не будет копии коммитов субрепо, и, таким образом, если портативный HDD будет испорчен, данные будут потеряны.
Я хочу каким-то образом вытягивать все коммиты, находящиеся во вложенных вложенных репозиториях, на жесткий диск рабочего стола каждый раз, когда я делаю коммит суперрепо. До сих пор я мог думать только о том, чтобы как-то использовать git-хуки и прикрепить к ним скрипт, который автоматически перенесет все изменения в несколько небольших репозиториев, находящихся на настольном жестком диске, вместе с git dir суперрепо.