우리 회사에는 여러 개의 저장소가 각각있는 (종종 다른 팀의 코드를 편집하는) 몇 개의 의사 독립 팀이 있습니다. 대부분의 모듈은 상호 의존적이지만, "인프라"수준에 가장 근접한 모듈은 기본적으로 다른 모듈과 독립적입니다.많은 상호 의존적 인 서브 모듈을위한 워크 플로우
현재 우리는 모듈의 복제 및 업데이트 (이 경우 대부분 자동화 됨) 모듈의 텍스트 목록 유지 관리와 같은 작업을 처리 할 수있는 일련의 스크립트를 보유하고 있습니다. 분명히 이것은 내가 믿는/믿을만한 역할이다. git submodule
이 채울 수있다. 내가 좋아하는 것이 무엇
는 최소한 수있는 기능입니다에 :
복제 git clone main_repository
유사 하나의 명령으로 전체 소스 트리.
git pull
과 유사한 명령으로 전체 소스 트리를 업데이트하십시오. git submodule foreach git
에 대한 별칭을 만들지 만 간단히 말해서 git submodule foreach git pull
인 것처럼 보입니다. 우리의 현재 설정은이 단계를 병렬로 (한 번에 네 개씩) 수행하며, 하위 모듈 설정이 동일하게 수행되기를 바랍니다. 또한 하위 모듈을 업데이트하면 변경 사항 (커밋)으로 표시됩니다. 나는이 논리 뒤에있는 논리를 이해할 수 있지만, 현재의 시스템은 .gitignore에 pseudo-submodules을 가지고있다. 보통 모듈의 변경 사항 만 신경 써야하기 때문이다.
전체 트리에서 작동하는 git grep
의 아날로그를 원합니다. 처음에는 blush가 git submodule foreach git grep hello
인 것처럼 보였지만, 검색 문자열이 이 아니고이 발견되지 않으면 (우리는 몇 개의 작은 서브 모듈을 가지고 있기 때문에 보통 그렇습니다) grep은 1
을 반환하고 전체 명령이 중지됩니다.
비슷하게 유용한 유사 콘텐츠를 diff 및 상태로 원합니다.
나는이 부분에 대한 몇 가지 해결 방법을 생각할 수 있지만 이미 원하는대로 대부분의 해킹 스크립트 집합을 가지고 있습니다. 나는 그것을 수행하기위한 쉬운 표준 방법이 있는지 궁금해하고 있습니다.