2012-10-25 1 views
3

기존의 git 리포지토리를 가져 와서 git-tf를 사용하여 TFS 미리보기에 체크인하려고합니다. 시도 할 때 오류가 발생합니다. 체크인. 지금까지 내가 한 일이 여기있다. 내가 체크인 할 지점을 복제하는 https://github.com/ .git -bgit-tf checkin 스레드 "main"의 예외 java.lang.StackOverflowError

  1. 자식 클론. 나는 TFS에 마스터라는 이름되지 않은 지점에서 확인하시기 바랍니다.

  2. 코드를 로컬 경로로 입력하십시오.

  3. git tf configure https : //.tfspreview.com/DefaultCollection $/그런 다음 TFS 연결을 구성하도록 git tf를 구성했습니다.

  4. 자식 그런 TF의 체크인 , 나는 다음과 같은 오류 있어요 :

확인 $ /에에서 : 0 % 자식-TF : 그래서 HEAD 심판

  1. 을 나는 다음 git branch -b master

  2. 브랜치로 다시 전환 나는 체크 아웃했다. : git checkout.

  3. 다시 체크인 해보십시오. git tf checkin.

  4. 첫 번째 오류가 발생했습니다. 그러나, 나는 다음과 같은 오류가있어, 나는 이것에 대해 어떻게 해야할지 모르겠다.

git tf checkin을 실행하면 오류가 발생하는 방법에 대한 아이디어가 있습니까?

감사합니다.

Connecting to TFS... 
Checking in to $/Sandbox/HammerheadGitTest/sCRM: 
Exception in thread "main" java.lang.StackOverflowError 
    at java.io.RandomAccessFile.seek(Native Method) 
    at org.eclipse.jgit.storage.file.PackFile.read(PackFile.java:614) 
    at org.eclipse.jgit.storage.file.WindowCache.load(WindowCache.java:314) 
    at org.eclipse.jgit.storage.file.WindowCache.getOrLoad(WindowCache.java:393) 
    at org.eclipse.jgit.storage.file.WindowCache.get(WindowCache.java:204) 
    at org.eclipse.jgit.storage.file.WindowCursor.pin(WindowCursor.java:334) 
    at org.eclipse.jgit.storage.file.WindowCursor.copy(WindowCursor.java:203) 
    at org.eclipse.jgit.storage.file.PackFile.readFully(PackFile.java:526) 
    at org.eclipse.jgit.storage.file.PackFile.load(PackFile.java:684) 
    at org.eclipse.jgit.storage.file.PackFile.get(PackFile.java:227) 
    at org.eclipse.jgit.storage.file.ObjectDirectory.openObject1(ObjectDirectory.java:439) 
    at org.eclipse.jgit.storage.file.FileObjectDatabase.openObjectImpl1(FileObjectDatabase.java:172) 
    at org.eclipse.jgit.storage.file.FileObjectDatabase.openObject(FileObjectDatabase.java:157) 
    at org.eclipse.jgit.storage.file.WindowCursor.open(WindowCursor.java:122) 
    at org.eclipse.jgit.revwalk.RevWalk.getCachedBytes(RevWalk.java:856) 
    at org.eclipse.jgit.revwalk.RevCommit.parseHeaders(RevCommit.java:136) 
    at org.eclipse.jgit.revwalk.RevWalk.parseHeaders(RevWalk.java:965) 
    at org.eclipse.jgit.revwalk.RevWalk.parseAny(RevWalk.java:814) 
    at org.eclipse.jgit.revwalk.RevWalk.parseCommit(RevWalk.java:725) 
    at com.microsoft.gittf.core.util.CommitWalker.detectAutoSquashedPath(CommitWalker.java:260) 
    at com.microsoft.gittf.core.util.CommitWalker.detectAutoSquashedPath(CommitWalker.java:286) 
    at com.microsoft.gittf.core.util.CommitWalker.detectAutoSquashedPath(CommitWalker.java:286) 
    at com.microsoft.gittf.core.util.CommitWalker.detectAutoSquashedPath(CommitWalker.java:286) 
    at com.microsoft.gittf.core.util.CommitWalker.detectAutoSquashedPath(CommitWalker.java:286) 
    at com.microsoft.gittf.core.util.CommitWalker.detectAutoSquashedPath(CommitWalker.java:286) 
    at com.microsoft.gittf.core.util.CommitWalker.detectAutoSquashedPath(CommitWalker.java:286) 
    at com.microsoft.gittf.core.util.CommitWalker.detectAutoSquashedPath(CommitWalker.java:286) 
    at com.microsoft.gittf.core.util.CommitWalker.detectAutoSquashedPath(CommitWalker.java:286) 
    at com.microsoft.gittf.core.util.CommitWalker.detectAutoSquashedPath(CommitWalker.java:286) 
    at com.microsoft.gittf.core.util.CommitWalker.detectAutoSquashedPath(CommitWalker.java:286) 

마지막 두 줄은 오랫동안 계속 반복됩니다.

답변

2

이 문제의 해결 방법은 codeplex.com입니다. 3000 깊은 커밋 - 당신이 거대한 커밋 트리에서 확인하려고 때문에이 문제를보고있다

안녕하세요,

아마 2000 개 이상의이 : 여기에 내가 가진 대답이다. 우리 코드에는 체크인 할 커밋을 식별하는 재귀 논리가 있습니다.이 논리는 재귀이기 때문에 JVM 호출 스택 크기를 JVM이 작동하는 기본 한계 인 1800 자 이상으로 밀어냅니다. JVM은 당신이보고있는 StackOverFlowException을 던집니다. 이것은 JVM의 제한 사항입니다. 다행스럽게도이 오류를 극복하기 위해 매개 변수를 사용하여 스택 크기를 확장하는 해결 방법이 있습니다.

git-tf.cmd (창에서 실행되지 않는 경우 git-tf)를 git-tf 배포 디렉토리에서 업데이트하고 -Xss3m을 "java.exe"호출에 추가해야합니다.

앞으로이 시나리오를 개선하기위한 사용자 경험이 있습니다.

감사합니다, Youhana 여기

대답에 대한 링크입니다 :이 문제는 여전히 사년 후에 발생

+1

http://gittf.codeplex.com/workitem/43, 적절한 수정이 아직은? – Merijn

+0

나를 위해, 곧바로 이것을 해결 한 후에 'java.lang.OutOfMemoryError : Java 힙 공간'을 얻었습니다 - '-Xmx2048m'으로 빠르게 해결되었습니다 :) –