yurikhan: (Default)
[personal profile] yurikhan

Заметка для себя, чтоб не потерять.

Типичная задача: добавить сабмодуль в git-репозиторий.

Решение человека, только что читавшего мануал: $ git submodule add git@host:path/repo.git. Клонирует удалённый репозиторий в подкаталог текущего, регистрирует его в .gitmodules и .git/config.

Как обычно получается у меня: $ git clone git@host:path/repo.git. Клонирует удалённый репозиторий в подкаталог текущего и больше ничего не делает. Обнаруживается это где-то ближе к тому моменту, когда добавление сабмодуля нужно закоммитить.

Соответственно, задача: На входе есть суперпроект (в терминах git-submodule(1)) и внутри него локальная копия репозитория, который нужно сделать сабмодулем. Считаем, что текущий каталог находится внутри суперпроекта, а корень будущего сабмодуля является непосредственным подкаталогом текущего. Решение методом выливания воды из чайника заранее отметаем как неизящное.

Из инструментов у нас есть git submodule add [-b <branch>] <repository> <path>. Ветку указывать нужно в редких случаях и можно руками. Путь легко вводится по M-RET в Midnight Commander’е. А вот URL репозитория хочется достать и подставить автоматически.

Достать путь можно так: $ git -C <submodule> config --get remote.origin.url.

Однако писать $ git submodule add $(<строчка выше>) каждый раз утомительно, поэтому добавляем алиас:

$ git config --global --edit

[alias]
    subinit = !sh -c 'sub="$1" && shift && git submodule add "$@" $(git -C "$sub" config --get remote.origin.url)' -

$ git subinit repo
Adding existing repo at 'repo' to the index

$ git subinit repo2 -b master
Adding existing repo at 'repo' to the index
(will be screened)
(will be screened if not validated)
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

yurikhan: (Default)
Yuri Khan

August 2018

S M T W T F S
   1234
567891011
12131415161718
19202122232425
26 2728293031 

Links

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated 2025-06-09 06:49
Powered by Dreamwidth Studios