Так что это может быть связано с моим незнанием того, что git делает под капотом, но я пытаюсь клонировать репо с помощью git2go, как если бы вы запускали git clone <repo url>
в bash. Я могу клонировать репо, чтобы получить содержимое обычных репозиториев .git/folder. Затем я пытаюсь получить оттуда фактические файлы проекта. Для этого я получаю индекс репо, возвращенный из клона, затем пишу дерево с этим индексом. Потом я теряюсь, но вот что я сейчас делаю:
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()
не записывает файлы в рабочий каталог? Частью процесса клонирования является начальная проверка, если этого не происходит, это ошибка. - person Carlos Martín Nieto   schedule 21.04.2016git.Clone()
, если вы не включили&CloneOptions{Bare:true}
, ваш рабочий каталог должен быть заполнен. Как @Carlos, если нет, то это ошибка. - person matt.s   schedule 21.04.2016