我可以使用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