2014-02-27 1 views
3

누군가 게임 개발 프레임 워크를 개발하고 있다고 가정 해 봅시다. 그래픽 렌더링 프로젝트, 윈도우/컨텍스트 처리 프로젝트, 수학 라이브러리 프로젝트가 있습니다.어떻게하면 복잡한 저장소 상호 의존성을 깨끗하게 처리 할 수 ​​있습니까?

하자 더 개발자가 별도의 저장소로 각 섹션을하고 싶었 등

그래서, 이들 각각이 추가, 사례 누군가 단지 취급 창에 대한 라이브러리를 원하거나 수학 라이브러리에 싶다고 말한다 게임 프레임 워크를 서브 모듈로 사용합니다. 그래픽 라이브러리는 수학 라이브러리에 의존하므로 그래픽 라이브러리에 하위 모듈로 추가되었지만 이제는 주 프레임 워크에 수학 라이브러리 2 부를 가지고 있습니다. 좋아, 그래서 우리는 기본 프레임 워크에서 수학 lib를 삭제하고 그래픽 하위 모듈에서 프로젝트를 얻을. 이미 냄새가났습니다.

이제는 개발자가 수학 라이브러리에 의존한다는 점을 제외하고는 (예를 들어, 누군가가 물리학이 아닌 전체 거대한 프레임 워크가 아닌 경우를 대비하여 다시 말해서) 물리학 라이브러리 저장소를 만들고 싶어합니다. .

이 두통이 없으면 어떻게 이런 종류의 복잡한 감독/모듈화가 가능합니까?

TL; DR :

game framework ------> graphics, gui, physics, math 
graphics --------------> math 
physics ---------------> math 

있지만, 각 부분은 자신의 작업을 할 수 있어야한다.

where ------> means "is dependent on" 

답변

1

서브 모듈로 잠재적으로 중복 종속성을 관리하기 위해 따라야 할 좋은 규칙은 다음과 같습니다

  • 부모의 repo에있는 모든 서브 모듈을 선언, 그 game framework, graphics, physics을 포함 할 것 REPO입니다 (메인 리포 지)뿐만 아니라 그 의존성 (gui, math)
  • 을 확인하기 위해 SHA1에 서브 모듈이 있는지 확인하려면 git ls-files --stage으로 인덱스와 1600000 special entry
  • 는 심볼릭 링크가 (당신이 자식 서브 모듈 업데이트를 할 때까지 거기있는) 모든 서브 모듈 폴더를 대체하는 선택을 강요

    parent repo 
        game framework ------> graphics (ln -s ../graphics) 
           ------> gui (ln -s ../gui), 
           ------> physics (ln -s ../physics), 
           ------> math (ln -s ../math) 
        graphics ------------> math (ln -s ../math) 
        physics -------------> math (ln -s ../math) 
        gui 
        math 
    

는 대한 하나 버전을 선택합니다 각 종속성.

관련 문제