Как клонировать репозиторий Mercurial в каталог, который уже существует? - PullRequest
13 голосов
/ 02 сентября 2010

У меня есть клиентский проект Django, который я разрабатываю локально, используя Mercurial для контроля версий.Я помещаю свой локальный репозиторий на свой персональный удаленный сервер (где я храню все свои проекты), а затем, когда я прихожу, чтобы развернуть его (на любом веб-сервере), я клонирую этот репозиторий с моего личного сервера.

Это работаетнормально на большинстве серверов (где у меня полный контроль), но у меня есть несколько проектов, где я развертываюсь в WebFaction.WebFaction великолепна, но немного необычна в настройке, так как мне нужно сначала объявить проект Django как «приложение» через панель управления.Это автоматически создает несколько вещей, например, папку «apache2», «myproject» и т. Д.Это та же самая папка, где я хочу клонировать хранилище с моего личного удаленного сервера.Выполнение обычной команды hg clone просто не работает, хотя и говорит, что папка назначения уже существует.Я ничего не могу поделать с содержимым этой папки, поэтому мне нужно обойти это.

Я не специалист по Mercurial, и единственный способ, которым я могу это решить, - этоклонировать его в другую папку, а затем переместить все содержимое (включая .hg) в нужную папку.Хотя это кажется глупым ...

Я использую Mercurial v1.6.2 (устанавливается через easy_install).Может ли кто-нибудь рассказать об этом?

Большое спасибо.

Ответы [ 4 ]

23 голосов
/ 02 сентября 2010

Копирование только .hg dir определенно работает, но вы также можете сделать hg init и затем hg pull http://remote/repo.Только что начатое репо имеет только ревизию 000000000000000, так что вы можете получить из любого репо без предупреждения «Не связанные репо»По сути, это то же самое, что и hg clone --pull с ручной инициализацией.

11 голосов
/ 02 сентября 2010

Вы можете скопировать только папку .hg, а затем вернуться или обновить до чаевых. E.g.:

cp -a src/.hg dest/
cd dest
hg up -C
1 голос
/ 02 сентября 2010

вы можете либо переместить папку по факту, либо просто сделать символическую ссылку на нее.моя директория webfaction на самом деле является символической ссылкой, поэтому я знаю, что она работает нормально.

0 голосов
/ 02 сентября 2010

В основном, похоже, что вы пытаетесь использовать Mercurial в качестве менеджера установки, что, конечно, не является целью его разработки.

Если я правильно читаю вас, часть вашего исходного репозитория должна выглядеть примерно так: make deploy, который помещает файлы на свои места. Иными словами, наличие клона репозитория (в .hg) в каталоге развертывания кажется странным и проблемным.

...