2016-06-01 5 views
1

JGitのクラスリポジトリを使用してJavaで自分のプログラムを作成しています。JGitでRepository :: resolve(String)を使用する方法

このクラスにはresolve(String revstr)メソッドがあります。

基本的に、このmethoadはgitリビジョン文字列を解析し、オブジェクトIDを返します。

HEAD、MERGE_HEAD、FETCH_HEAD
SHA-1:完全または簡略SHA-1
レフリー/ ...:完全な参照名
サポートされているこれらの演算子の特定の組み合わせがあります。 short-name:refs/heads、refs/tags、またはrefs/remotes名前空間の短い参照名
tag-NN-gABBREV:ABBREVを短縮SHA-1として処理することによって解析された、記述からの出力。
ID ^:IDを確保ある^ N
IDをコミット:n番目の親コミットID
ID〜N:IDをコミットの最初の親が、これは^ 1
ID^0 IDと同じであり、nは最初の親によって、idの歴史的な祖先です。 id〜3はid^1^1^1またはid ^^^と同じです。
ID:パス:IDがコミット
ID^{ツリー}であることを確認:ID
ID^{コミット}によって指定されたツリーの下引きパスIDがあることを確認:IDはツリー
ID^{タグ}であることを確認タグ
ID^{ブロブ} IDを確保するには、私はこの方法を使用するブロブ

ある

Repository repo; 
ObjectId commit = repo.resolve("cnfuwfxmiazsdixfnsdiufsdhfiusfhsfisfh^{tree}"); 
System.out.println(commit); 

期待出力リレー:

cnfuwfxmiazsdixfnsdiufsdhfiusfhsfisfh 

出力:

sjakfshdofcsmdfocsdfjdofdjgdhgfdgfhgf 
//Output is another commit in project. 

私が挿入したどのコミットしたいが、それは私が別のコミットを示しています。 私はコミットIDの最初の親だと思います。

私はメソッドresolve()に入れた同じコミットIDを取得する方法はありますか?

答えて

1

resolve()に渡す式は、tree idcnf...(BTW、Gitオブジェクトのidsは16進数のみで構成されています)と尋ねます。そして、これはあなたが得た可能性が最も高い、指定したコミットのツリーIDです。 JGitのObjectIdに文字列を変換するために

ObjectId objectId = ObjectId.fromString("..."); 

を使用するには、参照:How to obtain the RevCommit or ObjectId from a SHA1 ID string with JGit?

+0

はどうもありがとうございました。あなたのJGitの料理本を読んでいて、「2つのコミットの間のすべてのファイルに変更の差分を表示する」コマンドであなたのコードを理解したいと思います。次のステップは、Gitデータベースからデータを読み込む読者をインスタンス化し、コミットごとにツリーイテレータを作成することです。私はそれをテストしようとしましたが、動作しません。手伝ってくれませんか? – thuyanh

+0

私は_JGit cookbook_を書きませんでした。あなたが何を言っているのか分かりません。別の質問がある場合は、解決策が見つからない場合は徹底した調査を行い、新しいSO投稿を作成してください。 –

+0

ありがとうございます。私はあなたがJGitの料理本を書いたと思った。私は新しいSOのポストを書くつもりです。 – thuyanh

関連する問題