Подмодули Git: можете ли вы вносить локальные, незафиксированные изменения? - PullRequest
1 голос
/ 22 июля 2011

У меня есть подмодуль git в моем проекте, который состоит из набора файлов конфигурации, которые затем нужно немного настроить для каждого проекта.

Возможно ли это сделать с помощьюсубмодули, или я делаю вещи здесь не так?Очевидно, что я не хочу фиксировать изменения в репозитории подмодуля, поскольку они зависят от проекта.

Любые советы или указатели будут очень благодарны.

РЕДАКТИРОВАТЬ: Обратите внимание, что эти локальные изменения являются локальными для проекта, и проект должен сохранять эти изменения при развертывании на сервере (используя git и fabric).

Ответы [ 2 ]

1 голос
/ 22 июля 2011

Можно вносить локальные изменения, но это не совсем осуществимо.

Git заметит, что в подмодуле произошли изменения, и покажет вам это.Вы не можете зафиксировать подмодуль изменений в супермодуле, потому что эти изменения где-то не передаются.Поэтому, когда кто-то пытается извлечь этот подмодуль, git будет жаловаться, потому что он не может найти фиксацию, записанную для этого подмодуля.

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

Вы должны решить для себя, хотите ли вы, чтобы эти изменения были частью репозитория подмодулей, но это единственный способ сделать это с помощью git.

0 голосов
/ 22 июля 2011

Один из подходов, которые я использовал, - это наличие в каталоге подмодулей символических ссылок, указывающих на исходные файлы проекта.Например, на веб-сайте Drupal:

/project
    /drupal
    /sites

Если вы не знакомы с Drupal, каталог sites будет содержать любые дополнительные модули, темы или информацию из нескольких сайтов и, как правило, находится внутри Drupal.root (в данном случае /project/drupal).В вашем проекте drupal будет заменен вашей основной кодовой базой, а sites будет содержать настройки вашего проекта.

В этом случае drupal - это подмодуль project, который указывает наофициальный репозиторий.Я добавил символическую ссылку с /project/drupal/sites на /project/sites, чтобы изменения на sites регистрировались на уровне проекта, но Drupal все еще может притвориться, что это подкаталог.

Надеюсь, что подобная установка может работать для вашегопроект.Стоит отметить, что символическая ссылка внесет изменения в sites, также появившиеся в drupal, поэтому вы, вероятно, захотите добавить символическую ссылку в ваш файл .gitignore.Другим недостатком является то, что вам придется реконфигурировать символическую ссылку для каждого компьютера, на котором вы настраиваете проект, но это легко может быть частью вашего сценария развертывания.

...