Как имитировать `go-git` `PlainInit()`с помощью Init()`?
Я могу использовать src-d/go-git
PlainInit()
имитировать команду CLI $ git init <new_repo>
, но как получить тот же результат с Init()
?
Это то, что я придумал до сих пор, но это не дает таких же результатов. Результаты выглядят одинаково, но файлы / каталоги не вложены в <new_repo>/.git
каталог, как показано ниже.
package main
import (
"fmt"
"log"
"gopkg.in/src-d/go-billy.v4/osfs"
"gopkg.in/src-d/go-git.v4"
"gopkg.in/src-d/go-git.v4/storage/filesystem"
)
func main() {
directory := "new-repo-go-git"
fs := osfs.New(directory)
sto, err := filesystem.NewStorage(fs)
if err != nil {
log.Fatal(err)
}
_, err = git.Init(sto, fs)
if err != nil {
log.Fatal(err)
}
fmt.Println("DONE")
}
Результаты не то, что я ожидаю, потому что $ git init new-repo-go-git
приведет к каталогам и файлам в new-repo-go-get/.git
каталог.
Фактические результаты с использованием go-git
с файлами / каталогами за пределами .git
,
$ tree -a new-repo-go-git/
new-repo-go-git/
├── .git
├── HEAD
├── config
├── objects
│ ├── info
│ └── pack
└── refs
├── heads
└── tags
PlainInit()
возвращает следующее с git.PlainInit("new-repo-go-git-plain-init", false)
$ tree -a new-repo-go-git-plain-init
new-repo-go-git-plain-init
└── .git
├── HEAD
├── objects
│ ├── info
│ └── pack
└── refs
├── heads
└── tags
PlainInit()
похоже на то, что $ git init <new_repo>
возвращает:
$ git init new-repo-cli
Initialized empty Git repository in /path/to/new-repo-cli/.git
$ tree -a new-repo-cli
new-repo-cli
└── .git
├── HEAD
├── config
├── description
├── hooks
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ ├── pre-receive.sample
│ ├── prepare-commit-msg.sample
│ └── update.sample
├── info
│ └── exclude
├── objects
│ ├── info
│ └── pack
└── refs
├── heads
└── tags