Git Обновление клона или субмодуля не находит файл закрытого ключа, если установлен флаг глубины - PullRequest
1 голос
/ 03 февраля 2020

Я клонирую репозиторий с несколькими подмодулями. Чтобы сэкономить время, я делаю мелкий клон, передавая закрытый ключ как переменную окружения. Пример:

GIT_SSH_COMMAND="ssh -i temp_pvt_key.key" git clone -b my_branch --depth=1 git@my-repo.com:my_team/my_repo.git temp_repo

Команда выше работает просто отлично! Но когда я пытаюсь сделать то же самое с подмодулями, добавив --depth=1, git больше не может найти temp_pvt_key.key.

Ошибка:

Cloning into 'C:/path/to/submodule/folder'...
Warning: Identity file ../temp_pvt_key.key not accessible: No such file or directory.
git@my-repo.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Я использую относительный путь (../), когда файл закрытого ключа находится в родительской папке хранилища.

Работает, но клонируется все хранилище подмодулей:

cd temp_repo
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ../temp_pvt_key.key" git submodule update --init

В основном та же команда плюс --depth = 1. Это не работает вообще:

cd temp_repo
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ../temp_pvt_key.key" git submodule update --depth=1 --init

Я пробовал в одной команде тоже, но безуспешно, я закончил с той же ошибкой:

GIT_SSH_COMMAND="ssh -i temp_pvt_key.key" git clone -b my_branch --depth=1 --recursive --shallow-submodules git@my-repo.com:my_team/my_repo.git temp_repo

Можно ли как-нибудь обойти эту проблему?

Git версия: git version 2.19.2.windows.1

1 Ответ

0 голосов
/ 10 марта 2020

Во-первых, обновление до Git Для Windows 2.25.1 (многие ошибки / исправления / эволюция подмодулей могли иметь место с 2.19)

Во-вторых, синтаксис для a --depth параметр равен --depth 1, а не --depth=1

...