2012-05-28 4 views
43

나는 Git에 대규모 저장소가있다. Jenkins에서 프로젝트의 하위 폴더 하나만 체크 아웃하는 작업을 어떻게 만듭니 까?Jenkins와 Git 희박 체크 아웃

+2

는 그 복잡성을 추가하는 정말 필요합니까? 처음 저장소가 복제되면 git은 새로운 객체를 가져옵니다. 젠킨스 서버에 충분한 스토리지가 부족한 경우가 아니라면 모든 것을 복제하고 복잡성을 피할 수 있습니다. – wadesworld

답변

42

Jenkins Git Plugin 지원 희귀 체크 아웃 git-plugin 2.1.0 (2014 년 4 월) 이후 이 기능을 사용하려면 git> = 1.7.0이 필요합니다. '추가 동작'-> '스파 스 체크 아웃 경로'에 있습니다.

screenshot

참조 : 락스 문제 JENKINS-21809

+0

불행히도 Git은 전체 저장소를 로컬로 복사해야합니다. Git이 서버에서 파일을 가져 오는 속도가 향상되지 않을 수도 있습니다. – luka5z

+5

불행히도 원래의 "경로 구조"를 그대로 유지하면서 실제로 "하나의 디렉토리"를 체크 아웃하는 것 같지는 않습니다. FWIW – rogerdpack

+1

꽤나 오래되었지만 어떻게 정의 할 것인가? 공간이있는 서브 디렉토리 이름. 체크 아웃 "폴더/to/include/directory withSpace"로 지정하고 싶습니다. – OK999

20

자식의 sparse checkout 기능을 사용할 수 있습니다. Git은 여전히 ​​전체 저장소를 로컬 디스크에 복제합니다. 그러나 압축되어 있기 때문에 그리 나쁘지 않습니다.

  1. 젠킨스에서 새 작업을 생성하려면 소스 코드 관리 섹션에서 Git 저장소를 설정하십시오.
  2. 프로젝트를 빌드하십시오. 이렇게하면 전체 저장소가 로컬 디스크에 복제됩니다.
  3. 프로젝트의 작업 영역 폴더를 열고 .git 폴더를 제외한 모든 파일을 삭제하십시오.
  4. 프로젝트의 작업 영역 폴더 용 Git 셸을 엽니 다. 스파 스 체크 아웃을 사용 :

    git config core.sparsecheckout true 
    
  5. 업데이트 작업 트리 :

    git read-tree -mu HEAD 
    
  6. 는 .git/정보 폴더에 sparse-checkout 파일을 만듭니다. 당신과 같이 해당 파일을 체크 아웃 할 하위 폴더 (주 후행 슬래시)에 경로를 추가 :

    folder/to/include/ 
    
  7. 프로젝트를 다시 빌드합니다. 이번에는 하나의 하위 폴더 만 작업 영역 폴더에 나타납니다.

+0

모든 작업에 대해 이러한 명령을 실행해야합니까? –

+1

@RuudLenders 예, 하나의 하위 폴더 만 체크 아웃하려는 모든 작업에 대해이 작업을 수행해야합니다. –

+0

5 단계 'git read-tree -mu HEAD'는 6 단계를 수행해야합니까? 내가 할 수있는 한, 먼저 Git에게 어떤 파일을보아야하는지 (단계 6), 트리 정보를 색인으로 읽어 들여야한다. – borisdiakur

1

당신은

git checkout your-branch -- the/desired/path anthother/desired/path 

당신이 할 수 단지 rm -rf 작업 폴더를 삭제하려면 사용 mkdir workingdir으로 다시 것입니다 사용자 정의 단계를 가질 수있다. 이것은 위의 명령의 자식 수준에서이 옵션을 지정할 필요 :

git --working-dir="/path/to/workingdir" checkout your-branch -- the/desired/path anthother/desired/path 

이 모든

는 젠킨스을 알고 얼마나 잘에 따라 달라집니다.

+0

문제는 Jenkins가 일반적으로 플러그인을 사용하여 소스 코드를 가져오고 Git 플러그인을 사용하여 체크 아웃 명령을 변경할 수 없다는 것입니다. –

+0

필자는 기존 플러그인을 작성하거나 수정하는 것이 너무 많은 문제가 될 것이라고 생각합니다. –