2011-03-28 5 views
7

하위 모듈과 함께 git을 사용하기 때문에 파일을 구성하는 방법을 파악하기가 어렵습니다. PHP로 개발하고 단위 테스트를 사용합니다. 그래서 지금, 나는 각 모듈이 조직을 사용git과 submodule을 사용하면 어떤 폴더 구조가 좋은가요?

  • SRC/
  • 테스트/기발한 생각처럼 보이지만, 문제는

그 나는 "자식 서브 모듈을 수행 할 때 프로젝트에 "추가"를하려면 다음 경로를 사용하십시오. 프로젝트/모듈/뉴스/src/index.php

src/폴더는 실제로 문제가됩니다.

모듈 루트에 모든 파일을 저장하고 테스트/폴더를 소스에 포함시켜야합니까? 나에게 나쁜 소리. 뭐하고 있니?

편집 : src/Folder는 자동로드로 인해 문제가 있습니다. 나는 내 모든 클래스 이름에 "src"를 넣지 않아도된다.

+0

편집에 대한 질문 : 문제는 폴더 구조와 일치하는 클래스 이름을 원한다는 것입니다. 또한 각 모듈은 자체 테스트가 있어야하며 이는 하위 모듈에 BarModule/src => module/Bar와 같이 포함 할 수 없기 때문에 문제가됩니다. (그냥 당신의 요구 사항 권리를 얻을 수 있는지 확인) – edorian

답변

4

오토로더가 어떻게 든 파일을 찾을 수있는 한 폴더 레이아웃은 대부분 관련이 없습니다. PEAR 규약을 사용하여 클래스 이름을 소스 파일에 매핑하는 경우 src 디렉토리를 포함 경로에 추가하거나 두 번째 자동 공급기를 스택 할 수 있습니다. 그런 다음 클래스 이름에 src를 추가하지 않아도됩니다.

PEAR 규칙의 대안은 파일과 클래스 간의 정적 매핑을 사용하는 것입니다. a tool that can automatically generate such an autoloader for you at GitHub이 있습니다.

고정 자동 로더 방식은 PHP Project Wizard에서도 사용됩니다. 이 도구는 your phpunit configbuild file to connect your project with Jenkins CI을 포함하여 src 및 테스트 폴더를 만듭니다. 편리한 패키지입니다.

하위 모듈을 포함하는 경우 lib 또는 ext 폴더에 넣는 것을 고려하십시오. 외모가 어떻게 보이는지에 대한 예는 phpdox project at GitHub에서 확인할 수 있습니다. main bootstrap file을보고 다양한 오토로더를 포함하는 방법을 확인하십시오.

+0

프로젝트에 30 개 이상의 모듈이있을 수 있다는 것 외에는 맞습니다. 그래서 30 개 이상의 오토로더를 쌓아 두겠다. 나는 이미 phpdox 프로젝트를 알고있다 (그리고 공동 작업을하고있다.)하지만 그것은 같은 종류의 서브 모듈이 아니다. 내 경우에 submodule 더 wordpress 플러그인처럼 될 것입니다. 또한이 프로젝트는 PHP 5.2 :( – FMaz008

+0

@ FMaz008이어야합니다. 왜 TheSeer의 PHPAB를 사용하고 30 개의 하위 모듈을 포함하여 전체 프로젝트를 반복하고 그 단일 오토로더를 사용하지 않으시겠습니까? IIRC PHPAB에는 5.2 용 템플릿도 있습니다. 버전은 문제가되어서는 안됩니다. – Gordon

3

내가이 문제에 직면했을 때 vendors라는 폴더를 만들고 그 안에 모든 하위 모듈을 배치했다. 그런 다음 상대 경로를 사용하여 심볼을 원하는 위치에 심볼릭 링크했다. 심트 링크를 git에 위탁 할 수 있으며 다른 사람들이 리포지토리를 당길 때 여전히 작동합니다. 물론 이것은 * nix 기반 OS를 사용하는 경우에만 작동합니다. 예를 들어

:

modules/ 
vendor/module1/src/ 

은 그래서 (모듈 디렉토리에서)처럼 심볼릭 링크 될 수 있습니다 :

ln -s ../vendor/module1/src module1 

이 방법으로 문제가 해결 아닌지 확실하지.

+0

하지만 일부 개발자가 Windows를 사용한다면 어떨까요? Symlink를 사용할 수 없습니다 ... – FMaz008

+0

일부 Windows 버전에는 심볼릭 링크가 있습니다. 시도해 볼 수 있습니다. Windows에서 개발하지 않았으므로 결코 시도하지 않았습니다. – MitMaro

0

별도의 모듈에서 테스트하지 않겠습니다. 동일한 저장소에 보관하십시오.

+1

필자는 테스트를 다른 저장소에 넣을 계획이 없었습니다. 모든 모듈은 자체 테스트와 번들로 제공됩니다. – FMaz008

관련 문제