Как клонировать репозиторий 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 на самом деле символически связан, поэтому я знаю, что он работает нормально.