2013-07-09 2 views
0

내 게임과 게임 편집기간에 내 모델을 공유하고 싶습니다. 게임은 cocos2d 프레임 워크에서 개발되었으며 C++ 및 Objective-C 코드를 포함합니다. 편집자는 Qt (Windows 7 atm에서 개발 중)에서 수행됩니다. 이 모델은 순수한 C++ (플랫폼에 특정한 사항이 없음)입니다.응용 프로그램 간 공유 코드

나는 직장에서 비슷한 문제를 겪었고 프로젝트로 공유 코드를 내보내고 저장소를 만들어 문제를 해결했습니다. Qt에 하위 프로젝트를 추가 할 수 있는지 확실하지 않지만 하위 프로젝트로 추가하고 필요에 따라 업데이트합니다. 실제로 편집기 라이브러리와 게임 리포지토리의 하위 저장소 인 정적 라이브러리 리포지토리와 비슷하지만 어떻게해야할지 모르겠습니다.

+1

자체 repo에있는 별도의 C++ 정적 라이브러리가 답입니다. 이 작업은 복잡하지 않아야합니다 (Xcode로 컴파일하여'/ usr/local' 또는 다른 것으로 설치하고 타사 라이브러리처럼 취급 할 수도 있습니다). – trojanfoe

+0

@trojanfore - 두 프로젝트의 서브 저장소로 추가하십시오. – Mercurial

+0

sub-repos (결코 사용하지 않음)에 대해 확실하지 않습니다. 나는 항상 파일 시스템에 형제로 배열 된 별도의 repos를 가지고 있고 .. ../ otherproject/..를 사용하여 그들을 참조한다. – trojanfoe

답변

2

Git submodules (강조 광산)이 무엇인지 당신이 찾고있는 것 같은데 :

종종 하나 개의 프로젝트에서 작업하는 동안, 당신이 그것을 내에서 다른 프로젝트를 사용할 필요가 발생합니다. 아마도 제 3자가 개발했거나 별도로 개발하고 여러 개의 상위 프로젝트에서 사용하고있는 라이브러리 일 것입니다. 이 시나리오에서 공통적 인 문제가 발생합니다. 두 프로젝트를 별도로 처리 할 수 ​​있기를 원하지만 여전히 다른 프로젝트를 사용할 수 있기를 원합니다 ...

힘내 기는이 문제를 서브 모듈을 사용하여 해결합니다. 서브 모듈을 사용하면 Git 저장소를 다른 Git 저장소의 하위 디렉토리로 유지할 수 있습니다. 이를 통해 다른 저장소를 프로젝트에 복제하고 커밋을 별도로 유지할 수 있습니다..

submodules on the Git docs에 대한 자세한 내용을 볼 수도 있습니다.

+0

하지만, 저의 겸손한 의견으로는 서브 모듈 워크 플로우가 자주 변경/업데이트 될 필요가 있다면 서브 모듈 워크 플로우가 엉망입니다. – mnagel

+0

그것은 나를 위해 잘 작동했습니다. 고맙습니다. – Mercurial

1

Subtree merging이 또 다른 대안입니다.

git-subtree 스크립트의 자세한 내용은 thisthis (하드 코어가 증가하는 순서)을 참조하십시오.

는 후자의 사용 설명서를 인용하려면 :

당신이 독립적으로 개발 프로젝트에서 프로젝트의 내용을 포함 할 경우가 있습니다

. 충돌하는 경로가없는 한 다른 프로젝트에서 끌어 올 수 있습니다.

문제가있는 경우는 충돌하는 파일이있는 경우입니다. 잠재적 인 후보자는 Makefile 및 다른 표준 파일 이름입니다. 이 파일을 병합 할 수는 있지만 원하지 않을 수도 있습니다. 이 문제에 대한 더 나은 해결책은 프로젝트를 자체 서브 디렉토리로 병합하는 것입니다. 이것은 재귀 병합 전략에서 지원되지 않으므로 당기기 만 작동하지 않습니다.

원하는 것은 이러한 상황에서 도움이되는 하위 트리 병합 전략입니다.

(상대적으로 현대적인 버전의 contrib 섹션에 힘내에 포함)를 git-subtree 스크립트는 하위 트리가 병합 용이하게합니다.