Я начинаю использовать Mercurial на своем веб-сервере (в данном случае MediaTemple's Grid). Раньше я использовал SVN, хотя я не специалист по системам контроля версий. Мне просто нужна небольшая помощь, чтобы прояснить некоторую путаницу с оптимальной настройкой.

У меня есть папка с данными, которая находится за пределами корня веб-сервера и к которой браузер не может получить доступ. Раньше мне рекомендовали установить здесь мои репозитории Mercurial, а затем я бы клонировал отсюда локально на своем компьютере. У меня также была бы папка «домены», которая в основном является корнем веб-сервера, а внутри находятся мои фактические домены, где мои веб-сайты фактически обслуживаются браузером - их также нужно будет обновить из репозиториев «данных».

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

Конечно, мне действительно не нужна эта папка с данными для репозиториев? Разве мои настоящие живые папки «доменов» не были бы самими основными репозиториями? Так я клонирую локально и обновляюсь с них? Пожалуйста, помогите мне со всем этим разобраться (если сможете).

0
littlejim84 6 Апр 2010 в 14:40

2 ответа

Лучший ответ

Это строго вопрос личных предпочтений. Некоторые люди делают свои живые веб-сайты также «главным» репозиторием, а некоторые делают его клоном репо, расположенного в другом месте. Что вы делаете правильно, так это обслуживаете свои сайты из каталога в репо, это хороший выбор.

Некоторые соображения относительно того, нужны ли вам отдельные клоны «данных», независимые от клонов корневого веб-сайта:

  • вы хотите, чтобы в одной ветке было несколько голов, что могло бы сбить с толку человека, обновляющего основное репо?
  • хотите ли вы репо, в которое люди, которым вы не доверяете редактирование живого веб-сайта, могли бы нажимать, чтобы доверенный администратор (вы?) выполнял push / pull из данных в корневой каталог?

Следует отметить, что в репозитории «данные» вы можете сделать hg update -r null, который избавится от рабочей копии (но сохраняет репо!), Так что используемое дисковое пространство почти равно нулю (при условии, что это клон webroot они будут использовать одни и те же базовые файлы на уровне жестких ссылок FS).

0
Ry4an Brase 6 Апр 2010 в 18:17
Итак, вы говорите, что это нормально ... Локальное репо, репо «данных» и репозиторий живых доменов. Я полагаю, как вы говорите, если другие работают над этим кодом, они все могут нажимать и извлекать данные из репозитория «данные» и не иметь доступа к основным действующим сайтам ... Это оставлю на ваше усмотрение. В этом есть смысл. Интересно, что вы говорите об избавлении от рабочей копии, поэтому мое репо с «данными» может буквально быть просто репо, а не файлами вообще - это то, что вы говорите?
 – 
littlejim84
6 Апр 2010 в 19:33

У меня есть папка репозиториев (данных) вне корня веб-сайта, содержащая различные репозитории и обслуживаемая через hgwebdir на отдельном домене (hg.mywebsite.com).

Однако репозиторий своего веб-сайта я храню в каталоге httpdocs основного домена. Я тестирую свою локальную среду, а затем отправляю свои изменения на сервер, чтобы их опубликовать.

Для этого в моем hgweb.config есть следующее:

private/mywebsite = ../../../httpdocs

И это в hgrc этого репозитория:

[hooks]
changegroup.update = hg update

Этот хук будет обновлять рабочий каталог до подсказки всякий раз, когда вносятся изменения. Конечно, я также добавил правило в конфигурацию Apache, чтобы игнорировать каталог .hg, а на поддомене работает hg, правило, требующее авторизации для доступа к частным / путям.

Альтернативой может быть размещение репозитория вместе с другими, а затем «hg archive» в каталоге httpdocs. Немного безопаснее, немного медленнее и для удобства я бы сказал, что это 50 на 50.

P.s. также добавление ловушки для запрета создания удаленных веток может быть хорошей идеей, если люди, которые могут использовать push -f, могут получить доступ к вашим репозиториям.

0
Laurens Holst 7 Апр 2010 в 04:36