mercurial игнорирует сайты / все / модули в Drupal Multi-site

Я не собираюсь вдаваться в обсуждение того, как настроить mercurial для многосайтовой установки Drupal, но я натолкнулся на кое-что, что меня ошеломило. У меня есть многосайтовая установка drupal, на которой я пытаюсь настроить контроль версий. Что я сделал, так это запустил hg init в корне Drupal с .hgignore, который игнорирует drupal_root / sites /. Это то, что есть в моем .hgignore, и, похоже, он работает нормально:

# Glob syntax
syntax: glob
# Everything in sites
sites/*

Это работает нормально, поскольку Mercurial находит все остальное, кроме папки сайтов. Теперь внутри папки сайтов структура выглядит так:

sites/
    sites/all
    sites/default
    sites/domain1.com
    sites/domain2.com

Моя проблема в том, что когда я делаю hg status внутри сайтов, mercurial не находит сайты / все / модули. Я пробовал несколько перестановок .hgignore, так как я хотел бы игнорировать сайты / domain1.com / files, но, похоже, ничего не работает. Я даже удалил репо и начал заново без какого-либо .hgignore. сайты / все / библиотеки и сайты / все / скрипты отображаются нормально.

Может ли .hgignore в родительском каталоге иметь к этому какое-то отношение?

ОБНОВЛЕНИЕ: я просто полностью удалил суб-репо (я знаю, что на самом деле это не суб-репо, но я ограничен здесь) удалил репо в корне drupal и начал рассматривать всю установку как единое репо. То же самое, mercurial просто не найдет root / sites / all / modules.

ОБНОВЛЕНИЕ: @ Ry4an - поведение в корневом каталоге drupal правильное. Я пытаюсь имитировать суб-репозитории, так как я застрял на Hg 1.3, которая на самом деле их не реализует. Итак, моя структура каталогов выглядит так:

drupal_root/
    .hg/
    modules/
    includes/
    themes/
    sites/
        .hg/
        all/
        default/
        domain1.com/
        domain2.com/

Итак, я действительно хочу, чтобы репозиторий внутри drupal_root игнорировал все, что находится под drupal_root / sites, но у меня есть второй репозиторий внутри drupal_root / sites, который должен обрабатывать все, что там. Это репо, которое не находит всего.


person ditch182    schedule 09.02.2012    source источник


Ответы (3)


То, что вы видите, - это поведение, которого я ожидал. Это правило глобуса:

syntax: glob
# Everything in sites
sites/*

игнорирует все на сайтах, включая "sites/all", поэтому Mercurial вообще не будет смотреть внутрь "all", поэтому он не увидит "sites/all/modules".

Если вы предоставите полный список файлов и их пути с аннотациями, какие файлы вы хотите игнорировать, а какие файлы вы не хотите игнорировать, я уверен, что кто-то может помочь вам придумать правильные правила, но это не совсем ясно из вашего вопроса .

person Ry4an Brase    schedule 10.02.2012

  • Если ваша задача - "игнорировать все, кроме одного каталога"
  • Если вы можете писать (и тестировать) регулярные выражения

вы можете проконсультироваться с этим вопросом и принятый ответ, чтобы адаптировать регулярное выражение к вашим условиям

Другое (немного более неточное) решение может быть

  • оставить текущий шаблон "игнорировать все"
  • вручную добавить все файлы из sites/all/modules в репозиторий (hgignore игнорирует только неотслеживаемые объекты)
  • не забудьте все новые файлы, добавленные позже в модули, добавить явно в Mercurial (они будут игнорироваться правилом)
person Lazy Badger    schedule 10.02.2012

Что ж, чувствую себя идиотом. Проблема заключалась в том, что внутри drupal_root / sites / all / modules уже был репозиторий. Я не помню, чтобы помещал его туда, но кажется, что mercurial игнорирует любой каталог, который уже содержит каталог .hg. Спасибо всем за помощь.

person ditch182    schedule 10.02.2012