Как клонировать ртутный репозиторий по ssh-соединению, инициированному фабрикой, когда требуется http-авторизация? - PullRequest
0 голосов
/ 11 июня 2010

Я пытаюсь использовать фабрику в первый раз, и она мне до сих пор очень нравится, но в определенный момент в моем сценарии развертывания я хочу клонировать ртутный репозиторий. Когда я добираюсь до этой точки, я получаю ошибку:

err: abort: http требуется авторизация

Мой репозиторий требует http авторизации, а фабрика не запрашивает у меня имя пользователя и пароль. Я могу обойти это, изменив мой адрес хранилища с:

https://hostname/repository

до:

https://user:password@hostname/repository

Но по разным причинам я бы предпочел не идти по этому пути. Есть ли другие способы, которыми я мог бы обойти эту проблему?

Ответы [ 2 ]

2 голосов
/ 11 июня 2010

Вот четыре варианта с различными компромиссами безопасности и требующими различного количества sys admin mojo:

С более новыми Mercurial вы можете поместить пароль в раздел [auth] файла .hgrc локального пользователя.,Пароль по-прежнему будет находиться на диске в виде открытого текста, но, по крайней мере, не в URL

или

Вы можете локально настроить прокси-сервер HTTP, который будет представлен как no-authлокально и делает ли авторизацию для вас при связи с удаленным.

Или

Если вы можете изменить конфигурацию на хост-сервере, вы можете установить ее (Apache?) не требовать пользователя / прохода при доступе с localhost, а затем использовать SSH-туннель, чтобы локальная машина выглядела так, как будто она идет с localhost при обращении к серверу:

ssh -L 8080:localhost:80 user@hostname # run in background and leave running

, а затем подключить фабрикуна http://localhost:8080/repository

или

Более новые сертификаты на стороне клиента поддержки Mercurial для аутентификации, так что вы можете настроить свой Apache так, чтобы он учитывал их как авторизацию / аутентификацию, а затем настроить локальныйHG, чтобы предоставить сертификат.

0 голосов
/ 14 марта 2014

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

В частности, вы можете клонировать репозиторий Mercurial с помощью команд фабрики local () и выполнить команду 'hg archive' для подготовки архива. Затем вы можете использовать ткани put (), чтобы загрузить этот tarball, и ткани запустить (), чтобы распаковать его в правильном месте.

Фрагмент кода для клона, пакета, пут может выглядеть примерно так:

from fabric.api import local

def task():
    local("hg clone ssh://hg@host/repo tmpdir")
    with lcd("tmpdir"):
        local("hg archive ../repo.tgz")
    local("rm tmpdir")
    put("repo.tgz")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...