2013-07-29 22 views
1

我無法找到答案的捲曲位。我有一個git的預提交鉤子,它將mysqldumps數據庫,並階段提交文件。當分段爲空時強制執行git 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) 

的問題是,如果沒有上演文件時,提交前的腳本運行,但提交ISN」完成。如果之後運行echo $?,則git commit返回1的退出代碼(因爲初始階段沒有文件)。運行git status顯示數據庫轉儲現在已準備好提交,但可以提交。

如果在運行提交之前有任何其他文件添加到分段,則該提交將起作用。

我很明顯可以很容易地編寫一個我想要的包裝,然後在所有事情都提前完成後調用git commit,但任何人都可以在這種情況下了解最佳實踐?

回答

3
git commit --allow-empty 

這將停止git中止未改變任何文件的提交。

+0

太棒了,歡呼!我一定錯過了這個,很可能在man條目中尋找「強制」關鍵字。 – aleayr