Как отследить конфигурационные файлы подмодулей в Git? - PullRequest
5 голосов
/ 15 сентября 2009

Как в Git организовать работу по отслеживанию локальных файлов конфигурации библиотеки, которая является подмодулем git?

Подробнее:

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

Я начал отслеживать один из проектов, использующих эту библиотеку, и в Git. Теперь возникает дилемма:

  • Если я сделаю lib в этом проекте подмодулем, я не смогу отслеживать файлы конфигурации (Git будет игнорировать их, так как они находятся в папке подмодуля).

  • отслеживать все как большой проект, как я понимаю, плохая идея.

  • если я делаю отслеживать файлы конфигурации в библиотеке, как я могу избежать их сброса к значениям по умолчанию? Я делаю ветку в рабочем проекте и вытягиваю из мастера каждый раз? Что, если я отредактирую библиотеку и файл конфигурации в ней? Это должно вызвать конфликт слияния, не так ли?

Полагаю, это не ново, но я не смог найти никакого совета. Я буду признателен за ваш опыт, ребята.

Ответы [ 2 ]

4 голосов
/ 15 сентября 2009

При использовании подмодуля следует избегать внесения каких-либо изменений из-за контейнера (здесь: проект, использующий библиотеку lib), поскольку он создаст новую ревизию в истории подмодуля.

Можно, например, для lib ссылаться на файлы конфигурации template , которые могут быть основой для:

  • генерация конфигурационных файлов значений по умолчанию (в lib есть архивированный файл значений по умолчанию, который можно использовать для генерации полного, но не отслеживаемого конфигурационного файла)
  • или создание пользовательского файла конфигурации (проект имеет собственные значения файла конфигурации и использует его для создания в том же месте в файле lib неотслеживаемого файла конфигурации)

«Шаблон файла конфигурации с токенизированными значениями в нем и скрипт, преобразующий этот файл config.template в частный (и игнорируемый) файл конфигурации» - это подход, который я предложил в этом ТАК вопрос об управлении слиянием .

Другие более общие советы по файлам конфигурации можно найти в этом ТАК вопрос .

2 голосов
/ 16 сентября 2009

отслеживать ваш файл конфигурации в главном каталоге проекта и поместить символическую ссылку в подкаталог библиотеки?

git add lib.conf
ln -s ../lib.conf lib/

или я что-то пропустил?

...