2013-11-21 70 views
0

我正在嘗試使用objective-git創建一個Git存儲庫。有關GT類如何共同創建存儲庫的文檔有點缺乏,所以我很困難。使用Objective-Git創建存儲庫

這是我迄今爲止的工作:

GTRepository *newRepo = [GTRepository initializeEmptyRepositoryAtFileURL:repoURL error:&error] 

我那麼一堆文件複製到該目錄。我可以在Git客戶端打開回購,並在工作目錄中查看這些文件。目前爲止,一切都很好。但是,這是我卡住的地方,我的下一步行動是實際創建分支並提交這些文件?編輯:我現在已經從我的GTRepository獲得了GTIndex(儘管index的fileURL屬性仍然是零,所以我不知道如何生成該文件)。我遍歷我的文件,調用addFile:error:,它在我的索引中創建GTIndexEntries。然後我打電話給writeTree:並找回一個我通過[repository createCommitWithTree:newTree message:@"Initial Commit" parents:nil updatingReferenceNamed:nil error:&error];的GTTree。這將返回一個有效的GTCommit對象並且沒有NSError,但是我期望[repository headReferenceWithError:& error];現在會返回對新創建的提交的引用,但它仍然返回nil。是否有一個步驟我失蹤來完成這個提交?

+1

你真的想創建一個索引,或者像'[repository indexWithError:NULL]'一樣加載版本庫的現有索引嗎? –

+0

我沒有看到索引文件,所以我想我必須創建自己的,但我看到indexWithError確實會返回一個有效的GTIndex。現在我將嘗試使用addFile:和writeTree:使用索引,而不是使用GTTreeBuilder –

回答

3

看起來像有一個[GTReference referenceByCreatingReferenceNamed:name]靜態方法。 Here's an example你如何使用它。

+0

這兩個方法最終會調用函數git_reference_lookup()來搜索具有該名稱的現有引用。我沒有現有的參考文獻 –

+0

大鼠。那麼,我想你總是可以調用'git_reference_create':http://libgit2.github.com/libgit2/#HEAD/group/reference/git_reference_create –

+0

這是真的,如果可能的話我只想堅持Objective-Git –