3

既存の git リポジトリを取得し、git-tf を使用して TFS プレビューにチェックインしようとしていますが、チェックインしようとするとエラーが発生します。これまでに行ったことは次のとおりです。

  1. git clone -b https://github.com/ .git を使用して、チェックインするブランチのクローンを作成します。master という名前ではないブランチを TFS にチェックインしたいと考えています。

  2. コードのローカル パスに cd します。

  3. git tf configure https://.tfspreview.com/DefaultCollection $/ 次に、TFS 接続を構成するように git tf を構成しました。

  4. git tf checkin その後、次のエラーが発生しました。

$/ にチェックイン中: 0% git-tf: HEAD ref なし

  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 行が何度も何度も続きます。

4

1 に答える 1

2

この問題の回避策について、 codeplex.comで回答を得ました。これが私が得た答えです:

こんにちは、

この問題が発生しているのは、おそらく2000〜3000を超える深さの巨大なコミットツリーをチェックインしようとしているためです。このコードには、チェックインするコミットを識別するための再帰ロジックがあります。このロジックは本質的に再帰的であるため、JVM呼び出しスタックサイズを1800マークより上に押し上げます。これは、JVMが動作するデフォルトの制限付近です。 JVMは、表示されているStackOverFlowExceptionをスローします。これはJVMの制限ですが、幸いなことに、このエラーを回避するためにパラメーターを使用してスタックサイズを拡張する回避策があります。

git-tfデプロイメントディレクトリのgit-tf.cmd(Windowsで実行されていない場合はgit-tf)を更新し、「java.exe」の呼び出しに–Xss3mを追加する必要があります。

このシナリオを将来的に改善するためのユーザーストーリーがあります。

ありがとう、Youhana

答えへのリンクは次のとおりです:http://gittf.codeplex.com/workitem/43

于 2012-10-26T21:47:30.227 に答える