2012-06-12 26 views
1

我使用的是libgit2sharp,我想獲得代表HEAD~10之類的Commit對象。我試過repo.Lookup("HEAD~10"),但那不起作用:使用父引用

LibGit2Sharp.LibGit2Exception:libgit2引發了一個錯誤。 Class = GITERR_REFERENCE(-1)。
給定的參考名稱無效
 在LibGit2Sharp.Core.Ensure.Success(的Int32結果,布爾allowPositiveResult)
 在LibGit2Sharp.ReferenceCollection.Resolve [T](字符串名稱)
 在LibGit2Sharp.Repository .Lookup(字符串shaOrReferenceName,GitObjectType類型,lookUpOptions lookUpOptions)
 在LibGit2Sharp.Repository.Lookup(字符串shaOrReferenceName,GitObjectType型)
 在libgit_tmp.Program.Main(字串[] args)

我意識到我可以通過類似下面的代碼來做同樣的事情,但如果我可以用這種方式指定引用,我仍然會更喜歡它。有沒有辦法做到這一點?如果沒有,是libgit2sharp還是libgit2的限制?

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

回答

1

不幸的是,LibGit2Sharp是不能接受繼rev-parse revision-specification syntax參數。

建議的解決方法目前是最好的實現。這是完全符合該條規定

後綴〜< N>的修改參數是指提交對象,它是在指定的< N>第四代祖先犯下的對象,只有第一個父母的文檔。

然而,功能已被最近merged在libgit2可以覆蓋「檢索父引用」需求和超越的開發分支。

一個不錯的API現在是available並使得從修訂文本規範中檢索具體的git對象成爲可能。爲了快速瀏覽其使用情況,測試可用here

綁定這個API並使其被LibGit2Sharp廣泛使用尚未完成。