2014-09-22 5 views
0

У меня есть проект SOLO на ранней фразе и текущем дизайне и в любое время меняет схему.Зафиксировать SQL-сервер LocalDB для GIT repo

И я хочу передать проекты с LocalDB .MDF & .LDF файлов (до 50 МБ) в REPO.

Причина, по которой я фиксирую localdb, не для управления версиями, это просто резервное копирование.

Успешно зафиксировать или клонировать репо и восстановить базу данных.

Но должен ли я что-то сделать, чтобы GIT лучше справился с .MDF и .LDF?

Например, задайте параметр gitattribute, чтобы заставить Git рассматривать .MDF/.LDF как двоичный файл?

+0

Я не вижу преимуществ при добавлении файлов базы данных в git только для причины резервного копирования. Скопируйте файл в каталог и назовите его текущей меткой времени. Это более подходит –

+0

git на самом деле не используется для возврата. Для этого нужен Dropbox или S3. Теперь я бы сгенерировал DDL для вашей базы данных и поместил это в ваше git-репо. Я сохраняю все свои DDL и скрипты, которые могут создавать тестовые данные в git. – John

ответ

1

Пара идей:

  • использовать отдельную ветвь для хранения этих файлов; в противном случае они являются версиями (с остальной частью вашего проекта).

    Вы можете использовать git checkout --orphan + git rm -rf . подготовить ветку без родословной. Затем добавьте только эти два файла и зафиксируйте. Сделайте это каждый раз, когда у вас есть что-то новое для «сохранения».

    Вы можете получить любое состояние этих файлов не проверяя ветвь, которая содержит их, делая что-то вроде

    C:\> git show my_database_branch:LocalDB.MDF > LocalDB.MDF 
    
  • Зачем использовать филиалы на всех? Git, помимо всего прочего, представляет собой набор инструментов для поддержки «файловой системы с версией», и он может хранить в своей базе данных любой объект, о котором вы ему рассказываете; наблюдать:

    C:\> git hash-object -w LocalDB.MDF 
    44931246e7973736c9635ea0b715c882b248297f 
    C:\> git tag 44931 localdb.mdf 
    C:\> git push origin -f localdb.mdf 
    

    или вы можете объединить первые два шага данные одного (требуется Git Bash):

    $ git tag $(git hash-object -w LocalDB.MDF) localdb.mdf 
    $ git push origin -f localdb.mdf 
    

    То есть, у вас есть двоичный объект, содержащий файл базы данных в базе данных объектов мерзавец, и у вас есть тег, ссылающийся на него. Вы можете нажать и извлечь эту метку и восстановить данные из этого объекта легко:

    C:\> git show localdb.mdf > LocalDB.MDF 
    

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

  • Почему бы не использовать возможность SQL Server Studio экспортировать схему базы данных (и данные, если необходимо) в качестве сценария?

  • Имейте в виду, что Git чувствителен к регистру, поэтому имена файлов LocalDB.MDF задают проблемы. Я бы переименовал их в localdb.mdf или что-то в этом роде.

+0

Спасибо за ответ, я проверяю документ GIT - http://git-scm.com/docs/git-checkout. Я бы рассмотрел сиротскую ветку, которая соответствует тому, что я хочу. – Cheung

Смежные вопросы