2013-07-29 4 views
1

해답을 찾을 수없는 둥근 모양의 비트. 나는 mysqldumps 데이터베이스, 자식 커밋에 대한 후크가 있고 커밋에 대한 파일을 단계.스테이징이 비어있을 때 git 커밋을 강제로 수행하지만 미리 커밋하면 후크가 파일을 추가합니다.

프로젝트 용으로 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을 실행하면 db 덤프가 커밋 준비를 위해 준비되었음을 알 수 있습니다.

커밋을 실행하기 전에 다른 파일을 준비에 추가 한 경우 커밋이 작동합니다.

내가 원하는 것을 수행하는 래퍼를 작성한 다음 모든 항목이 미리 준비된 후에 git commit을 호출 할 수는 있지만이 상황에 대한 모범 사례를 알려줄 수 있습니까?

답변

3
git commit --allow-empty 

이렇게하면 이전 커밋에서 파일을 변경하지 않은 커밋을 중단하지 않습니다.

+0

위대한, 건배! 나는 이것을 놓쳐 버렸음에 틀림 없어, 맨 엔트리에서 "force"키워드를 찾을 가능성이 가장 큽니다. – aleayr