Этот вопрос задавался миллионы раз, но всегда в сочетании с использованием публичных git-серверов, таких как github. Я нахожусь в процессе настройки своего собственного частного git-сервера, который, кажется, идет хорошо, вплоть до того момента, когда я пытаюсь клонировать проект с субмодулями, которые я ранее зафиксировал и запихнул сам.
Когда этот вопрос задают в отношении github, всегда кажется, что ответом является то, что необходимо создать пару ключей и зарегистрировать открытый ключ в github. Я был бы рад зарегистрировать мой открытый ключ на моем частном git-сервере, но я не могу найти никакой документации по этому поводу. Это вообще возможно? Даже документация с git-scm.com превращается в ссылку на github.
Мой частный сервер Git - это не что иное, как Raspberry Pi с внешним жестким диском, на котором работает Raspbian lite. Я сделал три проекта, один из которых является основным, а два других добавлены как подмодуль. Я могу создать это как таковое, зафиксировать и нажать, но когда я пытаюсь клонировать его с --recurse-submodules (или без, а затем с подмодулем init / update), подмодули завершаются ошибкой. Однако я могу клонировать субмодули вне рамок основного проекта.
Я дурачился с настройкой сети, и Пи несколько раз менял номер IP. Когда у меня возникли проблемы из-за этого, я установил запись DNS, которая указывает на мой маршрутизатор, и добавил правило переадресации портов к Pi в маршрутизаторе, чтобы я мог эффективно связаться с моим частным сервером со всего мира. Поскольку URL-адреса изменились, и я не хотел, чтобы в них остались остатки старого URL-адреса, я просто снова запустил все три проекта, но это мне не помогло.
Что здесь происходит? Следующий журнал был анонимным. :)
Обновление 1: проблема в аутентификации при клонировании субмодулей. /var/log/auth.log показывает неудачные входы в систему при клонировании подмодуля в рамках клонирования основного проекта:
Jan 13 15:07:56 raspberrypi sshd[3148]: Failed password for git from 192.168.1.18 port 62855 ssh2
Сценарий, который я сделал, который показывает ошибку, а также то, что клон подмодуля вне контекста основного проекта просто успешен:
E:\Projects>git clone --recurse-submodules ssh://git@git.domain.com/gitdata/Project1.git
Cloning into 'Project1'...
git@git.domain.com's password:
warning: You appear to have cloned an empty repository.
E:\Projects>cp -r Project1.cleanBU/* Project1
E:\Projects>cp -r Project1.cleanBU/.gitignore Project1
E:\Projects>git add Src .gitignore
fatal: not a git repository (or any of the parent directories): .git
E:\Projects>cd Project1
E:\Projects\Project1>git add Src .gitignore
E:\Projects\Project1>git commit
[master (root-commit) 1e52450] Initial commit
1145 files changed, 726152 insertions(+)
create mode 100644 .gitignore
...
<<<zapped!>>>
...
create mode 100644 Src/build.bat
E:\Projects\Project1>git push
git@git.domain.com's password:
Enumerating objects: 550, done.
Counting objects: 100% (550/550), done.
Delta compression using up to 8 threads
Compressing objects: 100% (527/527), done.
Writing objects: 100% (550/550), 1.27 MiB | 3.21 MiB/s, done.
Total 550 (delta 272), reused 0 (delta 0)
remote: Resolving deltas: 100% (272/272), done.
To ssh://git.domain.com/gitdata/Project1.git
* [new branch] master -> master
E:\Projects\Project1>git submodule add ssh://git@git.domain.com/gitdata/project2.git Src/project2
Cloning into 'E:/Projects/Project1/Src/project2'...
git@git.domain.com's password:
remote: Counting objects: 202, done.
remote: Compressing objects: 100% (162/162), done.
remote: Total 202 (delta 36), reused 202 (delta 36)
Receiving objects: 100% (202/202), 586.16 KiB | 4.73 MiB/s, done.
Resolving deltas: 100% (36/36), done.
E:\Projects\Project1>git submodule add ssh://git@git.domain.com/gitdata/project3.git Src/project3
Cloning into 'E:/Projects/Project1/Src/project3'...
git@git.domain.com's password:
remote: Counting objects: 18, done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 18 (delta 0), reused 0 (delta 0)Receiving objects: 44% (8/18)
Receiving objects: 100% (18/18), 15.94 KiB | 5.31 MiB/s, done.
E:\Projects\Project1>git add .gitmodules
E:\Projects\Project1>git commit
[master d93cfa4] Added project3 and project2 submodules
3 files changed, 8 insertions(+)
create mode 100644 .gitmodules
create mode 160000 Src/project2
create mode 160000 Src/project3
E:\Projects\Project1>git push
git@git.domain.com's password:
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 8 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 596 bytes | 596.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To ssh://git.domain.com/gitdata/Project1.git
1e52450..d93cfa4 master -> master
E:\Projects\Project1>cd ..
E:\Projects>rm -rf Project1
E:\Projects>git clone --recurse-submodules ssh://git@git.domain.com/gitdata/Project1.git
Cloning into 'Project1'...
git@git.domain.com's password:
remote: Counting objects: 554, done.
remote: Compressing objects: 100% (259/259), done.
remote: Total 554 (delta 273), reused 549 (delta 272)
Receiving objects: 100% (554/554), 1.27 MiB | 5.96 MiB/s, done.
Resolving deltas: 100% (273/273), done.
Submodule 'Src/project2' (ssh://git@git.domain.com/gitdata/project2.git) registered for path 'Src/project2'
Submodule 'Src/project3' (ssh://git@git.domain.com/gitdata/project3.git) registered for path 'Src/project3'
Cloning into 'E:/Projects/Project1/Src/project2'...
Permission denied, please try again.
Permission denied, please try again.
git@git.domain.com: Permission denied (publickey,password).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
fatal: clone of 'ssh://git@git.domain.com/gitdata/project2.git' into submodule path 'E:/Projects/Project1/Src/project2' failed
Failed to clone 'Src/project2'. Retry scheduled
Cloning into 'E:/Projects/Project1/Src/project2'...
Permission denied, please try again.
Permission denied, please try again.
git@git.domain.com: Permission denied (publickey,password).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
fatal: clone of 'ssh://git@git.domain.com/gitdata/project2.git' into submodule path 'E:/Projects/Project1/Src/project2' failed
Failed to clone 'Src/project2' a second time, aborting
Cloning into 'E:/Projects/Project1/Src/project3'...
Permission denied, please try again.
Permission denied, please try again.
git@git.domain.com: Permission denied (publickey,password).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
fatal: clone of 'ssh://git@git.domain.com/gitdata/project3.git' into submodule path 'E:/Projects/Project1/Src/project3' failed
Failed to clone 'Src/project3'. Retry scheduled
Cloning into 'E:/Projects/Project1/Src/project3'...
Permission denied, please try again.
Permission denied, please try again.
git@git.domain.com: Permission denied (publickey,password).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
fatal: clone of 'ssh://git@git.domain.com/gitdata/project3.git' into submodule path 'E:/Projects/Project1/Src/project3' failed
Failed to clone 'Src/project3' a second time, aborting
E:\Anheko\Projecten>git clone ssh://git@git.domain.com/gitdata/project2.git
Cloning into 'project2'...
git@git.domain.com's password:
remote: Counting objects: 18, done.
remote: Compressing objects: 100% (18/18), done.
Rremote: Total 18 (delta 0), reused 0 (delta 0)eceiving objects: 44% (8/18)
Receiving objects: 100% (18/18), 15.94 KiB | 5.31 MiB/s, done.