2012-10-26 5 views
0

원격 저장소를 복제하고 작업 디렉토리에 변경 사항을 적용하지 않고 여러 가지 분기가 상호 운용되도록 체크 아웃하려고합니다.JGit CheckoutCommand가 작동하지 않습니다.

CloneCommand clone = Git.cloneRepository(); 
clone.setURI(project.getUrl()); 
clone.setDirectory(new File(RepositoryHandlerHelper 
     .getFilePath(project))); 
clone.setCredentialsProvider(getCredentials()); 
clone.setCloneAllBranches(true); 

clone.call(); 

그리고 그 작동합니다

그래서 나는 저장소를 복제. 이제 로컬 하드 드라이브에 원격 브랜치를 만듭니다 (루프 안에서) :

git.branchCreate().setName(currentBranchToBuild) 
.setUpstreamMode(SetupUpstreamMode.TRACK) 
.call(); 

어느 것이 잘 작동하는지.

git.checkout().setName(currentBranchToBuild).call(); 

나는 확실히 우측 지점 이름 setName()에 제출 해요 : I는 각 분기를 체크 아웃하려고 그 후 나는 ..이 비록 필요가 확실하지 않다. 예외는 발생하지 않지만 명령은 작업 디렉토리에 영향을 미치지 않습니다.

여기에 뭔가가 있습니까?

+1

마지막 두 코드 블록은 정확히 동일한 코드를 가지고 있습니다. 후자는'git.checkout()'이어야합니다. – robinst

+0

불량. 내 텍스트를 업데이트 :) – dwalldorf

답변

1

setStartPoint("origin/branchtotrack")을 추가해야하며 my answer to a similar question을 추가해야합니다.

+0

나는이 시도 : 'git.checkout()를 setStartPoint ("원산지 /"+ currentBranchToBuild) .setName (currentBranchToBuild) .call(); ' 하지만 아무것도 변경하지 않았다.. 그게 당신이 의미 한 것입니까? – dwalldorf

0

해결책 찾기 : 각 분기의 로컬 복사본을 만들 필요가 없습니다. 방금 원격 지점에 대한 계산을 수행하면 작동합니다. 내 문제는 다른 것이었다. 각 지점의 JavaDoc을 생성합니다 (체크 아웃 한 다음 JavaDoc을 만듭니다). 그러나 결제가 즉시 효력을 발휘하지 않는 것 같습니다. git.checkout ...과 JavaDoc을 생성하기 위해 호출 한 사이에 Thread.sleep (1000)을 넣으면 정상적으로 작동합니다.

도움 주셔서 감사합니다.

관련 문제