Git: файл, который должен быть распространен, но проигнорирован / не загружен повторно?

Возможный дубликат:
git: могу ли я зафиксировать файл и игнорировать изменения содержимого?

У меня простая проблема, и я надеюсь, что есть простое решение.

Используя Git (и Tower, отличное приложение), у меня есть репозиторий, в котором есть файл, который каждый должен загрузить при клонировании репо, НО этот файл никогда не следует повторно загружать с изменениями (потому что это файл конфигурации с именами пользователей для конкретной базы данных. / пароли и пути) - изменения вносятся только при локальном использовании.

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

Следует отметить, что:

  1. Когда я клонирую репо, файл появляется, но когда я его игнорирую (только локально, а не через .gitignore), мне нужно его отследить, и когда я это сделаю и верну изменения на сервер, любой, кто клонирует репо, НЕ будет скачать файл ‹< нежелательное поведение.

  2. Если я проигнорирую файл, но НЕ ОТКЛЮЧАЮ его, файл по-прежнему будет отображаться в моем рабочем каталоге, ожидая фиксации ‹< нежелательное поведение.


person AeroCross    schedule 07.04.2011    source источник
comment
Верно. Как указано в этой ссылке (полезно, кстати, спасибо!), Используется git update-index --assume-unchanged (подробно объяснено здесь: goo.gl/UZi0E). Однако из того, что я видел, это невозможно сделать через Tower.app.   -  person AeroCross    schedule 07.04.2011


Ответы (2)


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

person Daenyth    schedule 07.04.2011
comment
Это тоже хорошая альтернатива (поскольку в моем приложении не так много файлов конфигурации для изменения, только 2) - я предполагаю, что, например, Moodle (config-dist.php) и Wordpress (wp-config -example.php, если я правильно помню) используйте этот метод в своих соответствующих системах контроля версий. - person AeroCross; 07.04.2011

Это правильно решается с помощью скриптов smudge / clean.

В качестве альтернативы сценарии, выполняющие развертывание, сбрасывают имена пользователей и пароли.

Отслеживание и игнорирование изгиба - не способ решения этой проблемы.

Надеюсь это поможет.

person Adam Dymitruk    schedule 07.04.2011
comment
Хотите привести пример? Я новичок в Git, поэтому не знаю, что такое скрипт smudge / clean. Я также не понимаю Альтернативные сценарии, которые выполняют сброс имен пользователей и паролей при развертывании. - person AeroCross; 07.04.2011