1

libgit2sharpを使用していて、のようなCommitものを表すオブジェクトを取得したいと思いますHEAD~10。試しrepo.Lookup("HEAD~10")ましたが、うまくいきません。

LibGit2Sharp.LibGit2Exception:libgit2によってエラーが発生しました。クラス=GITERR_REFERENCE(-1)。
指定された参照名は   、LibGit2Sharp.Repository.Lookup(String shaOrReferenceName、GitObjectType type、LookUpOptions lookUpOptions )   のLibGit2Sharp.ReferenceCollection.Resolve [T](String name)の
  LibGit2Sharp.Core.Ensure.Success(Int32 result、Boolean allowPositiveResult)では無効です。 )   at LibGit2Sharp.Repository.Lookup(String shaOrReferenceName、GitObjectType type)   at libgit_tmp.Program.Main(String [] args)



次のコードのようなもので同じことができることに気づきましたが、この方法で参照を指定できれば、それでもそれを好みます。それを行う方法はありますか?そうでない場合、それはlibgit2sharpまたはlibgit2の制限ですか?

var commit = repo.Head.Tip;
for (int i = 0; i < 10; i++)
    commit = commit.Parents.First();
4

1 に答える 1

1

残念ながら、LibGit2Sharp は、rev-parse リビジョン仕様の構文に従うパラメーターを受け入れることができません。

提案された回避策は、現在考えられる最善の実装です。それは述べているドキュメンテーションに完全に準拠しています

リビジョン パラメータのサフィックス ~<n> は、最初の親のみに続く、名前付きコミット オブジェクトの <n> 世代目の先祖であるコミット オブジェクトを意味します。

ただし、最近libgit2 の開発ブランチにマージされた機能は、「親参照の取得」の必要性以上をカバーする可能性があります。

優れた API が利用可能になり、revparse テキスト仕様から具体的な git オブジェクトを取得できるようになりました。その使用法を簡単に確認するために、テストはこちらから入手できます。

この API をバインドして、LibGit2Sharp で広く利用できるようにすることはまだ行われていません。

于 2012-06-12T15:44:51.820 に答える