2010-05-17 3 views
7

몇 가지 다른 고객을 위해 몇 가지 ANT 프로젝트가 있습니다. 내 프로젝트에 내가 가지고있는 디렉토리 구조는 다음과 같습니다 : 작업 내에서Mercurial 및 Eclipse의 프로젝트 기능 하위 모듈에 대한 모범 사례?

L___standard_workspace 
    L___.hg 
    L___validation_commons-sub-proj <- JS Library/Module 
    | L___java 
    | | L___jar 
    | L___old_stuff 
    | L___src 
    | | L___css 
    | | L___js 
    | |  L___validation_commons 
    | L___src-test 
    |  L___js 
    L___v_file_attachment-sub-proj <- JS Library/Module 
    | L___java 
    | | L___jar 
    | L___src 
    | | L___css 
    | | L___js 
    | L___src-test 
    |  L___js 
    L___z_business_logic-sub-proj <- JS Library/Module 
    | L___java 
    | | L___jar 
    | L___src 
    |  L___css 
    |  L___js 
    L____master-proj    <- Master web-deployment module where js libraries are compiled to. 
     L___docs 
     L___java 
     | L___jar 
     | L___src 
     |  L___AntTasks 
     |   L___build 
     |   | L___classes 
     |   |  L___com 
     |   |   L___company 
     |   L___dist 
     |   L___nbproject 
     |   | L___private 
     |   L___src 
     |    L___com 
     |     L___company 
     L___remoteConfig 
     L___src 
     | L___css 
     | | L___blueprint 
     | | | L___plugins 
     | | | | L___buttons 
     | | | | | L___icons 
     | | | | L___fancy-type 
     | | | | L___link-icons 
     | | | | | L___icons 
     | | | | L___rtl 
     | | | L___src 
     | | L___jsmvc 
     | L___img 
     | | L___background-shadows 
     | | L___banners 
     | | L___menu 
     | L___js 
     | | L___approve 
     | | L___cart 
     | | L___confirm 
     | | L___history 
     | | L___jsmvc 
     | | L___mixed 
     | | L___office 
     | L___stylesheets 
     | L___swf 
     L___src-standard 

이 모듈은 마스터 프로젝트의 자바 스크립트 디렉토리에 위치 하나의 자바 스크립트 파일에 하위 프로젝트를 컴파일 복사합니다.

예를를 들어

, 디렉토리 :

  • validation_commons-sub-proj
  • v_file_attachment-sub-proj
  • z_business_logic-sub-proj ... 모든 결합 축소 된 있습니다 (같은 컴파일의 종류) 다른에 _master-proj/js 디렉토리의 Javascript 파일 이름. 마지막 단계에서 _master-proj이 컴파일되어 서버에 배포됩니다.

    이제 hg로 설정하는 방법에 관해서는 마스터 프로젝트와 하위 프로젝트를 자체 기본 저장소에서 복제본으로 복제하는 것이 좋습니다. 클라이언트의 작업 복사본을 사용하여 모듈을 특정 고객의 작업 복사본에 추가 할 수 있습니다.

    그러나 한 고객의 작업 복사본에서 버그를 수정/수정하는 경우 마스터 프로젝트/하위 프로젝트의 기본 저장소로 선택적으로 변경 사항/버그 수정을 푸시 할 수 있기를 바랍니다. 결국 변경/수정 사항을 수정해야하는 동일한 버그가 포함되어있을 수있는 다른 고객의 작업 복사본으로 가져 오기위한 것입니다.

    이렇게하면 다른 클라이언트간에 동일한 버그 수정을 활용할 수 있습니다.

    그러나 ... 나는 hg와 Eclipse를 사용하여이 작업을 수행하는 가장 좋은 방법이 확실치 않습니다.

    I --filemap 옵션을 사용하여 hg의 Convert Extension을 사용하여 하위 디렉토리를 별도의 프로젝트로 분할 할 수 있습니다.

    그러나 나는 여전히 Convert Extension을 사용하는 것이 더 좋을지 또는 각 모듈을 자체 저장소에 저장하고 단일 작업 공간으로 체크하는 것이 더 좋을지 혼란 스럽다. 각 클라이언트에 대해

+0

여기서 설명/수행하려고하는 동사의 간결한 이름이 있습니까? – leeand00

+0

내가 혼란스럽게 생각하는 또 다른 장소는 내가 어떻게 하나의 큰 저장소에 모든 것을 포함하지 않고도 자신의 개별 저장소에서 필요한 올바른 특정 모듈을 체크 아웃 할 수 있어야 할 것이라고 생각 하는가? – leeand00

+1

대답은 여기에 있습니다. http://mercurial.selenic.com/wiki/subrepos – leeand00

답변

3

그래, 그것은 subrepos처럼 보이는 당신이 찾고있는,하지만 난 어쩌면 잘못된 질문에 대한 정답이라고 생각하고 난 강력하게 당신이 대신 내가 추천 유사한 issues that occur when using svn:externals

으로 실행하겠습니다 의심 결합 및 축소 된 JS 파일을 artefact repository에 "게시"하고 Ivy과 같은 종속성 관리자를 사용하여 특정 버전의 제작물을 마스터 프로젝트로 가져와야합니다. 이 방법을 사용하면 마스터 프로젝트에서 사용하는 하위 프로젝트 버전을 훨씬 효과적으로 제어 할 수 있습니다.

특정 클라이언트의 하위 프로젝트에 버그를 수정해야하는 경우 해당 하위 프로젝트의 메인 라인에서 수정 프로그램을 만들고 새 버전을 게시하고 (이상적으로 automated build pipeline 통해) 마스터를 업데이트 할 수 있습니다 새 버전을 사용하는 프로젝트. 게시하기 전에 마스터 프로젝트로 새 버전을 테스트하고 싶습니까?이 경우 수정하기 전에 하위 프로젝트를 로컬로 결합 및 축소 한 다음 local repository에 게시하고 클라이언트의 마스터 프로젝트에서 테스트를 위해 해당 버전을 선택하게하십시오.

관련 문제