aboutsummaryrefslogtreecommitdiffstats
path: root/repository.go
diff options
context:
space:
mode:
authorPaulo Gomes <pjbgf@linux.com>2023-05-23 09:23:27 +0100
committerGitHub <noreply@github.com>2023-05-23 09:23:27 +0100
commit1feac1b95958fbce7eabffa671f3fc6aab2a8258 (patch)
tree69cfb8382a3fac7053e396e151c27027f82600ec /repository.go
parent90bfbf2c5cb34da7cfa59e09275d34b159aa57f3 (diff)
parent1aa8e8940336aa80eccdd8dd9b46b0e6547e7127 (diff)
downloadgo-git-1feac1b95958fbce7eabffa671f3fc6aab2a8258.tar.gz
Merge pull request #764 from techknowlogick/init-options
git: Allow Initial Branch to be configurable
Diffstat (limited to 'repository.go')
-rw-r--r--repository.go18
1 files changed, 17 insertions, 1 deletions
diff --git a/repository.go b/repository.go
index 89c48db..f3540c6 100644
--- a/repository.go
+++ b/repository.go
@@ -71,14 +71,30 @@ type Repository struct {
wt billy.Filesystem
}
+type InitOptions struct {
+ // The default branch (e.g. "refs/heads/master")
+ DefaultBranch plumbing.ReferenceName
+}
+
// Init creates an empty git repository, based on the given Storer and worktree.
// The worktree Filesystem is optional, if nil a bare repository is created. If
// the given storer is not empty ErrRepositoryAlreadyExists is returned
func Init(s storage.Storer, worktree billy.Filesystem) (*Repository, error) {
+ options := InitOptions{
+ DefaultBranch: plumbing.Master,
+ }
+ return InitWithOptions(s, worktree, options)
+}
+
+func InitWithOptions(s storage.Storer, worktree billy.Filesystem, options InitOptions) (*Repository, error) {
if err := initStorer(s); err != nil {
return nil, err
}
+ if options.DefaultBranch == "" {
+ options.DefaultBranch = plumbing.Master
+ }
+
r := newRepository(s, worktree)
_, err := r.Reference(plumbing.HEAD, false)
switch err {
@@ -89,7 +105,7 @@ func Init(s storage.Storer, worktree billy.Filesystem) (*Repository, error) {
return nil, err
}
- h := plumbing.NewSymbolicReference(plumbing.HEAD, plumbing.Master)
+ h := plumbing.NewSymbolicReference(plumbing.HEAD, options.DefaultBranch)
if err := s.SetReference(h); err != nil {
return nil, err
}