git commit config при первоначальном коммите, но больше никогда? - PullRequest
4 голосов
/ 19 февраля 2012

Я начал использовать git для своих проектов, когда я создаю проект, у него есть папка конфигурации, содержащая файлы конфигурации:

application/config/config.php
application/config/database.php
application/config/routes.php

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

Я попытался сначала зафиксировать их в их состоянии по умолчанию, а затем добавить их в мой файл .gitignore, например так:

application/config/*

Теперь, когда я фиксирую мои файлы конфигурации не зафиксированы (ууу!), Однако исходные значения по умолчанию исчезают, папка application / config / больше не существует в моем хранилище.

Я предполагаю, что здесь упускаю что-то очевидное, но я очень неопытен в git.

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

1 Ответ

7 голосов
/ 19 февраля 2012

После версии вы можете обновить их индекс:

 git update-index --assume-unchanged application/config/config.php

Или вы даже можете обновить индекс более существенно:

 git update-index --skip-worktree application/config/config.php

(как показано в "git update-index --assume-unchanged и git reset ")


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

filter driver

Вы бы версионировали:

  • файлов шаблонов (application/config/config.tpl)
  • файлы значений конфигурации (один по умолчанию, а другой для вашей среды)
  • скрипт, способный распознавать содержимое файла конфигурации (поскольку он не будет иметь свой путь )и сгенерируйте окончательные файлы конфигурации в соответствии с текущей средой.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...