2017-01-16 41 views
0

私はこの問題を数日間運のない状態で研究しています。私は同様の問題を報告している多くの投稿を見つけましたが、Gerritのコードレビューでは見つかりませんでした。GerritコードレビューエラーMissingObjectExceptionオン送信変更

私たちは多くの枝を含むレポを持っている場合があります。 1つのブランチ(dev)のみがこの問題を示します。

org.eclipse.jgit.errors.MissingObjectException: Missing unknown 5f3190e131541cec4ef7176262eaf4a03c4a4e6c 
     at com.google.gerrit.server.git.MergeOp.integrateIntoHistory(MergeOp.java:497) 
     at com.google.gerrit.server.git.MergeOp.merge(MergeOp.java:433) 
     at com.google.gerrit.server.change.Submit.apply(Submit.java:225) 
     at com.google.gerrit.server.change.Submit.apply(Submit.java:83) 
     at com.google.gerrit.httpd.restapi.RestApiServlet.service(RestApiServlet.java:341) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
     at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:286) 
     at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:276) 
     at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:181) 
     at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) 

エラーを再現するには、変更してください。コミットして、ゲリットにプッシュrefs/for/dev。 GerritでSubmitをクリックすると上記のエラーが表示されます。次のようにサーバー上の

リビジョンは以下のとおりです。

  • ヘリット・コードレビュー(2.13.1)git fsckを実行
  • のGit-2.1.0
  • のJava 1.7.0_71

サーバー側でOKを返します。 Merge if necessaryからRebase if necessaryにヘリットでのプロジェクト設定を変更するgit show 5f3190e131541cec4ef7176262eaf4a03c4a4e6c戻り

fatal: bad object 5f3190e131541cec4ef7176262eaf4a03c4a4e6c 

を実行

は、この例外が発生しました。

Caused by: com.google.gerrit.server.git.UpdateException: org.eclipse.jgit.errors.MissingObjectException: Missing unknown 5f3190e131541cec4ef7176262eaf4a03c4a4e6c 
     at com.google.gerrit.server.git.BatchUpdate.executeUpdateRepo(BatchUpdate.java:673) 
     at com.google.gerrit.server.git.BatchUpdate.execute(BatchUpdate.java:400) 
     at com.google.gerrit.server.git.MergeOp.integrateIntoHistory(MergeOp.java:478) 
     ... 43 more 
Caused by: org.eclipse.jgit.errors.MissingObjectException: Missing unknown 5f3190e131541cec4ef7176262eaf4a03c4a4e6c 
     at org.eclipse.jgit.internal.storage.file.WindowCursor.open(WindowCursor.java:158) 
     at org.eclipse.jgit.lib.ObjectReader.open(ObjectReader.java:227) 
     at org.eclipse.jgit.revwalk.RevWalk.parseAny(RevWalk.java:859) 
     at org.eclipse.jgit.revwalk.RevWalk.parseCommit(RevWalk.java:772) 
     at com.google.gerrit.server.git.CodeReviewCommit$CodeReviewRevWalk.parseCommit(CodeReviewCommit.java:110) 
     at com.google.gerrit.server.git.SubmoduleOp.updateSubmodule(SubmoduleOp.java:461) 
     at com.google.gerrit.server.git.SubmoduleOp.composeGitlinksCommit(SubmoduleOp.java:369) 
     at com.google.gerrit.server.git.SubmoduleOp$GitlinkOp.updateRepo(SubmoduleOp.java:85) 
     at com.google.gerrit.server.git.BatchUpdate.executeUpdateRepo(BatchUpdate.java:661) 
     ... 45 more 

ハッシュ5f3190e131541cec4ef7176262eaf4a03c4a4e6cは(唯一のエラーメッセージ内)ヘリットコードレビューページ上の任意の場所に表示されていないことを言及する価値があります。新しいコミットによってこのエラーが発生します。 Gerrit Bug Trackerで探し

+0

5f3190e131541cec4ef7176262eaf4a03c4a4e6cは、変更画面でSHAが "Commit"フィールド( "Commiter"フィールドと "Parent"フィールドの間)に表示されていますか?または、そこに別のSHAはありますか? –

+0

いいえ、それはgerritページのどこにも表示されません。エラーメッセージでのみ。私はこのコメントで投稿を更新しました。 – Ayakout

答えて

0

はプッシュがその枝の1つの開発者に対しにより力となってきたしましたか?あなたのthis issue

を表示しますか

gerritフォルダのインストールを確認してから、プロジェクトのgitフォルダを確認して履歴を探してください。私は一人の開発者がプッシュを強制すると思われます5f3190e131541cec4ef7176262eaf4a03c4a4e6c

+0

私は新しいGerritプロジェクト 'project-1'を作成し、問題のある' project.git'の内容を 'project-1.git'にコピーしました。その後、私は 'dev'ブランチをチェックアウトし、変更を加えて問題なくマージすることができました。 [問題](https://bugs.chromium.org/p/gerrit/issues/detail?id=5194&can=1&q=org.eclipse.jgit.errors.MissingObjectException%3A&colspec=ID%20Type%20Stars%20Milestone%20Status %20Priority%20Owner%20Summary)あなたは非常に似た問題を報告するようだが、違いは私のプロジェクトではサブモジュールがないということです。 – Ayakout

0

ジェリーインデックスがこのエラーの原因であるようです。インデックスが存在しないオブジェクトを指していても、rebuilding the indexはこの問題を解決しませんでした。

すべてのgitオブジェクトを検索しても一致するものは見つかりませんでした。私はhereと記載された方法を使用しました。

私はこの問題は、特定のブランチ上で見られたので、私の問題は、新しいブランチを作成するには、このバグレポートに考慮すべきhere

可能な解決策をされて接続されていると思います。また、問題のあるブランチにはもはや使用できないので、タグ付けして削除します。

Gerritでプロジェクトを削除して再作成するのは簡単ですが、delete-projectプラグインではサブモジュールのサブスクリプションに関していくつかの制限があります。

Gerritキャッシュをフラッシュしてディスク上のrepo.gitを手動で削除すると、実際にはプロジェクトが削除されますが、Gerritは同じ名前の別のプロジェクトの作成を許可しません。

関連する問題