私が答えを見つけることができなかった巻き毛のビット。私は、mysqldumps データベースをコミットし、ファイルをコミットするためにステージングする git の pre-commit フックを持っています。
私はプロジェクトで Drupal を実行しているため、かなりの量の構成がインターフェイスを介して行われ、データベースに保存されます。明らかに、バージョン管理で特定の時点のマイルストーンを把握したいと思っています。
私がこれを試している基本的なカットダウンテストは次のとおりです。
#!/bin/bash
#commit database as point-in-time
SITE_PATH="/data/site.com"
cd $SITE_PATH
FILE_NAME="db/site.sql"
$(mysqldump --skip-extended-insert --skip-dump-date db_name > $FILE_NAME)
#add changed file to commit
$(git add $FILE_NAME)
問題は、ステージングするファイルがない場合、プレコミット スクリプトが実行されますが、コミットが完了しないことです。echo $?
後で実行するとgit commit
、終了コード 1 が返されます (最初にステージングにファイルがなかったため)。実行git status
すると、db ダンプがステージングされ、コミットの準備ができていることが示されます。
コミットを実行する前にステージングに追加された他のファイルがある場合、コミットは機能します。
もちろん、必要なことを実行し、すべてが事前にステージングされた後に最後に呼び出すラッパーを簡単に作成できますがgit commit
、この状況のベストプラクティスに光を当てることはできますか?