2012-09-12 8 views
8

バージョン管理mysqlデータベースはgitを使ってウェブサイトからダンプします。gitはパターンに一致する特定の行を無視できますか?

--skip-extended-insertを使用すると、各レコードはそれ自身の行にあるので、変更を追跡するのには非常に効果的です。また、古いバージョンのデータベースを履歴から取り出してインポートすることもできます。

特定のパターンを含む特定の行や行を無視するようにgitに指示する方法はありますか?

答えて

6

ませ

Gitはファイルベースではない、それは差分を導出するために追跡ファイルの内容を変更しません。

可能な選択肢

デシベルのテーブル/データを含めないようにしてください嫌なもの

を削除するあなたが気にしないことをダンプします。違いが生じていない場合は、それを無視/修正するための特別な手順を取る必要はありません。

例えば、問題はあなたが、バックアップしたいバックアッププロセスからそれらを削除しない記事が削除されたのであれば:

mysqldump -c -w "articles.deleted IS NULL" articles > backup.sql 

ポストプロセスを

ポストプロセスデータベース・ダンプを削除しますあなたが気にしないこと。例として、ここで私が使用してDBのダンプヘルパースクリプトからの抜粋です:

#!/bin/bash 
mysqldump -dRC --skip-dump-date --skip-add-drop-table --default-character-set=utf8 database [email protected] > schema.sql 
sed -i 's/ AUTO_INCREMENT=[0-9]\+//' schema.sql 

この例は、(イラストのみ)彼らは(バージョン管理の違いが発生しないように、CREATE TABLE文の自動インクリメント値を削除します)schema.sqlファイル。

1

Gitがこれを行うことができない場合は、私が見る2の解決策は以下のとおりです。

  1. 私はバージョン管理に無関係なものを削除するには、データベースをダンプするのに使用するスクリプトを変更します。 (これらのいくつかを削除すると、ダンプがインポートに使用できなくなる可能性があります)

  2. 各データベースのダンプを別の場所に保存します(コミットIDによって何らかの形でフック内に格納される可能性があります)。 たとえば、cat dump.sql | grep -v "_session" >> dump.sql、 などですが、このようなgrepをどこかに追加すると理想的です。

関連する問題