我正在尝试使用现有的git存储库并使用git-tf将其签入到TFS预览视图中,并且当我尝试进行签入时会收到一个错误。以下是我迄今所做的工作。
签入$/: 0% git-tf:没有头参
有人知道如何通过运行git tf签入来克服下面的错误吗?
谢谢!
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)最后两行一遍又一遍地重复了很长时间。
发布于 2012-10-26 21:47:30
我在codeplex.com上得到了一个关于这个问题的回应。我得到的答案是:
你好,
您之所以看到这个问题,是因为您试图签入一个很大的提交树,它可能超过2000-3000提交的深度。我们的代码有一些递归逻辑来标识要签入的提交。这个逻辑,因为它本质上是递归的,将JVM调用堆栈的大小推到1800以上,这是JVM使用的默认限制,在此之上,JVM将抛出您正在看到的StackOverFlowException。这是JVM的一个限制,幸运的是,有一个方法可以使用一个参数来扩展堆栈大小,以克服这个错误。
您需要在git-tf部署目录中更新git-tf.cmd (git-tf,如果不是在windows中运行),并将-Xss3m追加到对“java.exe”的调用中。
我们有一个用户故事来使这个场景在将来变得更好。
谢谢你,尤哈纳
https://stackoverflow.com/questions/13075221
复制相似问题