Как клонировать репозиторий Mercurial в уже существующий каталог?
У меня есть проект Django клиента, который я разрабатываю локально, используя Mercurial для управления версиями. Я нажимаю свой локальный репозиторий на свой персональный удаленный сервер (где я сохраняю все свои проекты), а затем, когда я прихожу к его развертыванию (на каком бы веб-сервере), я клонировал этот репозиторий там с моего личного сервера.
Это отлично работает на большинстве серверов (где у меня есть полный контроль), но у меня есть несколько проектов, в которых я развертываюсь в WebFaction. WebFaction замечательный, но немного необычный с ним настройкой, так как мне нужно сначала объявить проект Django как "приложение" через панель управления. Это автоматически создает несколько вещей, таких как папка "apache2", "myproject" и т.д. Это эта же папка, хотя я хочу клонировать репозиторий с моего личного удаленного сервера. Выполнение обычной команды hg clone просто не работает, поскольку, как сказано, папка назначения уже существует. На самом деле я мало что могу сделать с содержимым этой папки, поэтому мне нужно обойти это.
Я не эксперт в Mercurial, и единственный способ, которым я мог бы работать, - клонировать его в другую папку, а затем перемещать все содержимое (включая .hg) в фактическую папку, которую я хочу. Это кажется глупым, хотя...
Я использую Mercurial v1.6.2 (установлен через easy_install). Может ли кто-нибудь рассказать об этом?
Большое спасибо.
Ответы
Ответ 1
В основном, похоже, что вы, возможно, пытаетесь использовать Mercurial в качестве менеджера установки, что, конечно же, не является его целью дизайна.
Если я читаю вас правильно, часть вашего исходного репозитория должна быть чем-то вроде make deploy
, который помещает файлы в нужные места. Другими словами, наличие клонирования репозитория (в .hg
) в вашем каталоге развертывания кажется странным и подверженным ошибкам.
Ответ 2
Копирование только файла .hg, безусловно, работает, но вы также можете сделать hg init
, а затем hg pull http://remote/repo
. Репо, только что вступившее в силу, имеет только набор изменений 000000000000000, поэтому вы можете вытащить из любого репо, не получив предупреждение "несвязанные репозитории". Это по существу то же самое, что и hg clone --pull
с ручным init.
Ответ 3
Вы можете скопировать только папку .hg
, а затем вернуться или обновить до конца. Например:.
cp -a src/.hg dest/
cd dest
hg up -C
Ответ 4
вы можете либо переместить папку после факта, либо вы можете просто сделать символическую ссылку на нее. мой каталог webfaction на самом деле символически связан, поэтому я знаю, что он работает нормально.