2014-07-11 2 views
2

서브 모듈과 수퍼 프로젝트 모두에서 작업 공간의 모든 변경 사항을 푸시 (push)하기 위해 아래 스크립트를 작성했습니다. 그러나 조금 이상한 것처럼 들리지만, 내가 원하는 것을이 복합물이라고합니다. 내가 누락 된 어떤 더 좋은 방법이 있습니까?모든 서브 모듈을 재귀 적으로 푸시

#!/bin/bash 

if [ "$#" -ne 1 ]; then 
    echo "Illegal number of parameters" 
    exit 
fi 

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 

cd "${SCRIPT_DIR}/../submodule1" 
git status 
git add -A 
git commit -m "$1" 
git push origin master 

cd "${SCRIPT_DIR}/../submodule2" 
git status 
git add -A 
git commit -m "$1" 
git push origin master 

cd "${SCRIPT_DIR}/../submodule3" 
git status 
git add -A 
git commit -m "$1" 
git push origin master 

printf "\n\nUpdating Super Project\n\n" 
cd .. 
git status 
git add -A 
git commit -m "All Submodules Updated - $1" 
git push origin master 

답변

1

git1.7.11은 ([ANNOUNCE]는 힘내 1.7.11.rc1)는 언급 다음에 결합 된 서브 모듈의 이력을 조사 선택적으로 습득

"- 서브 모듈 --recurse 자식 푸시" 수퍼 프로젝트를 선택하고 을 푸시합니다.

그래서 당신은 사용할 수 있습니다

git push --recurse-submodules=on-demand 
3
당신은 각 서브 모듈, 예를 들어,에 원하는 명령을 실행 git submodule foreach을 사용할 수 있습니다

git submodule foreach git push origin master 

참조 : man git-submodule.

+1

대단합니다! 감사!! –

관련 문제