Есть ли способ настроить .gitignores для удаленного доступа? - PullRequest
25 голосов
/ 16 марта 2010

Есть ли простой способ настроить разные файлы .gitignore для разных пультов? У меня есть хранилище, которое я отправляю в Heroku и Github. Мне нужен файл database.yml для Heroku, но я не хочу, чтобы часть информации передавалась в Github. Поэтому мне нужен отдельный файл .gitignore для каждого из пультов.

Я попытался создать две отдельные ветви: одну, которая игнорирует database.yml, а другую - нет. Проблема в том, что когда я извлекаю ветку heroku и возвращаюсь в свою ветку github, весь файл database.yml исчезает.

Любые советы?

Ответы [ 3 ]

10 голосов
/ 16 марта 2010

Не помещайте информацию базы данных в database.yml. Вместо этого используйте переменные среды Heroku.

5 голосов
/ 16 марта 2010

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

Если вы хотите, чтобы два пульта дистанционного управления были зеркалами (имели одинаковые коммиты), они должны по определению иметь одинаковые файлы в этих коммитах. Итак, у вас есть два варианта: иметь file-for-repo-B во всех репозиториях, даже если они им не нужны, или использовать слегка грязный рабочий процесс с двумя ветвями: master и for-repo-B. Единственная разница между двумя ветвями будет касаться коммитов file-for-repo-B; ветвь for-repo-B всегда сливается с master (но никогда наоборот!). Теперь у вас есть другая ветка в репо B, и все хорошо.

1 голос
/ 16 марта 2010

Вы должны создать версию:

  • database.yml только с переменными и
  • скрипт, способный заменить эти переменные на правильные значения в зависимости от удаленного сервера, на котором развернуто database.yml.

Затем вы используете сценарий в качестве драйвера фильтра атрибутов smudge :

smudge content filter

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

...