1
所以這可能是由於我對引擎蓋下的git無知,但我試圖使用git2go克隆一個回購,就像在bash中運行git clone <repo url>
一樣。我可以克隆回購得到通常的.git /文件夾回購的內容。然後我試圖從那裏獲取實際的項目文件。爲此,我得到從克隆中返回的repo索引,然後編寫一個具有該索引的樹。然後我迷路了,但這是我目前正在做的:如何使用git2go/libgit2從blob獲取實際文件?
type Project struct {
conf config.Project
State string
ABSPath string
Services map[string]*Service
creds *credentials.RawCredentials
gitCreds *git.Cred
clonePath string
CloneOpts *git.CloneOptions
}
func (p *Project) Unpack(repo *git.Repository) error {
index, indexErr := repo.Index()
if indexErr != nil {
return indexErr
}
log.Println(*index)
oid, writeErr := index.WriteTree()
if writeErr != nil {
return writeErr
}
blob, blobErr := repo.LookupBlob(oid)
if blobErr != nil {
return blobErr
}
content := blob.Contents()
log.Println((string)(content))
return nil
}
目前,內容爲空。我的目標是解壓整個回購。我相信我需要穿過工作樹才能做到這一點。我是否朝着正確的方向前進?
你是說'git.Clone()'不是將文件寫入工作目錄嗎?部分克隆過程是初始結賬,如果沒有發生,那就是一個錯誤。 –
當你調用'git.Clone()'時,如果你沒有包含'&CloneOptions {Bare:true}',那麼你的工作目錄應該被填充。就像@Carlos,如果不是的話,那就是一個錯誤。 –
@ matt.s yup,你是對的,介意做出答案? –