Подтвердить что ты не робот

Каков правильный подход к работе с файлом Rails db/schema.rb в GIT?

Должны ли мы включать schema.rb во время выполнения команды GIT? или мы должны игнорировать его? Каков правильный подход?

4b9b3361

Ответ 1

Ну, стандартный файл schema.rb для Rails 2 имеет это в конце блока комментариев в верхней части файла:

# It strongly recommended to check this file into your version control system.

The Rails 3 schema.rb, который я пинаю, говорит то же самое. Я думаю, что в комментарии говорится все.


Обновление в ответ на комментарии: Да, ошибки могут быть сделаны, и вы можете получить противоречивые изменения и ошибки, искажающие ваш schema.rb, но именно поэтому вы хотите, чтобы он находился под контролем версий, контроль версий позволяет вам отслеживать все и при необходимости делать резервные копии. Во всем исходном дереве есть только одна вещь, которая указывает вашу схему базы данных, а это schema.rb. Ваша схема базы данных абсолютно является критическим артефактом, и все, что важно, нужно отслеживать в контроле версий.

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

Да, schema.rb является сгенерированным файлом, но он генерируется только в том смысле, что ваш текстовый редактор генерирует ваш файл модели pancakes.rb или создается файл неотредактированного архива.

Да, вы можете восстановить свой файл schema.rb, создав новую базу данных и затем выполнив все ваши миграции. Но вы должны время от времени очищать свои старые миграции, чтобы избежать необходимости проверять сотни файлов миграции каждый раз, когда вы rake db:migrate, поэтому "перестраивать и запускать все миграции" часто не является вариантом в очень активном проекте.

Ответ 2

Ну, он по умолчанию не включен в .gitignore. Итак, я думаю, что у вас не было бы проблем, включая его (я делаю в своих проектах без каких-либо проблем).

Ответ 3

Да. Файл схемы используется для настройки вашей базы данных при использовании rake db: reset и других команд. Миграции должны использоваться только при изменении схемы базы данных и всегда будут приводить к созданию нового файла схемы.

Ответ 4

Я не прикрепляю этот файл к Git, потому что он создается при запуске rake db:migrate.

Если я буду прикреплять этот файл к Git, я не могу вытаскивать новые изменения с сервера после каждого db:migrate.