В Capistrano 2, можно установить URL хранилища, чтобы включить имя пользователя для входа, как:
set :repo_url, "git+ssh://#{ENV['LOGNAME']}@myrepo.example.com/path/name"
Целью этого является, что $ LOGNAME доступ к репо используя свою учетную запись и получает свои обычные разрешения. Вход на сервер развертывания не $ {LOGNAME}, и это нормально.
Хотя это можно сделать с помощью capistrano 3, он работает для исходного пользователя X, поскольку он заполняет файл ../repo/.git/config, но не работает для следующего пользователя, так как пользователь Y не может войти в систему myrepo.example.com как X. Это работало в Capistrano 2, потому что каждый раз проверялось свежее git repo. Способ cap3 намного эффективнее, но я не понимаю, что делать. Если скрипт /tmp/git-ssh-deploy-staging-user.sh добавит -l пользователь в командную строку ssh, все будет хорошо, но я ничего не вижу, чтобы добавить это.
Я прибегал к созданию пользователя «развертывания» на нашем сервере репо и предоставления ему разрешений только для чтения для репо, но я не очень увлекаюсь этим как масштабируемое решение, так как для этого требуется, чтобы $ Винт ADMIN с репо, а не позволяет детопам делать свою работу.
Я ищу предложения? Может быть, это только в коде, и я еще не нашел вариант.