Подтвердить что ты не робот

Capistrano + Git: локальный репозиторий для производственного сервера

Я пытаюсь сделать "deploy: cold" для моего приложения. Репозиторий git является локальным для мой сервер развертывания (т.е. у меня только один сервер для всего и я не размещайте мой код на github).

Вот сценарий (заменил мое имя приложения на "myapp" для конфиденциальности)

  * executing `deploy:cold'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
    executing locally: "git ls-remote /home/mrichman/git/myapp.git master"
fatal: '/home/mrichman/git/myapp.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
*** [deploy:update_code] rolling back
  * executing "rm -rf /var/www/myapp.com/releases/20100218203108; true"
    servers: ["myapp.com"]
Password:
    [myapp.com] executing command
    command finished
Command git ls-remote /home/mrichman/git/myapp.git master returned status code 32768

Вот мой deploy.rb: http://pastie.org/831424

Я также пробовал

set :repository, "[email protected]:/home/mrichman/git/myapp.git"

но это дает мне

ssh: connect to host localhost port 22: Connection refused

Любые идеи приветствуются.

4b9b3361

Ответ 1

Просто столкнулся с той же проблемой. Ключом является не использовать экземпляр deploy_via, а скорее установить: local_repository

Это должно быть указано URL, который вы используете для доступа к репозиторию с вашего компьютера/ноутбука разработки.

Итак, у меня есть

set :repository, "file:///srv/git/myapp.git"
set :local_repository, "nameOfHostFromSSHConfig:/srv/git/myapp.git"

Кажется, сработало. Просто запомните, чтобы затем удалить также строку copy_via.

Ответ 2

Войдите в систему как пользователь сайта, на который вы развертываете, и попробуйте это, чтобы узнать, имеет ли ваш пользователь разрешение на доступ к этому каталогу:

ls -la/home/mrichman/ git/myapp.git

Если вы получите сообщение об отказе в разрешении, вам необходимо убедиться, что вы устанавливаете разрешения для вложенных каталогов репозитория, которые позволяют развертыванию script обращаться к файлам.

Ответ 3

Убедитесь, что вы создали правильное репо git с осторожным письмом с учетом регистра! (Я столкнулся с той же проблемой, она просто решена)

Ответ 4

Моя проблема была связана с проблемой известных хостов. Все, что мне нужно было сделать, это убедиться, что удаленный сервер git был на моих известных хостах (попытка SSH в него в первый раз предложит вам добавить это самостоятельно), и это сработало как шарм.

Ответ 5

Если установлено local_repository, то Capistrano использует значение respository с сервера развертывания и значение local_respository с сервера разработки. Или что-то в этом роде.

Моя конфигурация работает так:

set :repository, "/home/#{user}/path/to/repo.git"
set :local_repository, "myserver.com:path/to/repo.git"